Appearance
CRM Ticket Workflow Deep Dive
Bộ tài liệu này đào sâu flow crm-ticket-workflow theo code thực tế hiện tại. Đây là package reverse-engineer trong docs/modules, không phải PRD/spec delivery. Mục tiêu là chốt một mental model rõ ràng cho 4 lớp rất dễ bị lẫn:
- ticket create/update ở FE không chỉ là CRUD, mà còn gọi transition engine,
changeStatusTicketkhông chỉ đổi status, mà có thể tạo ticket kế tiếp,- assignment có 2 engine riêng: bulk assign thủ công và scheduler auto-distribute,
- hotline/call center là runtime surface thật của CRM, không phải integration phụ.
Đọc file nào?
| Bạn là ai? | Nên đọc trước | Mục tiêu |
|---|---|---|
| PO / BA | shared-rules.md | Chốt thuật ngữ, source taxonomy, actors, invariants |
| FE Dev | type-ticket-lifecycle-and-results.md, type-callcenter-and-hotline-touchpoints.md | Hiểu save flow, tab shell, call binding, visibility drift |
| BE Dev | type-assignment-and-distribution.md, type-ticket-lifecycle-and-results.md | Hiểu action/event/scheduler và contract metadata |
| QA | shared-rules.md, type-ticket-lifecycle-and-results.md | Thiết kế test theo source, result chain, assignment, reminder |
| Người mới vào hệ thống | module-overview.md | Có bản đồ tổng trước khi đi sâu |
Files
| File | Vai trò |
|---|---|
| module-overview.md | Bản đồ tổng: route families, lifecycle, backend boundary, scheduler map |
| shared-rules.md | Thuật ngữ chuẩn, source/status matrix, invariant, action/scheduler matrix |
| type-ticket-lifecycle-and-results.md | Deep dive cho create/update/change-status/result/new-ticket chain |
| type-assignment-and-distribution.md | Deep dive cho assignment UI, bulk assign, auto-distribute, visibility drift |
| type-callcenter-and-hotline-touchpoints.md | Deep dive cho incall_*, SIP runtime, hotline actions, ticket-call binding |
Kết luận ngắn
- Ticket workflow của CRM là state machine nhiều bước, không phải một CRUD form.
changeStatusTicketlà lifecycle engine thật; khi complete có thể trảnew_ticket_idđể mở vòng ticket kế tiếp.- Assignment đang chia làm 2 nhánh riêng: manual bulk assignment và scheduler
distribute_ticket. - Hotline/call center là first-class boundary vì FE, Hasura action và
incall_call_logsubscription đều gắn trực tiếp với ticket runtime.
Liên kết tài liệu liên quan
- docs/modules/crm/overview.md
- docs/modules/crm/crm.md
- docs/modules/crm/crm.technical.md
- docs/modules/crm/tickets.md
- docs/modules/notification/overview.md
- docs/modules/user/customer-workspace.md
- docs/modules/phase-2-backlog.md
Phạm vi của bộ docs này
- Bám theo code hiện tại của
diva-admin,crm-api, Hasura metadata và các table domaincrm. - Ưu tiên mô tả hệ thống đang chạy như thế nào thay vì flow lý tưởng.
- Chủ động ghi các drift hoặc dấu hiệu bug ở FE, backend, metadata và scheduler runtime.