Appearance
CRM - Technical Map
Auto-generated bởi codebase-doc-generator ngày 2026-03-23 (verified từ code thực). Không chỉnh sửa thủ công.
Routes chính
| Route | Path | Module ID | Permissions |
|---|---|---|---|
ROUTE_TICKET | /crm/ticket | ticket_management | CrmRoles |
ROUTE_TICKET_MULTIPLE | /crm/ticket/multiple | ticket_management | CrmRoles |
ROUTE_CUSTOMER | /crm/customer | customer_management | CrmRoles |
ROUTE_KNOWLEDGE_BASE_INFO | /crm/knowledge_base_info | knowledge_base_management | CrmRoles, ITLeader, ITStaff |
ROUTE_ASSIGNMENT | /crm/assignment | assignment_management | TelesalesLeader, CustomerServiceLeader, ITLeader, ITStaff |
ROUTE_MAPPING_ACC | /crm/mapping | knowledge_base | ITLeader, ITStaff |
FE Pages (17)
| Nhóm | Files |
|---|---|
| Ticket | Tickets.tsx, TicketCreate.tsx, TicketDetail.tsx, TicketDetailDetail.tsx, TicketDetailNote.tsx, TicketDetailTicketHistory.tsx, TicketDetailEditHistory.tsx, TicketMultipleCreate.tsx |
| Customer | Customer.tsx, CustomerDetail.tsx |
| Assignment | Assignment.tsx, AssignmentCreate.tsx, AssignmentDetail.tsx |
| Knowledge / mapping | KnowledgeBaseInfo.tsx, MappingAcc.tsx, MappingAccCreate.tsx |
FE Components & Compositions
| Area | Files chính |
|---|---|
| Ticket | components/ticket/*, useTicket.ts, useTicketBuilder.ts, useTicketMultipleForm.ts |
| Call center | NewCallListener.tsx, useSipCall.ts, graphql/call.graphql |
| Customer CRM | components/customer/*, graphql/customer-visit.graphql |
| Assignment / mapping | components/assignment/*, graphql/assign-ticket.graphql, graphql/mapping.graphql |
GraphQL Files
| File | Ops | Scope |
|---|---|---|
ticket.graphql | 17 | Ticket list/detail/create/update/history |
call.graphql | 8 | In-call / call logs / extension |
mapping.graphql | 8 | Hotline account mapping |
branch_user.graphql | 5 | Branch-user lookup cho assignment |
customer-visit.graphql | 3 | Customer visit + revenue |
assign-ticket.graphql | 1 | Assign ticket action |
Backend Actions (crm-api)
| File | Vai trò |
|---|---|
assign_ticket.go | Phân công ticket |
change_status_ticket.go | Đổi trạng thái ticket |
callcenter_callout.go | Gọi ra từ call center |
callcenter_calldata.go | Dữ liệu tổng hợp call center |
incall_call.go | In-call integration |
secure_incall.go | Bảo mật / secure flow cho call integration |
apply_employee_program.go | Luồng business liên quan employee program |
get_presigned_url.go | Upload/file support cho CRM |
Event Handlers (crm-api)
| File | Mục đích |
|---|---|
ticket_insert.go | Xử lý khi tạo ticket |
ticket_update.go | Xử lý cập nhật ticket |
ticket_interest_delete.go | Đồng bộ khi xóa interest |
incall_call_insert.go | Log cuộc gọi vào |
incall_call_log_insert.go | Tạo call log |
incall_call_log_note_update.go | Cập nhật note call log |
incall_extension_insert.go / incall_extension_update.go | Đồng bộ extension |
crm_reference_address_update.go | Đồng bộ địa chỉ tham chiếu CRM |
Schedulers
| File | Mục đích |
|---|---|
distribute_ticket.go | Tự động chia ticket |
remind_ticket_today.go | Nhắc ticket đến hạn hôm nay |
remind_ticket_tomorrow.go | Nhắc ticket sắp đến hạn |
consolidate_ticket_4.go / consolidate_ticket_8.go | Gom / xử lý ticket theo mốc thời gian |
kpi_hotline.go | KPI hotline scheduler |
Data Model (CRM DB)
| Table | Mô tả |
|---|---|
ticket | Bản ghi ticket chính |
ticket_distribute | Lịch sử / mapping distribute |
ticket_interest | Nhu cầu / interest của ticket |
ticket_campaign | Campaign liên quan ticket |
ticket_history_log | Audit trail |
crm_user | User dimension trong CRM |
knowledge_question | Câu hỏi knowledge base |
knowledge_question_tag | Tags cho knowledge item |
incall_call | Cuộc gọi |
incall_call_log | Log gọi |
incall_extension | Máy lẻ / extension |
incall_call_contact_mapping | Mapping extension + phone -> contact |
Store layer
| File | Vai trò |
|---|---|
pkg/store/ticket.go | Type, query, mutate ticket, status/source constants |
pkg/store/ticket_distribute.go | Ticket distribute helpers |
pkg/store/ticket_interest.go | Ticket interest data access |
pkg/store/ticket_campaign.go | Campaign mapping |
pkg/store/incall_call.go | In-call entities |
pkg/store/incall_call_contact_mapping.go | Upsert mapping extension-phone-contact |
Rủi ro / Findings kỹ thuật
| # | Note |
|---|---|
| 1 | Ticket list có logic local storage cho extension và call-state ngay trong FE page. |
| 2 | sourceDescriptions được hard-code trong Tickets.tsx, không đọc từ master data. |
| 3 | Customer detail CRM reuse rất nhiều component từ user và ecommerce; testing cần bao gồm cross-module routes. |
| 4 | useTicketBuilder.ts chịu trách nhiệm phần lớn logic filter theo role/branch/status/result/source. |