Appearance
📦 Quick Fix compact package — chỉ gồm
index.md+prd.md(không có decision-brief/dev-spec/qa-test-plan/handoff riêng). Toàn bộ nội dung gộp vàoprd.mdtheo Size S profile (CLAUDE.md).
Fix wording + filter status + BUG format + TZ — Báo cáo Doanh số/Thực thu & Chu kỳ khách hàng
Package fix cho 2 báo cáo dashboard:
/r/reports/actual_revenue_report_group— Doanh số/Thực thu/r/reports/customer_cycle_report_group— Nhóm chu kỳ khách hàng (tab Chu Kỳ Mua Hàng)
v1.1 update (2026-05-12): Bổ sung 1 BUG P0 nghiêm trọng (card Telesale/CRM amount rate hiển thị VND thay vì %) và 1 SQL TZ fix (đồng nhất convert TZ trong search_dashboard_telesale_amount).
Findings tổng hợp:
| # | Issue | Priority | Mức độ | Layer | Quyết định |
|---|---|---|---|---|---|
| B0 | 🐛 BUG — Card 3 & 5 hiển thị 0đ, "Tăng 4đ" thay vì % (FE isAmount match lỏng) | P0 | 🔴 High | FE | ✅ FIX (FR-008) |
| C1 | Filter trạng thái đơn quá lỏng — gồm order_new/prepaid_new chưa thanh toán | P1 | 🟡 Medium | BE Go | ✅ FIX (filter whitelist status đã thanh toán) |
| C2 | Bao gồm order_kind = prepaid (mua thẻ trả trước) | — | — | — | ✅ GIỮ NGUYÊN (PO chốt: đã thu tiền = đã mua) |
| C3 | Filter ngày khác nhau giữa các chỉ số (visit_date / created_at / paid_at) | P2 | 🟢 Low | FE/QA | ✅ DOCUMENT ONLY (thêm tooltip note, không sửa code) |
| T1 | TZ convert khác nhau cho cùng cột visit_date trong cùng SQL function (+ INTERVAL '7 hour' vs AT TIME ZONE) | P1 | 🟡 Medium | BE SQL | ✅ FIX (FR-009 migration mới) |
Wording fix kèm (12 chuỗi i18n + 1 label hardcoded + 3 server titles + 1 component tooltip array):
| # | Wording fix | Layer | Trạng thái |
|---|---|---|---|
| W1 | Tooltip conversion_rate — đổi "khách hàng" → "lượt khách" + nhắc rõ "bao gồm đơn còn công nợ" | FE i18n | ✅ Ready |
| W2 | Tooltip telesale_conversion_rate — đổi "khách" → "đơn hàng" | FE i18n | ✅ Ready |
| W3 | Tooltip crm_conversion_visits_rate — đổi "khách" → "đơn hàng (gồm Telesale)" | FE i18n | ✅ Ready |
| W4 | Label hardcoded "Số lượng khách bắt đầu mua" → "Số khách có phát sinh đơn trong kỳ" | FE component | ✅ Ready |
| W5 | Mảng tooltipContents hardcoded trong ActualRevenueReportDetailEfficiency.tsx (line 32-39) | FE component | ✅ Ready |
| W6 | Server-side title 3 chỉ số (ConversionRate.Title, TelesaleConversionVisitsRate.Title, CrmConversionVisitsRate.Title) | BE Go | ✅ Ready |
| W7 | Fix typo "Tống số khách" → "Tổng số khách" trong vi.ts | FE i18n | ✅ Ready |
Components/Files ảnh hưởng
diva-admin/src/modules/report/i18n/vi.ts— sửa blockactual_revenue_report(12 chuỗi) + thêm blockcustomer_cycle_purchase(2 chuỗi)diva-admin/src/modules/report/components/actual-revenue-report/ActualRevenueReportDetailEfficiency.tsx:- Sửa
tooltipContentshardcoded (line 32-39) - 🐛 FR-008 BUG FIX — sửa
isAmountcheck (line 138) dùng allowlist tường minh
- Sửa
diva-admin/src/modules/report/components/customer-cycle/CustomerCyclePurchaseViewChart.tsx— đổi label hardcoded + thêm icon ℹ️ tooltipdiva-backend/services/ecommerce-api/action/report_sales_revenue.go— 3 dòng title (368, 370, 372)diva-backend/services/ecommerce-api/action/report_purchase_cycle.go— line 269 filter status (C1 fix)- Mới:
diva-backend/services/controller/migrations/ecommerce/<timestamp>_fix_tz_telesale_amount_convertion_visits/up.sql— TZ fix choconvertion_visits_cte(FR-009)
Tài liệu
| File | Nội dung | Đọc bởi |
|---|---|---|
| PRD / Bug Spec | Z) 3 Decisions · A) Context + 7 FR + AC · C) Code changes (wording + filter status SQL) · D) QA test cases · Phụ lục: audit findings + 3 cảnh báo chi tiết | Tất cả (BE, FE, QA, PO) |
Quick links — theo vai trò
| Vai trò | Section cần đọc |
|---|---|
| PO/Stakeholder | Z) Decisions + A2) Context — đặc biệt DEC-008 (BUG P0) |
| BE Go Dev | C1) Filter status fix + C4) Server titles + Phụ lục C-1 SQL kiểm chứng |
| BE SQL Dev | C6) SQL migration TZ fix + FR-009 |
| FE Dev | C2) i18n vi.ts wording + C3) Component fixes (gồm C3.1.b BUG FIX) + FR-008 BUG P0 |
| QA | D) Test Cases (TC-01..12) — đặc biệt TC-10/11/12 mới |
Ngữ cảnh nghiệp vụ (link BoD analysis)
Audit này phát sinh từ câu hỏi của BoD về cách hiểu chỉ số Tỉ lệ khách phát sinh doanh số = 35,33%. BoD analysis chi tiết được publish riêng như knowledge note (xem changelog). Package fix này focus vào hành động cụ thể cho team.
v1.1 trigger: Code review session ngày 12/05/2026 phát hiện thêm 1 BUG P0 (FE isAmount match lỏng) và 1 TZ inconsistency trong SQL function — bổ sung vào cùng wave fix vì cùng file/cùng QA case.
Lịch sử thay đổi
| Version | Ngày | Thay đổi | File | Ảnh hưởng |
|---|---|---|---|---|
| v1.0 | 11/05/2026 | Initial release — 3 cảnh báo audit + 7 wording fix, 9 test cases, 3 quyết định chốt | PRD | All |
| v1.1 | 12/05/2026 | Bổ sung: 🐛 FR-008 BUG P0 format *_amount_rate (FE isAmount lỏng) + FR-009 SQL TZ fix + 3 TC mới (TC-10/11/12) + DEC-T06/T07 + DEC-007/008 + tooltip card 2 thêm note "bao gồm đơn còn công nợ" | PRD | FE (1 file thêm 1 thay đổi) + BE SQL (1 migration mới) |