Tasks / Reminders Module
W Vista “Reminders” to tak naprawdę Tasks - używają tej samej tabeli tasks i serwisu tasksService. ~10 plików, ~2k LOC.
Różnice
Dział zatytułowany „Różnice”- Tasks from Vista (system):
source= ‘system’, ‘Vista’, ‘workflow’, ‘assistant’, ‘ai’, ‘auto’ - Tasks from User:
source= ‘user’, ‘manual’ lubcreated_by===assigned_to
Tasks Flow
Dział zatytułowany „Tasks Flow”graph TB subgraph Sources["Task Sources"] AI[AI Task Suggestions] User[User Manual Creation] Visit[Visit Context] end
subgraph TasksTable["tasks table SQLite"] Task[(task_id, title, description<br/>status, priority, task_type<br/>source, patient_id, visit_id<br/>assigned_to, created_by<br/>tags, due_at, snooze_until)] end
subgraph Classification["Task Classification (taskFilters.ts)"] SystemTasks["System Tasks<br/>source in: system, Vista, workflow, ai, auto"] UserTasks["User Tasks<br/>source: user, manual<br/>or created_by === assigned_to"] end
subgraph UI["Workspace UI"] WorkspaceReminders[WorkspaceReminders.tsx] useRemindersPanel[useWorkspaceRemindersPanel] TaskItem[WorkspaceTaskItem] end
AI -->|accept suggestion| TasksTable User -->|create task| TasksTable Visit -->|visit_id FK| TasksTable
TasksTable --> Classification Classification --> UI useRemindersPanel -->|filters: mine, vista, all, completed| WorkspaceReminders WorkspaceReminders --> TaskItemTask Status Flow
Dział zatytułowany „Task Status Flow”stateDiagram-v2 [*] --> active: create_task active --> completed: complete_task active --> snoozed: snooze active --> cancelled: cancel snoozed --> active: wake (snooze_until passed) completed --> [*] cancelled --> [*]Reminder Filters (useWorkspaceRemindersPanel)
Dział zatytułowany „Reminder Filters (useWorkspaceRemindersPanel)”| Filter ID | Logic | Description |
|---|---|---|
mine | classifyTaskOwnership() === 'user' OR created_by === userId | Tasks created by current user |
vista | classifyTaskOwnership() === 'system' | AI/system generated tasks |
all | isTaskOpen(task) | All open tasks |
completed | status === 'completed' | Finished tasks |
Tasks Service API
Dział zatytułowany „Tasks Service API”| FE Method | Rust Command | Action |
|---|---|---|
createTask(input) | create_task | Create new task |
updateTask(input) | update_task | Update task fields |
completeTask(taskId) | complete_task | Mark as completed |
listTasks(filter) | list_tasks | Get filtered tasks |
deleteTask(taskId) | delete_task | Remove task |
bulkCreateTasks(tasks) | bulk_create_tasks | Create multiple |
AI Task Suggestions Flow
Dział zatytułowany „AI Task Suggestions Flow”sequenceDiagram participant Visit as VisitEditor participant Hook as useAiTaskSuggestions participant Service as aiTaskSuggestionsService participant BE as Backend participant UI as WorkspaceReminders
Note over Visit: Visit finalized
Visit->>Hook: visitId changed Hook->>Service: generateSuggestions(visitId) Service->>BE: unified_ai_generate_tasks
BE->>BE: Load visit + patient data BE->>BE: Generate suggestions via LLM BE-->>Service: TaskSuggestion[]
Service-->>Hook: suggestions Hook-->>UI: Display in Reminders tab
UI->>Hook: User clicks Accept Hook->>Service: acceptSuggestion(id) Service->>BE: unified_ai_accept_task_suggestions BE->>BE: Convert to real Task BE-->>Service: Task created Service-->>Hook: Refresh tasksTask Types
Dział zatytułowany „Task Types”| Type | Source | Example |
|---|---|---|
followup | AI/system | ”Wizyta kontrolna za 5 dni” |
lab_test | AI | ”Morfologia krwi za 7 dni” |
prescription | AI | ”Wystawić receptę na Metacam” |
callback | AI/user | ”Telefon do właściciela” |
reminder | user | ”Sprawdzić wyniki” |
vaccination | AI | ”Szczepienie za 6 miesięcy” |
Module Stats
Dział zatytułowany „Module Stats”| Metric | Value |
|---|---|
| Files | ~10 |
| LOC | ~2,000 |
| Tauri Commands | 9 |
| Key Hook | useTasks (123 LOC) |
Known Issues
Dział zatytułowany „Known Issues”| ID | Severity | Description |
|---|---|---|
| P2-016 | MEDIUM | AI suggestions mogą tworzyć duplikaty gdy visit edytowany wielokrotnie |
| P2-017 | LOW | Brak bulk dismiss dla AI suggestions |