Part II · System Docs
Chapter 3 - System Workflows and State Transitions
WF-1 Project Creation → Billing (?) workflow not relevant. This section documents flows verified from code.
WF-EMAIL-AI assignment (detailed already in major-workflow.mmd)
Prompt utilises:
projectmatch bycase_refor governanceallowed_domainsor auto-create perEmailAccount.automation_settings.- Detects project creation with assignment manager/lawyer (random fallback from
workspace->usersby pivot role if configured). create_tasksetting creates task in default stage; body parsed viaEmailParserService.- Event
ProjectMemberAssignedfires notification (email + WhatsApp) to members. - Slack/Telegram via listeners TaskCreated/ProjectCreated change notes.
WF-TASK-KANBAN
- Create task (post/detail fields) -> TaskService -> TaskEvent assigned -> listeners -> Slack/Telegram.
- Stage change via Drag or
changeStage-> TaskObserver -> TaskEvent (stage name aware). - Task update while assigned to user, approval handling by LegalGovernanceService.
WF-EXPENSE APPROVAL
- Expense submission (
ProjectExpenseController) → notifications local + optional business. - Approver decision → status change + workflow log
- Approved/reject via ExpenseApprovalController.
- Notifications Slack/Telegram.
WF-INVOICE-001 (public checkout)
frontend payment page relies on InvoicePaymentController token sales endpoints and /api/payment-methods filtered list & payment methods remote. Payment gateway callback update. Specifically endpoints (payment/{token}) are public, no login needed.
WF-ZOOM
- Create settings once
/settings/zoom; ZoomMeetingController fetches projects/members; meetings can attach project; join/start endpoints return URLs.
WF-REPORTS
- MonthlyReportController handles request generate → generate status → approve/reject → export PDF/Excel → send WhatsApp/email.
Every report keeps JSON stats tables (task_stats, report JSON agregates).
Diagrams
State Transitions Summary
| Entity | Status values | Evidence |
|---|---|---|
| Project | planning/active/on_hold/completed/cancelled | projects migration |
| Task stage | custom, reordered per workspace | TaskStage migration |
| Timesheet | draft/submitted/approved/rejected | timesheets migration |
| Expense | pending/approved/rejected/requires_info | project_expenses migration |
| Invoice | draft/sent/viewed/paid/partial_paid/overdue/cancelled | invoice migration |
| Bug status | custom per workspace | bug_statuses |
| Zoom meeting | inferred standard statuses | zoom_meetings migration |
| Monthly report | draft/pending_review/approved/rejected | monthly_reports migration |
| AI batch log | enum? (started/processing completed/failed?) | migration inside of ai_batch_logs (status string) |
| TaskEvent event_type | assigned/submitted/returned/approved | task_events table |
| AI chat conversation | string field (status) default 20 chars; likely open/closed | ai_chat_conversations |
| Expense workflow | pending/approved/rejected/waiting/cancelled | expense_workflows |
| Plan order | pending/approved/rejected/cancelled | plan_orders migration |
| Payment status | expected by Invoice/payment flows | Payments migration |