Generated Epics
This commit is contained in:
@@ -0,0 +1,219 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user