# Epic 4: Case Timeline System ## Epic Goal Implement a case tracking system where admin can create and update timelines for each client's legal matters, providing clients with read-only visibility into their case progress. ## Epic Description ### Business Context Each client can have multiple legal cases/matters tracked through separate timelines. The admin adds text-based updates to keep clients informed of progress. This is strictly one-way communication - clients can view but cannot interact or respond. ### Technical Context - **Timelines:** Multiple per client allowed - **Updates:** Text-only (no document attachments) - **Communication:** One-way (admin to client) - **Status:** Active or Archived - **Notifications:** Email on each update ### Success Criteria - [ ] Admin can create unlimited timelines per client - [ ] Admin can add text updates to timelines - [ ] Admin can edit existing updates - [ ] Admin can archive/unarchive timelines - [ ] Clients can view their timelines (read-only) - [ ] Clients notified via email on updates - [ ] Update history with timestamps preserved - [ ] Clear visual distinction between active/archived --- ## Stories ### Story 4.1: Timeline Creation **Description:** Allow admin to create new case timelines for any client. **Acceptance Criteria:** - [ ] Create timeline form with: - Select client (search by name/email) - Case name/title (required) - Case reference number (optional, unique if provided) - Initial notes (optional) - [ ] Timeline assigned to selected client - [ ] Creation date automatically recorded - [ ] Status defaults to 'active' - [ ] Can create multiple timelines per client - [ ] Confirmation on successful creation - [ ] Timeline immediately visible to client **Technical Notes:** - Store in timelines table - Fields: user_id, case_name, case_reference, status, created_at - Validate case_reference uniqueness if provided --- ### Story 4.2: Timeline Updates Management **Description:** Allow admin to add, edit, and manage updates within a timeline. **Acceptance Criteria:** - [ ] Add new update to timeline: - Update text content (required, rich text supported) - Timestamp automatically recorded - Admin name automatically recorded - [ ] Edit existing updates: - Modify update text - Edit history preserved (updated_at changes) - [ ] Updates displayed in chronological order - [ ] Each update shows: - Date/timestamp - Admin name - Update content - [ ] Visual timeline representation (optional enhancement) - [ ] Client notified via email on new update **Technical Notes:** - Store in timeline_updates table - Fields: timeline_id, admin_id, update_text, created_at, updated_at - Track edit history via updated_at --- ### Story 4.3: Timeline Archiving **Description:** Allow admin to archive completed cases and unarchive if needed. **Acceptance Criteria:** - [ ] Archive timeline: - Status changes to 'archived' - Timeline remains visible to client - No further updates can be added (until unarchived) - Visual indicator shows archived status - [ ] Unarchive timeline: - Status returns to 'active' - Updates can be added again - [ ] Filter timelines by status (active/archived) - [ ] Bulk archive option for multiple timelines - [ ] Archived timelines sorted separately in client view **Technical Notes:** - Use status field: 'active' or 'archived' - Soft archive (no data deletion) --- ### Story 4.4: Admin Timeline Dashboard **Description:** Central view for admin to manage all timelines across all clients. **Acceptance Criteria:** - [ ] List all timelines with: - Case name - Client name - Status (active/archived) - Last update date - Update count - [ ] Filter by: - Client (search/select) - Status (active/archived/all) - Date range - [ ] Sort by: - Client name - Case name - Last updated - Created date - [ ] Quick actions: - View timeline details - Add update - Archive/unarchive - [ ] Search by case name or reference - [ ] Pagination for large lists **Technical Notes:** - Use Livewire for real-time filtering - Eager load relationships to prevent N+1 --- ### Story 4.5: Client Timeline View **Description:** Read-only timeline view for clients to track their case progress. **Acceptance Criteria:** - [ ] List all client's timelines: - Active timelines prominently displayed - Archived timelines clearly separated - Visual distinction (color/icon) for status - [ ] View individual timeline: - Case name and reference - Status indicator - All updates in chronological order - Each update with date and content - [ ] No edit/comment capabilities - [ ] No ability to archive/delete - [ ] Responsive design for mobile viewing - [ ] Recent updates indicator (new since last view) - [ ] Bilingual labels and dates **Technical Notes:** - Filter by authenticated user's ID - Track last_viewed timestamp per timeline (optional) - Read-only Volt component --- ### Story 4.6: Timeline Update Notifications **Description:** Email clients when admin adds updates to their timelines. **Acceptance Criteria:** - [ ] Email sent when new update added - [ ] Email includes: - Case name/reference - Update summary or full text - Link to view timeline - Date of update - [ ] Email in client's preferred language - [ ] Sender: no-reply@libra.ps - [ ] Professional template with branding - [ ] No email for archived timeline reactivation - [ ] Queue emails for performance **Technical Notes:** - Use Laravel notifications - Trigger on timeline_updates creation - Depends on Epic 8 for full email infrastructure --- ## Dependencies | Epic | Dependency | |------|------------| | Epic 1 | Authentication, database schema | | Epic 2 | User accounts (timelines assigned to users) | | Epic 8 | Email notifications | ## Risks & Mitigations | Risk | Impact | Mitigation | |------|--------|------------| | Large update content performance | Low | Paginate updates, lazy load | | Email notification failures | Medium | Queue with retry, log failures | | Accidental archive of active case | Low | Confirmation dialog, unarchive option | ## Definition of Done - [ ] All stories completed with acceptance criteria met - [ ] Tests for timeline CRUD operations - [ ] Tests for update management - [ ] Tests for archive/unarchive - [ ] Client view properly scoped to their timelines only - [ ] Email notifications working - [ ] Bilingual support verified - [ ] Code formatted with Pint