Skip to content

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,
  • changeStatusTicket khô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ướcMục tiêu
PO / BAshared-rules.mdChốt thuật ngữ, source taxonomy, actors, invariants
FE Devtype-ticket-lifecycle-and-results.md, type-callcenter-and-hotline-touchpoints.mdHiểu save flow, tab shell, call binding, visibility drift
BE Devtype-assignment-and-distribution.md, type-ticket-lifecycle-and-results.mdHiểu action/event/scheduler và contract metadata
QAshared-rules.md, type-ticket-lifecycle-and-results.mdThiết kế test theo source, result chain, assignment, reminder
Người mới vào hệ thốngmodule-overview.mdCó bản đồ tổng trước khi đi sâu

Files

FileVai trò
module-overview.mdBản đồ tổng: route families, lifecycle, backend boundary, scheduler map
shared-rules.mdThuật ngữ chuẩn, source/status matrix, invariant, action/scheduler matrix
type-ticket-lifecycle-and-results.mdDeep dive cho create/update/change-status/result/new-ticket chain
type-assignment-and-distribution.mdDeep dive cho assignment UI, bulk assign, auto-distribute, visibility drift
type-callcenter-and-hotline-touchpoints.mdDeep dive cho incall_*, SIP runtime, hotline actions, ticket-call binding

Kết luận ngắn

  1. Ticket workflow của CRM là state machine nhiều bước, không phải một CRUD form.
  2. changeStatusTicket là lifecycle engine thật; khi complete có thể trả new_ticket_id để mở vòng ticket kế tiếp.
  3. Assignment đang chia làm 2 nhánh riêng: manual bulk assignment và scheduler distribute_ticket.
  4. Hotline/call center là first-class boundary vì FE, Hasura action và incall_call_log subscription đều gắn trực tiếp với ticket runtime.

Liên kết tài liệu liên quan

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 domain crm.
  • Ư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.