Appearance
Customer Analytics — Technical Map
Route / page map
| Surface | Main page / shell |
|---|---|
| Customer report | CustomerReport.tsx |
| Customer cycle | CustomerCycleReport.tsx |
| Membership | MembershipReport.tsx |
| Customer by revenue | RankReport.tsx tab CUSTOMER_BY_REVENUE_REPORT |
GraphQL / data model map
| Surface | Query / model chính |
|---|---|
| Customer report | search_report_contact_book + aggregate trong report_customer.graphql |
| Membership | report_customer + customer_level filters trong report_customer.graphql |
| Customer by revenue | search_report_customer_revenue trong report_rank.graphql |
| Customer cycle | reportOverviewCustomer*, reportPurchaseCycle*, reportCustomerCycle*, reportCustomerRate qua report_customer_cycle.graphql + Hasura actions |
Boundary với module khác
| Module | Boundary kỹ thuật |
|---|---|
ecommerce | Customer analytics dùng functions/views/materialized views của source ecommerce |
user | Table component mở route customer detail sang module user |
crm | Không phải source chính, nhưng có drill-out sang customer-related pages |
Rủi ro / Findings kỹ thuật
| Mức | Finding |
|---|---|
| Cao | CustomerReport.tsx đang update userBehavior bằng key của campaign report. |
| Cao | CustomerCycleReport chấp nhận CUSTOMER_CYCLE_RATE trong state nhưng panel rate không được render ở page shell. |
| Trung bình | CustomerCycleRateReport ghi state sai key CUSTOMER_CYCLE_PURCHASE, làm bleed state giữa hai tab. |
| Trung bình | MembershipReport.tsx export name là CustomerServiceReport, cho thấy copy-paste residue. |