Appearance
Changelog
Mục mới nhất ở trên cùng. Click link để đến đúng vị trí thay đổi.
2026-05-16
Publish — Cập nhật
prepaid-card-analytics-tab
Phân tích Thẻ trả trước (Prepaid Card Analytics Tab) v3.15 → v3.16
ROI thresholds canonical — thêm FORMULA-020 trong PRD A10 định nghĩa 3 ngưỡng đầy đủ cho cột "Trạng thái" bảng Chiến dịch + ROI KPI card (Marketing sub-tab, Phase 3+ deferred). Trước đó chỉ định nghĩa nửa vời > 200% (Hiệu quả), bỏ trống cutoff Trung bình/Kém. Đồng bộ tooltip ROI, column definition, status line trên dev-spec + ROI card highlight rule trên ui-spec.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Thêm FORMULA-020: 3 ngưỡng canonical 🟢 > 200% / 🟡 100%–200% / 🔴 < 100% + edge case marketing_cost = 0 → "—" + tag "Chưa có budget" | PRD | A10 FORMULA-020 | All (Phase 3+) |
| US-5.1 AC: trạng thái CD ghi rõ 3 ngưỡng + ref FORMULA-020 + edge case | PRD | A5 US-5.1 | FE, BE, QA |
| Tooltip ROI KPI Card với 3 phân loại + edge case "Chưa có budget" | Dev Spec | §16.4 Tooltip Marketing | FE, UI/UX |
| Column "Trạng thái" bảng Chiến dịch: ngưỡng + edge case canonical | Dev Spec | §16.12 Bảng Chiến dịch | FE, QA |
| Tab Chiến dịch status line đồng bộ 3 ngưỡng + ref FORMULA-020 | Dev Spec | §7.2 Tab con Chiến dịch | FE, BE, QA |
| ROI card highlight rule: 3 màu 🟢/🟡/🔴 + rule "—" khi cost = 0 | UI Spec | §7.1 Marketing KPI Cards | FE, UI/UX |
2026-05-15
Publish — Cập nhật
vi-km-2
Ví Khuyến Mãi 2 (Promotion Wallet 2) v1.8 → v1.11
Audit mobile + web admin gap so với codebase Diva (Flutter customer + staff app + diva-admin Vue). Đảo decision DEC-031 sang Option A (mobile thêm tab thứ 3 vào wallet_screen.dart hiện hữu, KHÔNG screen riêng) sau khi user PO chốt yêu cầu đồng nhất UX khách. Thêm SCR-06-NEW-03 (popup lịch sử giao dịch KM 2 trên web admin parity popup KM 1 hiện có). Tổng 137 TC (thêm 36 TC mobile + web admin so với v1.8 baseline). 6 lint clean.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Đảo DEC-031 sang Option A — tab thứ 3 trong wallet_screen.dart thay vì screen riêng | PRD | Z) Nhật ký quyết định | FE Mobile, QA |
Chốt DEC-032 Option α — AffiliateFor KHÔNG bổ sung promotion2, CTV nhận hoa hồng giữ [commission, promotion] | PRD | Z) Nhật ký quyết định | FE Mobile, BE |
Chốt DEC-030 — KM 2 inherit affiliate_config matrix của KM 1; seed 3 row FALSE | PRD | Z) Nhật ký quyết định | BE, QA, Ops |
| SCR-09-MOBILE-01/02 — Tab Ví khuyến mãi 2 thứ 3 + Home widget card "Ví KM 2" thứ 5 | UI Spec | B2.9 | FE Mobile, QA |
| SCR-09-MOBILE-03 — WalletType.promotion2 enum + l10n shared core | UI Spec | B0.1 | FE Mobile |
| SCR-10-STAFF-01 — Staff app customer detail balance KM 2 | UI Spec | B2.10 | FE Mobile, QA |
SCR-06-NEW-03 — Popup StatisticWalletPromotion2Popup.tsx lịch sử giao dịch KM 2 web admin (parity popup KM 1) | UI Spec | B2.6.6A | FE Web, QA |
| 9 task mobile C11 Phase 2 (P2-MOBILE-01..09) + 2 task FE Web (P2-01B/C) | Dev Spec | C11) Tasks | Mobile, FE, PM |
| 36 TC mobile + web admin (15 TC-SCR09 + 5 TC-SCR09-ENUM + 7 TC-SCR10 + 5 TC-006 mở rộng + 4 TC-012 commission gate) | QA Test Plan | D2) Ca kiểm thử | QA |
Publish — Thêm mới
pancake-crm-integration
Tích hợp Pancake CRM (Pancake CRM Integration) v1.0 — New (Profile L)
MVP-1 inbound webhook 1 chiều Pancake CRM → Diva CRM. Chấm dứt copy-paste thủ công 50-200 lead/ngày từ 40+ kênh (FB, Zalo, TikTok, Google Ads...). Auto match phone E.164 + tạo ticket + round-robin telesale (REUSE ticket_distribute) + notify realtime. Zero-miss SLO với 4-layer outage recovery (fail-open webhook + adaptive polling + daily reconciliation + DLQ replay). Pilot 4 tuần (W1=1 source → W4=40+). 28 DEC chốt (gồm DEC-028 direct pgxpool architecture, DEC-027 reuse update action cho replay_dlq, DEC-026 slot 9 trong báo cáo telesales). 14 PD tracked. Effort ~44.25 dev-days, 2 BE + 1 FE + 1 QA + 1 Ops parallel.
| File | Nội dung |
|---|---|
| Decision Brief | Tóm tắt 5 phút package + 28 DEC + 14 PD |
| PRD | Z (Decision Log) + A0-A12 + 6 FORMULA + LIFECYCLE-001/002 + 18 FR |
| UI Spec | B-PRE → B-QUALITY + 6 SCR (Settings 4 tabs + slot 9 delta) + 12 edge case nhóm + 32 risk |
| Dev Spec | C1-C13 + 5 bảng pancake_* + 8 migration + 7 cron + 15-step handler + direct pgxpool foundation |
| QA Test Plan | D1-D7 + 127 test case + chaos test outage + load test 500 req/s burst |
| Handoff | RACI + timeline 6 tuần + 14 PD blockers |
| Go-Live Checklist | E1-E7 + Pilot W1-W4 gates + rollback 4-tier + HMAC verification path |
record-bod-insight
Insight Ghi Âm cho BOD (Record BOD Insight) v1.0 — New (Profile L)
Dashboard executive tracking-only cho Board of Directors giám sát compliance ghi âm tư vấn + coverage KH chờ TV toàn 70 chi nhánh Diva. Tách quyền view_insight khỏi access (NV chỉ list records, BOD/ITLeader xem dashboard). 5 KPI (Cuộc TV, Thời lượng TB, NV hoạt động, Tuân thủ ghi âm %, KH chờ TV) + 4 chart (Trend single-line, Top 10 NV bar, Heatmap giờ × thứ aggregate 70 CN, Branch top 10 + "Khác") + 2 anomaly (🔴 Missing records, 🟡 KH chờ TV). Drill-down navigate /e/record với URL query params (KHÔNG mở modal complex) — reuse RecordForm.tsx HTML5 audio + RecordTable.tsx filter. 2 modal duy nhất (MissingRecords + AnomalyMissingTV) cho case không reuse /e/record được. 16 DEC chốt qua 6 vòng review (gồm DEC-012 v3 mat views P0 mandatory, DEC-016 BE enforcement Hasura permission session-claim, DEC-010 v2 Permission Dynamic v2 schema thật module_permission_action + role_module.actions TEXT[]). 11 PD (6 critical block P0): PD-001 region grouping, PD-003 appointment baseline, PD-005 action name confirm, PD-007 audio URL, PD-008 benchmark plan, PD-011 NEW JWT claim x-hasura-allowed-branches middleware (chưa có trong code Diva — rg verified). Performance 5 tiers: Tier 1 indexes (4 mandatory P0 — 3 B-tree compound + 1 BRIN) + Tier 2.4 materialized views P0 (3 views refresh 15p qua pg_cron) + Hasura @cached(ttl:60) + URQL stale-while-revalidate. TTFMP target < 2s/7d, < 3s/30d với 105k records × 70 CN. Effort P0 ~1.5 tuần (FE 9 ngày + BE 3 ngày + QA 2 ngày). Scope simplify 65% từ design v1 (16 → 11 components, 7 modal → 2 modal, bỏ Long/Short call anomaly vì là Manager scope).
| File | Nội dung |
|---|---|
| Decision Brief | Tóm tắt 5 phút package + 16 DEC + 11 PD + 5 risk |
| PRD | Z (Decision Log 16 DEC) + A1-A12 (11 FR / 49 AC / 6 FORMULA / Glossary / A12 Tooltip) |
| UI Spec | B-PRE + B0 (9 matrices) + B-VISUAL (6 mockup canonical self-contained) + B1-B9 + B-EdgeCases (12 nhóm) + B-QUALITY (30+ risks) — 100% Vietnamese UI labels |
| Dev Spec | C1-C12 + 4 indexes Tier 1 + 3 materialized views SQL + Hasura YAML manual_configuration cross-table + 7 GraphQL queries + Permission v2 migration + Performance 5 tiers + Traceability 100% |
| QA Test Plan | 49 TC mapped 49 AC + 3 critical E2E (BOD happy / Staff deny / TTFMP benchmark) + Load test 50 concurrent + Permission JWT test (TC-010-8/9/10) |
| Handoff | RACI matrix + 4 sprint timeline (Pre-kickoff 17/05 → Go-Live 29/05) + 6 PD critical blockers + Communication channels |
| Go-Live Checklist | 7 gate groups (Code/DB/Permission/Performance/QA/Doc/Approval) + Day-0/Day-1 ops + Rollback plan + Slack/Email templates |
Publish — Cập nhật
vi-km-2 — v1.7 → v1.8
Ví Khuyến Mãi 2 (Promotion Wallet 2) v1.7 → v1.8 — Phase 5 review fix-up sau review đa góc nhìn 5/5 CR + 4/4 MJ valid; chốt 3 decision lớn (DEC-027/028/029) + 4 lint clean + thêm B0.9 Bảng kiểm kê tương tác + 14 ca QA bổ sung. Lot KHÔNG có trạng thái pending (lot chỉ tạo khi khách trả ≥ 1 đồng — match SoT DEC-019); schema wallet_km2_payment_attempt merge audit fields + lock primitives để pass TG-003 idempotency gate; balance UI realtime qua action get_customer_km2_balance (đóng race window scheduler miss giữa lot expired và cron 00:05). Bỏ Evidence Pack + Source of Truth khỏi public docs (internal artifacts theo whitelist mới — vẫn giữ trong diva-group).
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
DEC-027 — Lot KHÔNG có pending; ENUM active/exhausted/expired/refunded; lot chỉ tạo khi khách trả ≥ 1 đồng; đơn còn nợ hiển thị qua prepaid_order.status='pending' + inline "Đã nạp X/Y" | PRD · UI Spec · Go-Live | Z) Nhật ký quyết định, B0.7, B2.6.11, E4.1 T+30 smoke test | All |
DEC-028 — Schema wallet_km2_payment_attempt merge: PK id riêng + UNIQUE payment_attempt_id UUID + lock primitives (lock_holder, lock_expires_at, TTL 90s) + Diva audit fields + cross-check verify (order_id, customer_id, user_id) chống bypass FE | Dev Spec · QA | C4) Mô hình dữ liệu, C5.4 pseudocode, D2) Ca kiểm thử (9 TC-IDEMPOTENT) | BE, QA |
DEC-029 — Balance UI realtime qua action get_customer_km2_balance (SUM(lot.balance) WHERE status='active' AND expired_at > NOW()); KHÔNG dùng wallet.amount cho payment flow | Dev Spec · UI Spec · QA | 5.3.1 Action mới, B2.4 SCR-04, B2.6 SCR-06, D2 TC-BALANCE-RACE (5 TC) | BE, FE |
Rename 4 field config canonical theo tên Dev: max_percent_per_order, allow_combine_km1, refund_fee_percent, refund_deadline_days | UI Spec | B0.4, B2.1.4 | FE, QA |
B0.9 Bảng kiểm kê tương tác (MỚI) — ~60 element × 9 SCR với 10 enum canonical (Primary CTA / Secondary CTA / Drill-down / Hover state / Inline edit / Tab switch / Overlay / Expand-Collapse...); ref Quy ước tương tác B2.x.7 + QA TC | UI Spec | B0.9 | FE, QA |
| QA test count 80 → 94 — bổ sung 9 TC-IDEMPOTENT-01..09 (TG-003 gate) + 5 TC-BALANCE-RACE-01..05 (DEC-029 race window) | QA Test Plan | D2 + D4 traceability | QA, BE |
Lint vietnamese clean: calque "Hợp đồng X" → "Quy ước X", "Tình huống biên" → "Trường hợp cá biệt", "Ảnh chụp bàn giao" → "Tóm tắt bàn giao", "Blueprint" → "Bản thiết kế tóm tắt", format ngàn US , → VN ., "Variant Matrix" → "Ma trận Biến thể" | Toàn package | — | None (linting) |
Cleanup public docs — bỏ Evidence Pack + Source of Truth khỏi dva-doc/docs/features/vi-km-2/ (internal artifacts theo whitelist mới); 2 file vẫn giữ canonical trong diva-group/docs/features/vi-km-2/ | index.md | Tài liệu table | All readers |
sales-cskh-debt-handover — v2.2 → v2.3
Sales/CSKH Debt Follow-up & Handover v2.2 → v2.3 — Thêm BUG-PROD-006 (🟠 High — UI semantic): sub-label ₍Thu 130M − HT 5M₎ mobile MOB-01 mơ hồ + mâu thuẫn DEC-022 + vi phạm rule line 858 (vì "Triệu") + format dấu ,. Sau phân tích góc vận hành thu hồi công nợ: KPI "Doanh thu ròng" là chỉ số kế toán (booked revenue), Sale CSKH cần thông tin vận hành thu nợ (đã thu / % thu / còn nợ). Chốt Option 1: sub-label = ₍Đã thu {value} ({%}) · Nợ {value}₎ — 3 chỉ số thu nợ phục vụ Sale CSKH thay vì lặp lại công thức của primary. Format primary chuẩn rule line 858: 125 Triệu → 125.000.000đ. DEC-032 (web) GIỮ NGUYÊN "≠ tiền thực thu" — khác biệt intentional (web audit-friendly, mobile operation). Bonus cleanup: 26 chỗ format VND dấu , → dấu . (chuẩn VN locale) trong ui-spec.md (25 chỗ) + _prod-issues.md (1 chỗ). DEC-022/DEC-032 KHÔNG đổi.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
BUG-PROD-006 — Mobile MOB-01 sub-label "Doanh thu ròng" mơ hồ; chốt Option 1 Đã thu (%) · Nợ cho góc Sale CSKH thu nợ | Prod Issues | BUG-PROD-006 | FE, PO |
MOB-01 wireframe — 125 Triệu → 125.000.000đ; Thu 130M − HT 5M → Đã thu 62M (49,6%) · Nợ 63M | UI Spec | MOB-01 wireframe (line 1727-1731) | FE |
| Sub-label rule mobile mới — riêng cho card "Doanh thu ròng" mobile (3 chỉ số thu nợ + edge cases + khác biệt vs Web SCR-01) | UI Spec | Sub-label KPI mobile section | FE |
Format VND cleanup — 26 chỗ dấu , ngàn → dấu . (chuẩn VN locale) | UI Spec · Prod Issues | Toàn 2 file | All |
sales-cskh-debt-handover — v2.1 → v2.2
Sales/CSKH Debt Follow-up & Handover v2.1 → v2.2 — Wave 1 Hotfix Scheduled. Sau review đối chiếu code thật 2026-05-15: package chưa đủ handoff full release (4 P1 blocker + 2 P0 còn tồn đọng — security broad perm, validation report drift, formula actual_revenue conflict, view_role/cron/role_grants chưa apply), nhưng đủ để hỗ trợ Wave 1 hotfix 2 việc cấp bách: (1) BUG-PROD-005 Resolution Plan APPROVED → status ⚠️ OPEN → 🟡 SCHEDULED Wave 1 (Day-0 deploy migration add_debt_dashboard_indexes với 4 indexes CONCURRENTLY, SQL có sẵn ở dev-spec C9.2 line 796-810); (2) BUG-PROD-003 re-affirm — DEC-028 LOCKED v1.0 nhưng FE code chưa migrate (review 2026-05-15 verify DebtManagerConsultingPerformanceTable.tsx:162 vẫn latest_consulted_at + format DD/mm/YYYY), gộp với BUG-PROD-001 thành 1 hotfix FE — format chốt "DD/MM/YYYY HH:mm" (ngày trước, giờ sau). Cleanup drift action table: BUG-PROD-003 row từ "Quyết định Option A/B/C" → "Dev fix per DEC-028 Option E" + assign Wave 1 owner. Wave 2/3 (security harden, formula reconcile, lint re-run) backlog riêng — chưa scope.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
BUG-PROD-005 status ⚠️ OPEN → 🟡 SCHEDULED Wave 1 — Resolution Plan APPROVED Day-0 deploy 4 indexes CONCURRENTLY | Prod Issues | BUG-PROD-005 · Resolution Log | BE, DBA |
BUG-PROD-003 re-affirm — DEC-028 LOCKED nhưng FE code chưa migrate; gộp với BUG-PROD-001 thành 1 Wave 1 FE hotfix; format chốt "DD/MM/YYYY HH:mm" | Prod Issues | BUG-PROD-003 | FE |
Action table cleanup — BUG-PROD-001 + BUG-PROD-003 gộp 1 row Wave 1 hotfix FE; BUG-PROD-005 row Wave 1 BE; QUESTION-PROD-002/003 đánh dấu ✅ Resolved (DEC-029/033); thêm cột Status để track phase | Prod Issues | III) Bảng action items | All |
sales-cskh-debt-handover — v2.0 → v2.1
Sales/CSKH Debt Follow-up & Handover v2.0 → v2.1 — Thêm BUG-PROD-005 (🔴 Critical, ⚠️ OPEN): Bảng "Hiệu suất Tư vấn" trên prod hiển thị "Lỗi kết nối" / query timeout. Root cause: 3/4 critical indexes Day-1 (DEC-034 LOCKED) chưa được tạo migration — task DB-02 trong dev-spec C11 chưa thực thi sau khi LOCK. Đề xuất Day-0: tạo migration add_debt_dashboard_indexes (SQL template sẵn ở dev-spec C9.2 line 796-810), CREATE INDEX CONCURRENTLY để không lock table. DEC-034 KHÔNG cần thay đổi.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm BUG-PROD-005 (Critical, OPEN) — Bảng "Hiệu suất Tư vấn" timeout do 3/4 indexes Day-1 chưa deploy migration; task DB-02 dev-spec C11 chưa thực thi | Prod Issues | BUG-PROD-005 · Resolution Log · Action items | BE, DBA |
sales-cskh-debt-handover — v1.2 → v2.0
Sales/CSKH Debt Follow-up & Handover v1.2 → v2.0 — Major Hardening Release giải quyết 7 GAPs nghiệp vụ ban đầu + 4 BUG-PROD + 3 QUESTION-PROD + 4 PDs từ AUDIT codebase và phản hồi QA prod check. Thêm 14 DECs (DEC-022..035), 4 FORMULAs mới (FORMULA-003 rewrite canonical, 006B customer-level aging, 007 service representative, 008 weighted % tham gia multi-order), A12.4 KPI × Role canonical, NTF-DEBT-BUCKET-ESCALATE template mới, API param view_role, query get_priority_debt_banner as-of NOW. Resolve PD-001 (default admin+it_leader), PD-002 (cron 7h00 sáng), PD-004 (index-first + gate Day-30), PD-005. DEC-035 — Hasura permission harden DEFERRED có điều kiện, REVISIT trước GA qua gate GO-008 Security (pen-test direct GraphQL).
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
DEC-022 Doanh thu ròng canonical SUM(actual_revenue) exclude wallet (supersede DEC-009 paid - refund) | PRD | Z1 Decision Log + A10 FORMULA-003 | BE, QA |
| DEC-023 + FORMULA-006B Customer-level aging bucket = max(overdue_days) — giải quyết KH có nhiều đơn ở nhiều bucket | PRD + Dev Spec | A10 FORMULA-006B + C3 FORMULA-006B | BE, FE, QA |
DEC-024 + A12.4 KPI × Role canonical Manager/BOD ẨN cột quy đổi, dùng raw aggregate. API param view_role mới | PRD + Dev Spec | A12.4 + C5.5 | BE, FE |
DEC-025 + DEC-026 Noti trigger >= inclusive + 4 re-trigger rules (daily/bucket/partial/settled) + NTF-DEBT-BUCKET-ESCALATE | PRD + UI Spec + Dev Spec | FR-009 + B4 Notification + C6.1 | BE, QA |
| DEC-027 + FORMULA-007 Service representative tie-break SCR-02 + multi-DV format | PRD + UI Spec + Dev Spec | A10 FORMULA-007 + SCR-02 columns + C3 FORMULA-007 | BE, FE, QA |
DEC-028 LOCKED Cột "Cuộc gọi" SCR-02 source = ecommerce_user.last_contacted_at từ app mobile (Option E) | PRD + UI Spec | Z1 DEC-028 + SCR-02 columns + B9 tooltip | FE, QA |
DEC-029 + FORMULA-008 Weighted % tham gia multi-order — giải quyết function search_report_debt_performance_consultation chỉ pick 1 reference_order | PRD + Dev Spec | A10 FORMULA-008 + C3 FORMULA-008 (CTE migration plan) | BE, FE, QA |
DEC-030/031 RESOLVED PD-001/002 Default grants admin+it_leader + cron 0 7 * * * (7h00 sáng — updated từ 17:05) | PRD + Dev Spec | Z1 + C6.1 | DevOps, BE |
| DEC-032 Tooltip "Doanh thu ròng" rewrite phân biệt "ghi nhận kế toán ≠ tiền thực thu" + sub-label cảnh báo | PRD + UI Spec | Z1 + KPI cards + B9 tooltip | FE |
DEC-033 Banner "Ưu tiên xử lý nợ" as-of NOW không phụ thuộc filter date + sub-label cảnh báo cam + query get_priority_debt_banner | PRD + UI Spec + Dev Spec | Z1 + Spec Priority Card Strip + C5.2/C5.3 | FE, BE |
| DEC-034 RESOLVED PD-004 Capacity Index-first Day-1 (4 indexes critical) + gate Day-30 cho snapshot Phase 2 | PRD + Dev Spec | Z1 + C9.2 Capacity Model + C7 indexes | DBA, TL |
| DEC-035 Hasura permission harden DEFERRED — risk accepted với mitigation, REVISIT trước GA via GO-008 | PRD + Go-Live | Z1 + E1 Release gates | TL, Security |
BUG-PROD-001..004 + 3 QUESTION-PROD resolved — date format mm→MM, KPI unit "Triệu"→"đ", Cuộc gọi source, tooltip wording, Banner as-of, "% tham gia" intent | Prod Issues 🆕 | Toàn file | All |
| GO-008 Security gate trước GA — Pen-test direct GraphQL access từ Sale/Manager → verify không leak cross-staff/branch/tenant | Go-Live | E1 Release gates | TL, Security, QA |
2026-05-14
Publish — Cập nhật
prepaid-card-analytics-tab — v3.14 → v3.15
Prepaid Card Analytics Tab v3.14 → v3.15 — DEC-T09: khóa nghĩa canonical cho FORMULA-013 "Chu kỳ trung bình" = Customer-weighted mean (Option 2), KHÔNG phải Interval-weighted (Option 1), đồng thời tách số dư ví khách hàng thành Dư ví DIVA / Dư ví KM. Lý do chọn Option 2: use case PRD Section 5.5 = "timing nhắc nhở khách điển hình" → cần per-customer behavior; Option 1 bị bias bởi power user. V5 blocker mở rộng yêu cầu BE confirm source exact cho 2 field balance split trong wallet_balance_result/wallet_balance và reconcile với total balance.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| DEC-T09 mới — FORMULA-013 = Customer-weighted mean (Option 2), 2-step formula (per-customer AVG → AVG across customers), scope cycle-closes-in-period + cap 180d. Defer Phase 3+: MEAN → MEDIAN nếu data skew | PRD | Z3 Technical Decisions | All |
| FORMULA-013 rewritten — thêm method canonical, scope, outlier cap 180d, biến số, ví dụ so sánh Option 1 (sai 154d) vs Option 2 (đúng 178d), 4 edge cases (KH 1 đơn, KH outlier hết, không KH nào ≥2 đơn, trend so kỳ trước) | PRD | FORMULA-013 | BE, QA |
| A9 Glossary — "Chu kỳ trung bình" thêm cụm "trung bình theo khách (mean of means)" + cap 180d + counter-example "≠ Interval-weighted AVG (bị bias bởi power user)" | PRD | A9 Glossary | FE, UI/UX |
MV mv_prepaid_customer_stats — thêm CTE per_customer_cycle (LAG over paid_at, cap > 180d) + 3 field per-customer (avg_cycle_days, cycle_count, last_cycle_closing_at) + partial index idx_..._cycle_closing | Dev Spec | §9.2 MV SQL Definitions | BE |
Aggregate query SQL — canonical query cho KPI Section 5.5 (mean of pre-computed avg_cycle_days WHERE cycle_count >= 1, half-open date range, branch scope), Hasura action binding, display rule — khi contributing_customers = 0 | Dev Spec | §9.2 sau MV definition | BE, FE |
| Section 5.5 table + §16.24 tooltip — update formula cell ref FORMULA-013, tooltip thêm cụm "trung bình theo khách" + cap 180d | Dev Spec | §5.5, §16.24 | FE |
| ui-spec §5.5 tooltip — thêm câu giải thích phương pháp tính + cảnh báo "KHÔNG cộng dồn tất cả khoảng để tránh KH nạp nhiều lần đè kết quả" | UI Spec | §5.5 Chỉ số hành vi khách hàng | UI/UX, FE |
QA TC-CT-CYCLE 5 sub-case — rewritten với 5 case: (01) Customer-weighted không bias bởi power user (assert 178d không phải 154d) · (02) Outlier cap > 180d bị loại · (03) KH 1 đơn duy nhất bị exclude khỏi denominator · (04) Edge case không KH nào ≥2 đơn → display — · (05) Cycle-closes-in-period scope | QA Test Plan | TC-CT-CYCLE | QA |
Sub-tab Khách hàng — Tách cột Dư ví thành Dư ví DIVA + Dư ví KM; bảng KH 12 → 13 cột; risk highlight theo tổng DIVA + KM > 5tr | PRD · UI Spec · Dev Spec | US-3.2 · Column config · Customer table contract | FE, BE, QA |
V5 blocker mở rộng — BE phải confirm source exact cho wallet_balance_diva và wallet_balance_km trong wallet_balance_result/wallet_balance, đồng thời reconcile với total balance | Handoff · Plan | F4.2 · GraphQL query examples | BE, TL |
2026-05-13
Publish — Thêm mới
ma-quay-thuong-hoa-don
Mã quay thưởng theo hóa đơn v1.0 — New
Sự kiện quay thưởng cho khách hàng spa: mỗi printed receipt (gộp nhiều order trong ngày) có thực thu ≥ 10tr (đã loại wallet + wallet_promotion) sinh mã quay thưởng QT-XXXX-YYYY (Crockford base32, format 12 ký tự). Mã in trực tiếp trên hóa đơn (cả A5 + A80 paper size). Admin xuất Excel theo ngày để tổng hợp danh sách KH có mã.
| File | Nội dung |
|---|---|
| PRD (onepage) | Spec gộp: Quy tắc nghiệp vụ, DB schema lottery_code, Event handler Hasura trên print_invoice, Print template với 4-layer migration guard (anchor-aware), Excel export via export-api, Codebase findings (12 mục verify), Checklist công việc đầy đủ DB/BE/FE/QA/DevOps |
Highlights kỹ thuật:
- Reuse
print_invoice.actual_revenueđã loại wallet sẵn (print_invoice_preview.go:413-416) — không tự SUM filter - Event trigger mới trên
print_invoice(chưa có trigger nào) — fire khiactual_revenuehoặcdisabledthay đổi - Migration update template với 4-layer guard: filter
name = 'invoice_template'+ idempotent + PRE-CHECK anchor + assertaffected == target_missing(phòng PGREPLACEsilent no-op) - Excel export qua Hasura action
lotteryExporttrỏ{{EXPORT_BASE_URL}}/actions(export-api có sẵn FileClient) - Backend string-template
strings.ReplaceAll(KHÔNG phải Gotext/template) — BE pre-build HTML quabuildLotterySectionHTML()rồi replace 1 placeholder{{ .lottery_section }}
2026-05-12
Publish — Cập nhật
fix-bao-cao-doanh-so-chu-ky-wording-filter — v1.0 → v1.1
Fix wording + filter status + BUG format + TZ — Báo cáo Doanh số/Thực thu & Chu kỳ khách hàng v1.0 → v1.1 — Bổ sung 1 BUG P0 (format *_amount_rate hiển thị VND thay vì %) + 1 SQL TZ fix (đồng nhất AT TIME ZONE thay cho + INTERVAL '7 hour' trong convertion_visits_cte)
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
🐛 BUG P0 — FR-008 Fix format *_amount_rate: FE isAmount match lỏng (key.includes("amount")) bắt nhầm telesale_amount_rate/crm_amount_rate → card hiển thị 0đ, "Tăng 4đ" thay vì 4,00%, "Tăng 4%". Dùng allowlist tường minh | PRD | FR-008 + C3.1.b | FE |
FR-009 — Thống nhất TZ trong SQL search_dashboard_telesale_amount: convertion_visits_cte chuyển + INTERVAL '7 hour' → AT TIME ZONE 'Asia/Ho_Chi_Minh' để đồng bộ với all_visits (cùng cột visit_date). Tránh hiếm trường hợp conversion_rate > 100% ở biên ngày | PRD | FR-009 + C6 | BE SQL |
DEC-T06/T07 + DEC-007/008 — 4 quyết định mới: allowlist isAmount, đồng nhất AT TIME ZONE, tooltip card 2 nói rõ "bao gồm đơn còn công nợ", BUG P0 nâng severity package | PRD | Z1 Decisions + Z3 Decisions | All |
TC-10/11/12 — Test cases mới: TC-10 verify card 3/5 hiển thị %, TC-11 regression card 1 vẫn đ, TC-12 verify conversion_rate ≤ 100% ở biên ngày | PRD | D) QA Test Cases | QA |
Tooltip conversion_rate thêm clarification: "phát sinh DS = đã chốt đơn (total > 0); bao gồm cả đơn còn công nợ chưa thanh toán" — clarify is_zero_order không check paid_amount | PRD | C2 i18n + C3.1.a | FE/Content |
| index.md — Update findings table (thêm row B0 BUG P0 + T1 SQL TZ), Components/Files (thêm migration mới), Quick links (thêm BE SQL Dev role), Lịch sử thay đổi v1.1 | index.md | — | All |
prepaid-card-analytics-tab — v3.13 → v3.14
Prepaid Card Analytics Tab v3.13 → v3.14 — 3 finding lớn: (A) Wallet pool chung per-customer → bỏ tab "Lịch sử sử dụng" khỏi expanded row đơn nạp (DEC-T07). (B) Commission source = invoice_commission, chỉ 1 status thực tế → bỏ cột "Trạng thái" tab Hoa hồng + rewrite query KPI (DEC-T08). (C) Alert Box UX redesign rich context — UI cũ chỉ có nút [Xem] generic + 1 dòng metric → fail context. Redesign 4 lớp (SLA / metric+trend / suggested action / primary verb-button), banner top mandatory sau navigate, sort override (DEC-U13). Task chưa code, sửa spec lúc này là cleanest.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| DEC-T07 mới: Wallet pool chung per-customer, không track per-card. Bỏ tab "Lịch sử sử dụng" khỏi expanded row đơn nạp. Defer FIFO lot accounting Phase 3+ | PRD | Z3 Technical Decisions | All |
DEC-T08 mới: Commission source = invoice_commission (KHÔNG phải transaction_request_user). Chỉ 1 status "Đã chi" (invoice_status='invoice_completed') — codebase không có pending/cancel. Refund = transaction_request riêng behavior_id='refund_commission' amount âm. Tab Hoa hồng bỏ cột "Trạng thái" | PRD | Z3 Technical Decisions | All |
| US-2.2 AC: 3 tab → 2 tab + tab Hoa hồng bỏ "trạng thái" | PRD | §4.2 Epic Giao dịch | FE, QA |
FORMULA-008 Hoa hồng rewritten: source invoice_commission, thêm gross/net split (net = gross − SUM(ABS(refund_commission))) | PRD | FORMULA-008 | BE, QA |
§4.5 Expanded Row wireframe ASCII: 3 tab → 2 tab, bỏ [Lịch sử sử dụng] | UI Spec | §4.5 | FE, UI/UX |
Tab Hoa hồng wireframe (Sub-tab Tài chính): bỏ cột "Trạng thái" + thêm row refund âm với badge ↩️ Hoàn HH + bỏ "Chờ ⏳" trong copy | UI Spec | Sub-tab Tài chính §6.x | FE, UI/UX |
§4.3 Expanded row spec: 3→2 sections, bỏ query transaction_request WHERE order_id = ?. Tab Hoa hồng đổi sang query invoice_commission | Dev Spec | §4.3 | BE, FE, QA |
§6 KPI table + §9 MV LATERAL + §10 Index: Đổi source query Hoa hồng từ transaction_request_user → invoice_commission. MV mv_prepaid_staff_stats thêm LATERAL cho refund. Index mới idx_invoice_commission_order + idx_txreq_refund_commission_order | Dev Spec | §6, §9, §10 | BE, DBA |
| §16.6 Xoá section "Cột expanded row — Lịch sử sử dụng". Cột expanded row Hoa hồng: bỏ "Trạng thái", thêm "Loại" (Đã chi / ↩️ Hoàn HH) | Dev Spec | §16.6 | BE, FE |
| §16.1 Tooltip + §16.7/16.8/16.10/16.14 Cập nhật mô tả + công thức cột Hoa hồng theo source mới | Dev Spec | §16.x | BE, QA, FE |
Component PrepaidAnalyticsTransactionRow.tsx: 3 sections → 2 sections, LOC ước tính 350 → 300 | Dev Spec | Component table | FE |
Task 12 Step 4 plan: tab Hoa hồng — source invoice_commission, refund row riêng | Plan | Task 12 Step 4 | FE |
| DEC-U13 mới: Alert Box rich context. 4 lớp (SLA label / metric+trend / suggested action / primary verb-button). Hover tooltip preview. Banner top mandatory sau navigate. Sort override per alert. Summary highlight nhóm tương ứng + grey out 40% nhóm khác. Phase 1 chỉ 1 primary action — secondary defer 1.x | PRD | Z2 UX Decisions | All |
US-1.2 Alert AC rewritten: 4 lớp rich context. Verb button thay nút generic [Xem]. Banner top spec. Sort override spec | PRD | US-1.2 | FE, BE, QA, UI/UX |
| §3.3 Alert Box redesign rich context: 4 lớp visual + hover tooltip + cell rendering example + bỏ secondary button | UI Spec | §3.3 Alert Box | FE, UI/UX |
| §10.1.3 Alert click matrix mở rộng: thêm 3 cột (primary action label + sort override + banner top template). Quy tắc chung mở rộng (payload schema + tooltip + banner + sort + aria) | UI Spec | §10.1.3 | FE, BE, QA |
| §6.4 Công nợ thêm wireframe landing-from-alert state: banner top + summary highlight + sort overdue DESC + filter chips | UI Spec | §6.4 | FE, UI/UX, QA |
| §3.3 Backend payload schema TypeScript đầy đủ: 5 field mới (sla_label / trend_value+prior_count / trend_direction / trend_compare_label / suggested_action_key / navigate.sort_override). Performance budget < 500ms | Dev Spec | §3.3 | BE, FE, QA |
2026-05-11
Publish — Thêm mới
fix-bao-cao-doanh-so-chu-ky-wording-filter
Fix wording + filter status — Báo cáo Doanh số/Thực thu & Chu kỳ khách hàng v1.0 — Fix
Audit ra 3 cảnh báo cho 2 báo cáo dashboard
/r/reports/actual_revenue_report_group+/r/reports/customer_cycle_report_group. C1 fix filter status (loại đơnorder_new/prepaid_newchưa thanh toán). C2 giữ nguyên (prepaid = đã mua, có thu tiền). C3 chỉ document filter ngày khác nhau. Kèm 7 wording fix tooltip + label choconversion_rate/Telesale/CRM + đổi card "Số lượng khách bắt đầu mua" → "Số khách có phát sinh đơn trong kỳ". Số7.281trên báo cáo Chu kỳ sẽ giảm sau fix C1 — chạy SQL kiểm chứng (Phụ lục C-1) trước khi triển khai.
| File | Nội dung |
|---|---|
| PRD / Bug Spec | 3 cảnh báo + 7 wording fix + 9 TCs + 6 quyết định business + 5 quyết định kỹ thuật |
knowledge / giải-thích-báo-cáo-doanh-số-thực-thu
Knowledge note — Giải thích báo cáo Doanh số/Thực thu cho BoD — Knowledge
Knowledge note dành cho BoD/PO/Manager: cách đọc chỉ số Tỉ lệ khách phát sinh doanh số = 35,33% trên dashboard. Phân biệt 3 góc nhìn (theo lượt 35,33% vs theo khách distinct ~40,17%), đối chiếu chéo với báo cáo Chu kỳ khách hàng (
7.281 khách có đơnvs18.126 khách ghé). Cảnh báo không phép trừ trực tiếp giữa số visit và số order. Đề xuất bổ sung 2 cột "Lượt có phát sinh đơn" + "Lượt ghé không mua" vào dashboard.
fix-bao-cao-doanh-thu-thuc-te
Fix Báo cáo Doanh thu thực tế (5 bug logic + performance) v1.0 — Fix
Bug ticket P1 cho Báo cáo Doanh thu thực tế (
/r/reports/actual_revenue_report_group): AOV hiển thị tổng thay vì trung bình, tooltip so sánh period với chính nó,Δ% = 0%nhưngΔ abs = +X Triệu, cột tháng đang diễn ra không có chú thích partial, toàn report load 5-9s. Ảnh hưởng 3 chart + 1 bảng. Spec đã chốt 6 quyết định và sẵn sàng giao dev.
| File | Nội dung |
|---|---|
| PRD / Bug Spec | 5 bug + root cause + AC + 17 TCs + UI Spec (B1-B6) + 6 quyết định chốt |
Publish — Cập nhật
fix-bao-cao-doanh-thu-thuc-te — v1.2 update
Fix Báo cáo Doanh thu thực tế v1.1 → v1.2 — QA review iteration: downgrade BUG-06 → DISCOVERY, split BUG-05 AC theo lazy-load, fix index stale
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Downgrade BUG-06 → NEEDS DISCOVERY — verified mẫu số là bảng fund f (KHÔNG phải fund.payment như đã đoán); cần reconciliation invoice ↔ fund trước khi chốt fix | PRD | Section 2 | BE, DBA |
| Rollback Q7 từ "CHỐT Option B" → "PENDING DISCOVERY" với 3 giả thuyết H1/H2/H3 + reconciliation SQL gợi ý | PRD | Section 6 | BE, DBA, PO |
Split BUG-05 AC theo lazy-load — initial load (overview + 3 chart) tách riêng khỏi expanded table (sau user click); verify TableDetailActualRevenue.tsx:58 query pause: true | PRD | BUG-05 | BE, FE, QA |
| Thêm TC-11b/11c — verify bảng vẫn lazy-load, không regression eager | PRD | Section 5 | QA |
| Cập nhật TC-18/19/20 — đánh dấu PENDING DISCOVERY (chưa assign cho QA) | PRD | Section 5 | QA |
| Status banner per-bug — table rõ ràng Ready/Blocked/Discovery cho từng bug, fix mâu thuẫn ready-for-dev | PRD | Banner top | All |
Fix index stale (P1 QA review) — 5 bug→6 bug, 17 TCs→22 TCs, anchor _2-danh-sach-loi-5-bug → _2-danh-sach-loi-6-bug | Index | Frontmatter + table + quick links | All |
Fix UI Spec typo (P2 QA review) — DD/YYYY → MM/YYYY cho monthly compare header | PRD | Section 4B | Designer, FE |
fix-bao-cao-doanh-thu-thuc-te — v1.1 update
Fix Báo cáo Doanh thu thực tế v1.0 → v1.1 — Thêm BUG-06 telesale + QA review fixes
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Thêm BUG-06 — telesale_amount_rate mismatch dimension (tử "doanh số" / mẫu "thực thu") | PRD | Section 2 — Danh sách lỗi (6 BUG) | BE, DBA, QA |
| Thêm Q7 + Q8 — chốt fix Option B + audit data quality telesale (ticket Operations riêng) | PRD | Section 6 — Confirmed Decisions | All |
| Thêm TC-18/19/20 — telesale rate tests (verify, cross-check, regression Metric 2) | PRD | Section 5 — Test Cases | QA |
| Sửa anchor links — bỏ emoji/em-dash khỏi headings để VitePress slug ổn định (QA review P1) | PRD | TOC + headings | All |
| Sửa TC-10 — single expected khớp Q4 chốt (ẩn hẳn ngày tương lai, không có placeholder) | PRD | Section 5 | QA, FE |
| Clarify status — BE READY-FOR-DEV; FE BLOCKED đến Designer sign-off Section 4B | PRD | Banner top | FE, Designer |
| Đổi complexity M → S + ghi rõ "Quick Fix compact package" + audit fail prevention | Index | Frontmatter | All |
sales-cskh-debt-handover
Sales/CSKH Debt Follow-up & Handover v1.0 — Enhancement
Public reader/execution pack cho tính năng quản lý công nợ Sales/CSKH, bàn giao khách hàng, daily alert, follow-up và mobile reuse. Internal artifacts được giữ tại
diva-group.
| File | Nội dung |
|---|---|
| Decision Brief | Tóm tắt 5 phút, scope lock, decisions, risks |
| PRD | Requirements, formulas, glossary, traceability |
| UI Spec | As-is/delta UI, states, permissions, copy |
| Dev Spec | API/action/data/security/tasks |
| QA Test Plan | Test matrix, seed data, entry/exit |
| Go-Live Checklist | Release gates, deploy order, rollback |
| Handoff | RACI, timeline, blockers |
sales-cskh-debt-handover — v1.2 update
Sales/CSKH Debt Follow-up & Handover v1.1 → v1.2 — Align UI spec theo FE code sau pull
| Thay đổi | File | Ảnh hưởng |
|---|---|---|
Pull diva-admin dev2025 và thêm FE Code Baseline cho các màn debt manager/settings hiện tại | UI Spec | UI/UX, FE, QA |
Cập nhật quyền UI theo code: Xuất XLSX render bằng debt_consulting_performance.approve hoặc debt_detail.approve; tạo lịch nhắc render bằng debt_detail.create | UI Spec | FE, QA |
Cập nhật SCR-05 Settings: dirty-state Đặt lại/Áp dụng, Thêm thiết lập chi nhánh, duplicate-branch guard, soft-delete cấu hình chi nhánh và history copy | UI Spec | FE, QA |
sales-cskh-debt-handover — v1.1 update
Sales/CSKH Debt Follow-up & Handover v1.0 → v1.1 — Figma UI handoff mapping
| Thay đổi | File | Ảnh hưởng |
|---|---|---|
| Bổ sung Figma SP-87 Design Reference, quy tắc Figma không tự mở scope khi chưa có Source of Truth/PRD decision | UI Spec | UI/UX, FE, QA |
| Map top-level Figma frames vào SCR/MOB: dashboard, công nợ, thống kê, lịch nhắc, handover, settings và mobile variants | UI Spec | UI/UX, FE, QA |
Tách thêm SCR-07 Lịch nhắc của tôi và SCR-08 Lịch sử bàn giao để cover Figma handoff và code hiện hữu | UI Spec | FE, QA |
chu-ky-khach-ghe-khong-mua — v2.8 update
Tab Chu kỳ khách ghé không mua v2.7 → v2.8 — Hybrid clarity tweak (Hướng A): info strip permanent + inline sub-text + 19 tooltip required + column rename T6. Driver: PO feedback "user không đánh giá được nhiều vì thông tin còn mờ hồ"
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm 4 DEC: DEC-027 umbrella, DEC-028 info strip permanent, DEC-029 sub-text + rename T6, DEC-030 tooltip 19 required | PRD | Z) Nhật ký quyết định | All |
| Thêm FR-007 Info strip luôn hiển thị (above filter bar, không dismiss, không localStorage) | PRD | A5) FR-007 | FE |
Thêm 8 sub-text inline dưới label cards/matrix + rename cột Tỷ lệ → % trên tổng (rename T6, chỉ tab mới — tab purchase giữ nguyên) | UI Spec | B2) SCR-01 wireframe | FE, UI/UX |
| B9 tooltip rewrite — gộp 19 required (7 v2.7 + 11 lift + 1 new popup Chi nhánh), bỏ phân tách Phase 1 + Backlog | UI Spec | B9) Tooltip dictionary | FE, QA |
| Thêm 5 TC mới: TC-020 info strip + a11y, TC-021 sub-text rendering, TC-022 column rename + regression tab purchase, TC-023 popup column tooltip, TC-024 19 tooltip full coverage | QA | D3) Test cases | QA |
Thêm 2 component FE (VisitNoPurchaseInfoStrip, LabelWithSubText) + 10 task FE-005..010 + QA-006..010 | Dev Spec | C11) Task breakdown | FE, QA |
| Thêm 8 implementation step (10-17) + 5 blocker mới + 8 DoD v2.8 | Handoff | 3) Implementation order | All |
2026-05-05
Publish — Cập nhật
chu-ky-khach-ghe-khong-mua
Tab Chu kỳ khách ghé không mua v1.2-sync → v2.7
Đồng bộ public package từ
diva-groupsau multi-perspective review và scope-drift review. Public docs giữ reader/execution pack; internal artifacts (EVIDENCE_PACK,SOURCE_OF_TRUTH) không còn nằm trong sidebar publish.
| Thay đổi | File | Ảnh hưởng |
|---|---|---|
Branch scope DEC-016 — dùng user.branches; user.branches=[] = no branch restriction; non-empty thì intersect input; tuyệt đối không dùng Actor.IsAdmin() vì Hasura action chạy role user | Decision Brief, PRD, Dev Spec, QA | BE, QA |
Order enum + detail scope fix — canonical canceled enum là order_canceled / prepaid_canceled; detail action nhận branch_ids để popup khớp matrix bucket | PRD, Dev Spec, QA | BE, QA |
| Tooltip + analytics scope cleanup — phase 1 chỉ bắt buộc core tooltip; tooltip mở rộng giữ làm backlog reference; analytics events là future candidates, không implement phase 1 | UI Spec, QA, Handoff | FE, QA |
| Public package cleanup — thêm Decision Brief public, cập nhật index v2.7, gỡ internal artifacts khỏi sidebar publish theo pipeline mới | Index, Decision Brief | All |
2026-05-04
Publish — Cập nhật
prepaid-card-analytics-tab
Prepaid Card Analytics Tab v1.1 → v3.4 — Major revision after 8 review rounds (L1-L8)
⏳ IMPLEMENTATION HOLD — TẤT CẢ 13 verification points (V1-V13) đều BLOCKER. Spec dùng cho review/discussion, KHÔNG được start implementation cho đến khi BE/Security/Ops confirm với evidence từ codebase.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Phase split: 6 sub-tab → 4 sub-tab P1 (Tổng quan · Giao dịch · Khách hàng · Tài chính). Marketing/Nhân viên defer P3+ TBD; Global Search defer P2 (DEC-B05) | PRD | Z1 + Section 6 Phase | All |
| Compare Mode toggle bỏ hoàn toàn — filter bar 3-element (Chi nhánh · Khoảng thời gian · Tìm kiếm) (DEC-U04, DEC-U05) | UI Spec · Dev Spec | Section 2.x | FE, BE |
Section 0 Schema Mapping mới — đối chiếu codebase: region_branch reuse, prepaid_value_into_wallet đã là line total (KHÔNG × quantity), product_id JOIN prepaid_card_view, order.total, parent_id IS NULL filter (Rule 0), invoice status filter (Rule 0a) | Dev Spec | Section 0 | BE |
MV topology v3: tách summary_daily → mv_prepaid_order_daily (order-level KPIs) + mv_prepaid_card_daily (card-level chart) để fix double-count total_collected. Phase 1 = 4 MVs (KHÔNG có staff/campaign/branch_flow) | Dev Spec · Plan | Section 9.1, 9.2 · Task 2 | BE |
| A10 FORMULA-001..018 single source trong PRD — 18 công thức canonical với rule (parent_id, không × quantity, payment_method filter). 5 formulas PROVISIONAL (FORMULA-003/004/005/005b/014) chờ BE evidence từ codebase | PRD | A10 | All |
| DEC-B06 PROVISIONAL: DT ghi nhận chỉ ví chính (KHÔNG tính ví KM) — đề xuất, chờ PO + Kế toán reconcile với báo cáo cũ. FORMULA-005b mới: KM đã sử dụng | PRD | Z1 DEC-B06 + A10 FORMULA-005, 005b | All |
RBAC v2 fine-grained 3 actions: view · export · view_full_phone (PII compliance). 1 permission export cho TOÀN BỘ tính năng xuất (DEC-U10). Helper API hasActionPermission chờ V6 confirm | PRD · Dev Spec | Section 5.3 · Section 2.5 | BE, Security, FE |
Sub-tab Khách hàng pure read-only — bỏ checkbox + bỏ HẲN bulk SMS/ZNS/Gán NV. Nút [📥 Xuất Excel] ở header bảng (DEC-U09) | UI Spec | Section 5.4 | FE |
| Sub-tab Giao dịch: 7 sum cards (+ Ví Diva + Ví KM), bảng 10 cột (gộp Loại+Tên thẻ với badge inline), 3 cột multi-line (Ngày TT/KH/NV) | UI Spec | Section 4 | FE |
| Sub-tab Khách hàng: đổi CLV Bar (4 metrics) → Chỉ số hành vi KH (3 metrics AOV-based). Phase 3+ có thể bổ sung CLV thật khi có data tích lũy | UI Spec · PRD | Section 5.5 · A10 FORMULA-011..013 | FE, PO |
| Charts time-series chỉ theo ngày — KHÔNG có toggle Tuần/Tháng. Range follow shared filter (DEC-U08) | UI Spec · PRD | Section 3.2 · DEC-U08 | FE |
Tổng quan UX cleanup: thêm [🔄 Tải lại], KHÔNG có button "Tải xuống tổng", KHÔNG có banner auto-insight (defer P3+), Tổng dư ví giữ 1 metric, format VND nhất quán, trend dynamic theo filter (DEC-U11) | UI Spec | Section 3.1 | FE |
Tab Công nợ: chỉ 1 nút [📞 Gọi] (TT/Ghi chú = OUT OF SCOPE Phase 1). Click Mã đơn navigate detail | UI Spec | Section 6.4 | FE |
Governance docs mới: decision-brief.md (5 phút onboarding), qa-test-plan.md (Mode B Large compliant), go-live-checklist.md (rollback runbook 5 scenarios), handoff.md (RACI + 8-week timeline) | Decision Brief · QA · Go-Live · Handoff | All | All team |
| HOLD gate V1-V13 — tất cả 13 verification points đều BLOCKER, không phân biệt P0/P1. Implementation HOLD đến khi BE/Security/Ops confirm evidence từ codebase. Verification spike + FE scaffold read-only được phép parallel | Handoff | F4 Internal Blockers | All |
prepaid-card-analytics-tab — v3.5 update
Prepaid Card Analytics Tab v3.4 → v3.5 — Add FORMULA-019 Period Comparison
Dev hỏi cách tính "kỳ trước" cho trend ↑↓%. Lock rule canonical trong PRD A10 single-source.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
FORMULA-019 Period Comparison mới — sliding N ngày cho rolling preset (today/yesterday/7d/30d/custom); cùng độ dài calendar cho this_month/this_quarter partial; full calendar cho last_month/last_quarter đã đóng. Edge cases: previous=0 → "—", timezone Asia/Ho_Chi_Minh, inclusive endpoints | PRD | A10 FORMULA-019 | All |
| DEC-U08 update — ref FORMULA-019 cho cách tính kỳ trước (trước đây chỉ note "dynamic theo filter") | PRD | Z2 DEC-U08 | FE |
Composable usePrepaidAnalyticsFilter — expose previousPeriod + trendLabel computed (pseudo-code 30 dòng trong plan) | Plan | Task 8 Step 1 | FE |
| Trend label dynamic ref FORMULA-019 ở 2 chỗ (Section 3.1 KPI Tổng quan + Section 4.3 Sum Cards Giao dịch) | UI Spec | 3.1, 4.3 | FE |
prepaid-card-analytics-tab — v3.6 update
Prepaid Card Analytics Tab v3.5 → v3.6 — Wave 14 cascade fix V9-V13 + DEC-U12 single search + Empty State v2
Post review (Tech Lead + PO + Vận hành): cascade chưa sạch sau v3.4 — V9-V13 BLOCKER mới khóa ở PRD A10 + SOT nhưng dev-spec/plan/QA/handoff/evidence vẫn để công thức cũ ở phần executable. Sweep toàn bộ + thêm 2 quyết định UX mới (DEC-U12 Single search + Empty State v2).
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| PRD A10.0 Canonical Wallet Table mới — bảng 5 hàng (Tiền thu / Ví Diva nạp / Ví KM nạp / Ví Diva dùng / Ví KM dùng) với cột Trạng thái/V-ref/Evidence + 4 forbidden derivations đã chứng minh SAI Review L8. Single source cho mọi document downstream | PRD | A10.0 | All |
| PRD L268-272 narrative fix — bỏ "Tiền thu = Ví Diva về số liệu" (sai khi discount/base≠sell). Refactor thành reference rõ vào A10.0 + 4 forbidden patterns | PRD | Section "Phân biệt Tiền thu vs Nạp ví" | All |
dev-spec §0 mapping reference_amount + wallet_promotion_amount → marked PROVISIONAL V11/V12 với cảnh báo rõ. Cảnh báo: mapping cũ "wallet_promotion_amount = ví KM đã dùng" đã được Review L8 chứng minh SAI | Dev Spec | Section 0 Schema Mapping | BE |
dev-spec L861-872 wrap SQL vi_diva = total_collected vào PROVISIONAL DO-NOT-IMPLEMENT block. Ghi chú công thức canonical đúng (SUM(parent_invoice.reference_amount)) chờ V9 | Dev Spec | mv_prepaid_order_daily Sum Cards section | BE |
dev-spec MV blocks PROVISIONAL — wrap per_customer_usage CTE + mv_prepaid_finance_daily cũ. Fix bug wallet_promotion_amount dùng làm "ví KM đã dùng": phải lấy reference_amount filter payment_method_id='wallet_promotion' (V12) | Dev Spec | mv_prepaid_customer_stats + mv_prepaid_finance_daily | BE |
dev-spec UI data contract tighten (Section 4.2 Sum Cards) — bỏ "default formula" fallback Tổng nạp ví − Ví KM, ref canonical table A10.0 only | Dev Spec | Section 4.2 | BE, FE |
plan.md Task 9 GraphQL aliases TBD — thêm 4 alias placeholder (total_vi_diva_napped · total_vi_km_napped · total_vi_diva_used · total_vi_km_used) chờ V9-V12. Cảnh báo KHÔNG được derive ở client | Plan | Task 9 | FE, BE |
DEC-U12 mới — Single search source — bỏ HẲN local search input ở mọi sub-tab (Giao dịch sẽ là 2 element: Loại thẻ + Trạng thái TT). Search dùng từ shared filter top, placeholder dynamic theo tab active, URL ?q= ở root persist cross-tab | PRD · UI Spec · Plan | DEC-U12 + Section 4.2 + Task 12 Step 1 | FE, UX |
Empty State v2 — 3 case detect priority: Loading skeleton → Error [Thử lại] → No-data thực sự (📭 + "CN này chưa có giao dịch...") → Filter quá hẹp (🔍 + counter + active chips clickable + PRIMARY [Đặt lại tất cả] + SECONDARY link). Counter sub-message từ baseline query, accessibility WCAG 2.1 AA full | UI Spec | Section 9.2 | FE, UX |
plan.md Task 19b mới — EmptyState.vue component + useFilterChips composable + 2-query pattern (count_filtered + count_base) cho 3 sub-tab có table. Step 0: pattern reuse check (CLAUDE.md rule) | Plan | Task 19b | FE |
plan.md Task 12 Step 1 — bỏ TransactionLocalFilter search input + NV bán + Mệnh giá range. Wire shared q vào GraphQL where._or 4 trường | Plan | Task 12 Step 1 | FE |
| QA entry gate V1-V8 → V1-V13 + thêm test seed mở rộng cho discount, base≠sell, parent/sub invoice, wallet vs wallet_promotion bucket, reconciliation 5 ngày sample | QA Test Plan | D5 Entry/Exit | QA, BE |
| Handoff V1-V7 → V1-V13 + V8-V13 detail per owner (BE Lead V8-V10/V12 · PO+Kế toán V11 · BE Lead+Kế toán V13). Critical path note V9-V13 = blocker lớn nhất | Handoff | F4.2 Internal Blockers | All team |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.6 chỉ làm cascade clean để khi BE confirm V9-V13, không còn đoạn SQL/code "rác" cần search lại.
prepaid-card-analytics-tab — v3.7 update
Prepaid Card Analytics Tab v3.6 → v3.7 — Wave 15 cascade fix Review L9 (6 finding)
Tiếp tục cascade fix sau v3.6: 6 finding mới phát hiện. P0: FORMULA-009 + dev-spec KM đã sử dụng đang dùng wrong field. P1: search drift, handoff stale numbers, ui-spec missing M/L sections, plan architecture cũ.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
PRD FORMULA-009 km_da_nap → PROVISIONAL V10 + đánh dấu công thức cũ topup − collected đã chứng minh SAI khi giá bán ≠ base/có discount/phụ thu, ref canonical SUM(parent_invoice.wallet_promotion_amount) | PRD | A10 FORMULA-009 | BE, Kế toán |
| PRD FORMULA-010 Lợi nhuận gộp PROVISIONAL — depends V10 (km_da_nap) | PRD | A10 FORMULA-010 | BE |
Dev-spec §6 KPI table fix — "KM đã sử dụng" REVERTED wallet_promotion_amount → reference_amount filter payment_method_id='wallet_promotion' (V12). "KM đã nạp" REVERTED topup−collected → SUM(parent_invoice.wallet_promotion_amount) (V10). Thêm cột V-ref + cảnh báo BE | Dev Spec | §6 KPI Source/Formula | BE |
| Single search drift sweep — PRD US-2.1, dev-spec §4.1, qa TC-TX-04, decision-brief P1, plan tree comment đều cập nhật DEC-U12 (3 element → 2 element, bỏ HẲN local search) | PRD · Dev Spec · QA · Plan · Decision Brief | All | FE, QA |
| Handoff stale numbers fix — "5 verify points" → "13" + version v3.6, "3 MVs" → "4 MVs P1 + 1 function", bulk actions defer note (DEC-U09 — Khách hàng read-only) | Handoff | Header + F3 Timeline | All |
| Plan.md architecture fix — "lazy-loaded child route" → "QTabPanels (DEC-T06)", "6 MVs + 2 functions" → "4 MVs P1 + 1 function", defer P2/3+ list rõ ràng | Plan | Header §1 Architecture | FE, BE |
| UI-spec M/L compliance — thêm 4 section bắt buộc: B-PRE Discovery & Pattern Reuse · B0.4 Field × Surface Matrix · B0.5 State × Screen Matrix · B-POST Verification & Validation | UI Spec | Pre §1 + Post §12 | FE, Designer |
| _consistency-matrix.md mới (internal — không sync lên dva-doc) — cross-doc index DEC × FORMULA × V-point × Surface, drift detection protocol | (internal) | — | All |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.7 = sweep round 2 sau v3.6. Spec hiện tại được mark M/L compliant, sẵn sàng pass VALIDATE/DELIVER khi BE/Kế toán/Security confirm V points.
prepaid-card-analytics-tab — v3.8 update
Prepaid Card Analytics Tab v3.7 → v3.8 — Wave 16 cascade fix Review L10 (5 gap + lint)
Sweep round 3 — review phát hiện cascade vẫn chưa sạch sau v3.7: SQL executable trong MV
mv_prepaid_order_dailyLATERAL aggregate vẫn dùngwallet_promotion_amountchowallet_promo_used(V12), tooltip dictionary user-facing vẫn giữ công thức cũ, handoff RACI/timeline còn 7 V points / 5 verify points, plan E2E walkthrough còn scope đã defer (Marketing/Staff/Global search).
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
dev-spec §9 LATERAL invoice aggregate fix — wallet_promo_used REVERTED wallet_promotion_amount → reference_amount filter payment_method_id='wallet_promotion' (V12). Thêm Rule 0a status filter (status='invoice_completed' OR status IS NULL) cho 3 SUM (total_paid + wallet_used + wallet_promo_used) — V13. Thêm cảnh báo PROVISIONAL inline | Dev Spec | §9 mv_prepaid_order_daily LATERAL | BE |
dev-spec §16.1 Tooltip dictionary sweep — sửa "DT ghi nhận" (bỏ + wallet_promotion_amount), "KM đã nạp" (REVERTED topup−collected → SUM(parent_invoice.wallet_promotion_amount)), "KM đã sử dụng" (REVERTED wallet_promotion_amount → reference_amount filter). Thêm "Ví Diva nạp" + "Ví KM nạp" hàng riêng + V-ref ⏳ markers | Dev Spec | §16.1 Glossary canonical | UI/UX, FE, QA |
| handoff F2 RACI — "7 V points — V1-V7 đều BLOCKER" → "13 V points — V1-V13 đều BLOCKER, V9-V13 = wallet semantics critical path". Thêm PO + Kế toán vào Responsible cho V11 | Handoff | F2 RACI Verification | All team |
| handoff F3 timeline W1 — "5 🔍 points" → "13 V points + 5 spike F4.3" + scaffold note (KHÔNG enable PROVISIONAL block đến khi V9-V13 unlock) | Handoff | F3 Timeline W1 | All team |
| plan.md Task 23 E2E walkthrough — sweep 7 sub-tab cũ (Marketing/Staff/Compare Mode/Global search) → 4 sub-tab P1. Thêm OUT OF SCOPE list rõ ràng (DEC-B05/U04/U08/U09/U12). Thêm Empty State v2 detect priority test + FORMULA-019 trend label test. Performance check thêm baseline count query | Plan | Task 23 Step 2-3 | QA, FE |
| Lint Vietnamese style — sửa 14 heading English-only trong qa-test-plan (D1/D1.2/D3/D3.1/D3.3/D5/D6) + go-live-checklist (E1/E2/E2.1/E2.2/E2.3/E2.4/E2.6/E3/E3.2/E4/E4.3/E5/E6) sang VN/song ngữ | QA · Go-Live | Various headings | Lint compliance |
| B-QUALITY mới — 23-criteria compliance check (21/23 ✅ + 2 ⚠️ parked với reason). Sign-off matrix spec-level cho PO/UX/TL/FE/QA | UI Spec | B-QUALITY (post B-POST) | All reviewers |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.8 = sweep round 3, cleanup cuối trước khi BE chạy 5 spike. Spec pass full M/L compliance (B-PRE/B0.4/B0.5/B-POST/B-QUALITY) + Vietnamese lint compliance.
prepaid-card-analytics-tab — v3.9 update
Prepaid Card Analytics Tab v3.8 → v3.9 — Wave 17 cascade fix Review L11 (2 gap cuối)
Cascade fix round 4 — review phát hiện 2 chỗ cuối còn dùng công thức cũ: tooltip Sub-tab Tài chính (§16.3) còn dùng
wallet_promotion_amountcho "KM đã sử dụng" vàNạp ví − Tiền thucho "KM đã nạp"; SOURCE_OF_TRUTH HOLD policy còn nói "7 V points / 8 V points" trái với V1-V13 ở phần trên.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
dev-spec §16.3 Tooltip Sub-tab Tài chính sweep — KM đã sử dụng REVERTED wallet_promotion_amount → reference_amount filter payment_method_id='wallet_promotion' (V12). KM đã nạp REVERTED Nạp ví − Tiền thu vào → SUM(parent_invoice.wallet_promotion_amount) (V10 — FORMULA-004 alias). Bổ sung warning forbidden derivation trong tooltip "Nạp ví" + ví dụ discount minh họa. Tất cả tooltip thêm V-ref ⏳ markers + Rule 0a status filter | Dev Spec | §16.3 Tooltip Tài chính | UI/UX, FE, QA |
| SOURCE_OF_TRUTH §4 HOLD policy (internal — không sync) — "7 V points" → "13 V points", "8 V points" → "13 V points (V1-V13)". Thêm V9-V13 critical path note + sign-off matrix per V (BE/Security/DBA/PO/Kế toán) + version bump protocol khi unlock (v3.x → v4.0 semantic break) | (internal) | §4 HOLD Policy | All team |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.9 = cascade clean cuối cùng. Spec hoàn toàn nhất quán cross-doc, sẵn sàng BE chạy 5 spike F4.3 unlock V9-V13.
prepaid-card-analytics-tab — v3.10 update
Prepaid Card Analytics Tab v3.9 → v3.10 — Wave 18 cascade fix Review L12 (2 column-mapping gap)
Cascade fix round 5 — review phát hiện 2 chỗ executable column-mapping còn dùng công thức cấm: §16.7 Customer table "Đã dùng ví" cộng
reference_amount + wallet_promotion_amount(V12), §16.8 Revenue table "KM đã nạp" derivetopup − collected(V10 forbidden). Đây là copy FE/QA dễ dùng làm source mapping.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
dev-spec §16.7 Customer table — cột "Đã dùng ví" REVERTED SUM(reference_amount + wallet_promotion_amount) → SUM(invoice.reference_amount) FILTER (payment_method_id IN ('wallet','wallet_promotion')) WHERE parent_id IS NULL AND Rule 0a (V11+V12 — PRD A10.0 hàng #4+#5). Cột "% Đã dùng ví" cập nhật numerator + cảnh báo KHÔNG dùng wallet_promotion_amount | Dev Spec | §16.7 Customer table | FE, QA, BE |
dev-spec §16.8 Revenue table — cột "KM đã nạp" REVERTED total_wallet_topup − total_collected → SUM(parent_invoice.wallet_promotion_amount) cho prepaid order (V10 — FORMULA-004 alias) + cảnh báo forbidden derivation. Cột "Hoa hồng" REVERTED dùng transaction_request_user.amount (KHÔNG aggregate từ mv_prepaid_staff_stats — MV này defer P3+). Cột "Lợi nhuận gộp" mark depends V10 | Dev Spec | §16.8 Revenue table | FE, QA, BE |
Assumption clarification L1822 — invoice.reference_amount + wallet_promotion_amount semantics rõ ràng: NẠP vs ĐÃ DÙNG, V-ref markers, enum đầy đủ payment_method_id, parent_id Rule 0, status Rule 0a (V13) | Dev Spec | §15 Assumptions | BE |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.10 = sweep round 5 (cascade clean tuyệt đối). Mọi reference đến công thức ví trong dev-spec đều bám PRD A10.0 canonical. Sẵn sàng BE chạy 5 spike F4.3 unlock V9-V13.
prepaid-card-analytics-tab — v3.11 update
Prepaid Card Analytics Tab v3.10 → v3.11 — Wave 19 cascade fix Review L13 (3 user-facing/executable gap)
Cascade fix round 6 — 3 chỗ còn dùng forbidden derivation
Nạp ví − Tiền thuở: (a) PRD A9 Glossary "bảng bắt buộc hiểu trước khi implement", (b) dev-spec L621 Công thức dòng tiền sample, (c) plan.md Task 13 FinanceKpiCards critical formula. Đây là 3 chỗ FE/QA/dev dễ copy nhất → quan trọng phải sạch.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
PRD A9 Glossary "KM đã nạp" REVERTED Nạp ví − Tiền thu → parent_invoice.wallet_promotion_amount (V10 — FORMULA-004 alias) + ví dụ discount minh họa cụ thể (thẻ 10tr giá 8tr discount, KM 2tr → derive cũ 4tr ❌, canonical 2tr ✅). A9 là bảng "bắt buộc hiểu trước khi implement" theo DEC-B03 — drift ở đây ảnh hưởng tất cả dev/QA | PRD | A9 Glossary | All |
dev-spec L621 Công thức dòng tiền sample REVERTED ví dụ Nạp ví (920tr) − Tiền thu vào (850tr) = 70tr → canonical SQL + ⏳ V10 marker. Note rõ giá trị 70tr là INPUT đã verify từ V10 (KHÔNG được derive). Forbidden derivation block đầy đủ với lý do + ví dụ phá vỡ giả định | Dev Spec | §6 Phase 1 cash flow sample | FE, BE, QA |
plan.md Task 13 Step 1 FinanceKpiCards REVERTED critical formula SUM(total_wallet_topup) − SUM(total_collected) → canonical SQL với 🔒 PROVISIONAL DO-NOT-IMPLEMENT block cho 2 card "KM đã nạp" + "Lợi nhuận gộp" đến khi V10 unlock. Scaffold render placeholder "—". Source mapped mv_prepaid_order_daily.total_vi_km_napped alias TBD post-V10 (Task 9) | Plan | Task 13 Step 1 | FE |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.11 = sweep round 6, tập trung 3 chỗ user-facing/executable nhạy cảm nhất (Glossary + sample + critical formula). Cross-doc grep cuối cùng: 0 dòng còn dùng forbidden pattern làm canonical. Sẵn sàng BE chạy 5 spike F4.3.
prepaid-card-analytics-tab — v3.12 update
Prepaid Card Analytics Tab v3.11 → v3.12 — Wave 20 Click Action Matrix canonical (Review L14, 4 navigation gap)
Cascade fix round 7 — 4 navigation/click contract gap đều là FE/QA blocker (dead click, không có oracle test): KPI matrix thiếu 4/8 cards, Mini Rankings không có destination contract, Alert chỉ map 2/5 loại, Cột Nhân viên link conflict với disabled rule. Build Click Action Matrix canonical: mỗi click có 5 cột (source · target · filter params · disabled rule · empty/error state).
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Section 10.1 Click Action Matrix mới — 7 sub-section canonical | UI Spec | Section 10.1.1 — 10.1.7 | FE, QA |
| 10.1.1 KPI Cards 8/8 (bù 4 thiếu: DT ghi nhận ⏳V11 · Tổng dư ví ⏳V5 · Công nợ · Tỷ lệ KH tái nạp) | UI Spec | 10.1.1 | FE |
| 10.1.2 Mini Rankings 3/3 — "Top NV giỏi" navigate Tài chính → Hoa hồng (KHÔNG sub-tab Nhân viên defer P3+) | UI Spec | 10.1.2 | FE |
| 10.1.3 Alert List 5/5 (bù 3 thiếu) + override date range rule cho alert lũy kế | UI Spec | 10.1.3 | FE |
| 10.1.4 Sub-tab Giao dịch cell click (Mã đơn / KH / NV disabled) | UI Spec | 10.1.4 | FE |
| 10.1.5 Sub-tab Khách hàng cell click (KH / SĐT mask copy) | UI Spec | 10.1.5 | FE |
| 10.1.6 Sub-tab Tài chính cell click (Mã đơn / Gọi / expand) | UI Spec | 10.1.6 | FE |
10.1.7 Disabled controls unified rule — visual + tooltip + aria + KHÔNG render <a href> ngay cả khi href="" + tabindex="-1" focus skip | UI Spec | 10.1.7 | FE, A11y |
| Cột Nhân viên L535 — render text plain Phase 1 (KHÔNG link), thống nhất với 10.1.7 disabled rule | UI Spec | §4.4 column 9 | FE |
| Mini Rankings L418 — ref Click Action Matrix 10.1.2 + tóm tắt 3 destination | UI Spec | §3.4 | FE |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.12 = thêm Click Action Matrix giúp FE/QA có oracle hoàn chỉnh test cross-tab navigation. Trước v3.12, FE phải tự đoán filter sau click; sau v3.12, mọi click đều có spec rõ source → target → params → disabled → empty.
prepaid-card-analytics-tab — v3.13 update
Prepaid Card Analytics Tab v3.12 → v3.13 — Wave 21 implementability fix Review L15 (2 gap)
Click Action Matrix v3.12 có structure đủ nhưng 2 row trỏ đến target chưa tồn tại Phase 1 (vi phạm DEC-U12 2-element local filter hoặc đến view chưa có). FE/QA copy spec sẽ phải tự thêm filter ngoài contract → drift. Fix: lock target thật, dùng surface đã có hoặc disable defer.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Top thẻ [Xem thêm] DISABLED Phase 1 — bỏ target tab=transactions&group=card (chưa có surface). Phase 1: nút disabled + tooltip "Xem đầy đủ Top thẻ ra mắt Phase 1.x" theo Section 10.1.7 unified disabled rule. Lý do: Phase 1 KHÔNG có view card-level ranking thật (Giao dịch group theo đơn, Tài chính → Tổng hợp DT group theo ngày, không cột Tên thẻ). Phase 1.x roadmap: thêm route ?tab=transactions&view=top-cards (full table: Tên thẻ · Loại · Số bán · DT · KM nạp · % so kỳ trước) | UI Spec | §10.1.2 + §3.4 | FE |
Alert "Thẻ giảm bán" REVERTED filter contract — bỏ card=<card_id> (Local Filter Sub-tab Giao dịch chỉ 2-element theo DEC-U12, không có card filter). Đổi sang shared q={prepaid_card.code} (DEC-U12 — scope shared search đã include prepaid_card.code per §4.2). Empty State render active chip [Từ khóa: "{card.code}" ×] | UI Spec | §10.1.3 | FE |
Plan Task 4 alert payload schema — compute_prepaid_alerts function PHẢI return prepaid_card.code (string ILIKE-friendly) cho alert "Thẻ giảm bán", KHÔNG return UUID card_id. 4 alert lũy kế (Đơn quá hạn / KH không dùng / KH VIP không hoạt động / Đơn quá hạn) return branch_id + override range last_365d. 2 alert kỳ (DT giảm / Thẻ giảm bán) giữ shared range | Plan | Task 4 Step 1 | BE |
| Section 3.4 Mini Rankings note + Section 4.4 column note sync với disable Top thẻ Phase 1 | UI Spec | §3.4 + §4.4 | FE |
⏳ IMPLEMENTATION HOLD vẫn duy trì — V1-V13 đều BLOCKER. v3.13 = sweep round 8, đảm bảo mọi target trong Click Action Matrix đều implementable trong Phase 1 (không vi phạm DEC-U12 + không trỏ đến view chưa tồn tại).
Publish — Cập nhật
vi-km-2
Ví Khuyến Mãi 2 (Promotion Wallet 2) — Readiness Pack 5 hạng mục pre-Day-0
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Idempotency Contract chi tiết: cách sinh payment_attempt_id (UUID v4 client), dedup window 7 ngày, distributed lock TTL 90s, cross-check verify chống bypass FE, 7 test scenario TC-IDEMPOTENT-01..07 | Dev Spec | C5.4.1 | BE, QA |
Capacity Model + Index Strategy chi tiết: ước lượng theo phân khúc spa (~336K lot/năm cho 100 spa active), 6 index DDL với CONCURRENTLY, performance target P95/P99, partition strategy khi > 5M dòng | Dev Spec | C9 NFR | TL, BE |
Metric Catalog đầy đủ: 23 metric (8 business + 6 reliability critical + 4 latency + 3 error rate) với threshold cụ thể, log query Loki/CloudWatch, Grafana dashboard skeleton 5 row, 5 runbook stub RUNBOOK-KM2-01..05 | Dev Spec | C10 | BE, Ops, QA |
| Migration Runbook minute-by-minute: Day-0 timeline 11 step T-30 → T+55, decision tree khi gặp lỗi, tiêu chí "đã deploy thành công" ký bởi TL+PO | Go-Live | E4.1, E4.2, E4.3 | Ops, TL |
| Sprint 0 Checklist 1 tuần kickoff: 7 task pre-Phase 1 (BE-001 grep + TL-001 idempotency review + cross-DB POC + TG-001 refund subtask + BE-002 invoice fix + capacity verify + monitoring instrumentation) với pass criteria + gate close TL ký | Handoff | Sprint 0 — Checklist 1 tuần kickoff | All |
Tổng spec từ 7,122 → bổ sung ~480 dòng readiness content. Package giờ có đủ Idempotency + Capacity + Monitoring + Migration runbook + Sprint 0 — đủ điều kiện kickoff Phase 1 với confidence cao.
2026-04-30
Publish — Cập nhật
vi-km-2
Ví Khuyến Mãi 2 (Promotion Wallet 2) UI Spec v1.6 → v2.0 + PRD v1.6 → v1.7
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Bổ sung B-PRE Discovery checklist (3 bảng) | UI Spec | B-PRE | All |
| As-Is UI Inventory mở rộng từ 9 → 32 dòng UI ID kèm Evidence file:line | UI Spec | B0.1 | FE, UI/UX |
| Thêm B0.4 Field × Surface (28 field × 12 cột) + B0.5 State × Screen (13 màn × 6 state) | UI Spec | B0.4 / B0.5 | FE, QA |
| Thêm B0.6-0.8 Wireframe Quality + Bilingual Pairing + Schema Cross-Check | UI Spec | B0.6 / B0.7 / B0.8 | FE, QA |
| Thêm B1.0 quick-scan CTA hierarchy 8 SCR | UI Spec | B1.0 | All |
| Mỗi SCR thêm B2.x.1A UX nguyên tắc + B2.x.2.0 Variant Matrix (6-11 variant) + B2.x.7B/C/D Form/Concurrency/Network + B2.x.8A Role × Variant + B2.x.10A Error Taxonomy | UI Spec | B2.1 → B2.8 | FE, QA |
| Thêm B5A Export Deep + B6A Copy Length Budget + B7A Analytics Schema + B8A/B/C Performance/A11y/Haptic | UI Spec | B5A / B6A / B7A / B8A-C | FE, QA |
| Thêm B-Microcopy / B-Voice / B-i18n / B-Versioning / B-Help | UI Spec | B-Microcopy → B-Help | UI/UX |
| Tình huống biên tổ chức 12 nhóm chuẩn G1-G12 (60+ case) + 44 case spa-context theo SCR | UI Spec | B-Tình huống | QA |
| Thêm B-POST verification (4 checkpoint) + B-QUALITY 45 rủi ro | UI Spec | B-POST / B-QUALITY | All |
| Tham chiếu UI Spec v2.0 mới — PRD content business không đổi | PRD | Lịch sử thay đổi | All |
| Tham chiếu UI Spec v2.0 mới — package readiness sẵn sàng bàn giao | Decision Brief | Header | PO/TL |
UI Spec từ 1,233 dòng → 2,920 dòng (gấp ~2.4 lần) với 203 section. Tất cả G3.7 cổng kiểm tra độ đầy đủ UI pass.
ho-so-benh-an
Hồ sơ bệnh án v1.5.10 → v2.4.0
Hardening toàn diện 3 vòng cho package phòng khám DL/TM: (1) đóng các lỗ hổng nhất quán cross-spec (trợ lý 6 bước, walk-in customer_id NOT NULL, luồng "Khách từ chối thủ thuật" DEC-024, rule câu xác nhận tự gõ DEC-021); (2) tách Permission Spec canonical riêng (permission-spec.md v1.0.0, P1-P12, 22 action × 9 role + resolver Go + 4 branch_mode + 5 portal + emergency governance + 44 TC-PERM-*); (3) thêm 2 file end-user (user-guide.md v1.0.0 cho 7 vai trò, print-design-spec.md v1.0.0 A4 mockup 7 biểu mẫu) + 7 variant per role cho SCR-01 + SCR-18 Compliance Audit Viewer.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Tách Permission Spec canonical (P1-P12: catalog 22 action × 9 role default seed + resolver Go signature + branch_mode + portal + cache TTL 60s + migration M101-M107 + field masking matrix + emergency override governance + Compliance UI + 44 TC-PERM-*) | Permission Spec | Toàn file (mới) | Security + BE + FE + QA + Compliance |
| Thêm User Guide cho 7 vai trò end-user + KH + 15 FAQ + roster hotline + onboarding tour 5-step | User Guide | Toàn file (mới) | BS, Y tá, Lễ tân, Sale, QL CN, Compliance, Admin/Ops |
| Thêm Print Design Spec PR1-PR9: A4 mockup chi tiết 7 biểu mẫu + versioning v1/v2 + retention 10 năm + PDF generation config | Print Design Spec | Toàn file (mới) | Designer + FE + Print/PDF service Dev + Legal |
| Bổ sung 7 variant wireframe per role cho SCR-01 (Variant A-G) + SCR-18 Compliance Audit Viewer + đổi B-PITFALLS thành B-QUALITY | UI Spec | B2.6) Variant per role, SCR-18, B-QUALITY | UI/UX + FE + QA |
Đóng các lỗ hổng UI ↔ PRD ↔ Dev: trợ lý 6 bước (5 cấu hình + Kiểm tra sẵn sàng) + walk-in customer_id NOT NULL + luồng "Khách từ chối thủ thuật" DEC-024 + rule câu xác nhận tự gõ DEC-021 (≥20 ký tự, từ khoá, chặn dán, audit nhịp gõ) | UI Spec, PRD, Dev Spec | SCR-04, SCR-05, SCR-08, FR-007, FR-011, C5.5A, C5.5B | UI/UX + FE + BE + QA |
Bổ sung action refuse_clinical_procedure (huỷ order_item + ghi sổ "Khách từ chối thủ thuật" + audit + NTF-14) + 5 cột mới clinical_record | Dev Spec | C4.0 enum, C4.8, C5.5B, C5.16 Trigger 4 | BE + DB |
Mở rộng FR-011 với 8 AC mới (AC-011.13..20) cho multi-role union + is_pos_only + branch_mode 4-state + cache TTL + migration backward-compat + Compliance UI | PRD | FR-011 AC-011.13..20 | PO + Security + BE + FE + QA |
| Bổ sung 9 TC mới (TC-030A/B/C/D rule câu xác nhận tự gõ + TC-090/A/B/C luồng từ chối thủ thuật + TC-NTF-14) + 44 TC-PERM-* dẫn xuất từ permission-spec P12 | QA Test Plan | D2.7, D2.11, D5.2 | QA |
| Thêm 5 blocker mới (B-16..B-20: permission seed migration, walk-in audit, SCR-18 timing, WS push infra, Permission Spec sign-off) + 4 RACI row mới (Permission Spec impl, SCR-18, User Guide, Print Design Spec) | Handoff | Section 3 RACI, Section 5.1 Blocker | PM + TL + Delivery |
| Cập nhật Decision Brief + Consistency Matrix với 3 file canonical mới + verify cross-spec section 8 (Walk-in flow), section 9 (Refuse procedure flow), section 10 (Permission spec cross-ref) | Decision Brief | Toàn file | PO + TL + Delivery |
tong-hop-tai-chinh-don-hang
Tổng hợp tài chính đơn hàng v1.1.1 → v3.1
Đồng bộ package theo UI Spec v3.1: bổ sung nguyên tắc UX bắt buộc, variant wireframes theo permission/state, Role×Variant matrix, và đổi phần rà soát rủi ro thiếu sót sang ngôn ngữ public-friendly để UI/UX/FE/QA triển khai thống nhất.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm Decision Brief vào docs public để có cửa vào package cho PO/TL/Sếp | Decision Brief | Toàn file | PO + TL + Delivery |
| Siết UI Spec với B2.1A nguyên tắc UX, B2.2 variant wireframes, B2.8A Role×Variant và B-QUALITY | UI Spec | B2.1A, B2.2, B2.8A, B-QUALITY | UI/UX + FE + QA |
| Đồng bộ PRD theo warning banner/design token intent và đơn đã hủy hiển thị theo đúng quyền | PRD | FR-001, FR-007 | PO + FE + QA |
| Đồng bộ test oracle cho đơn đã hủy, trạng thái thanh toán đủ và warning banner | QA Test Plan | TC-FR-001, TC-FR-007 | QA |
Cập nhật handoff/index theo checklist B-QUALITY và lịch sử thay đổi v3.1 | Handoff, Index | Cross-spec verification, Lịch sử thay đổi | All |
2026-04-29
Publish — Đồng bộ batch
cau-hinh-cham-cong-da-don-vi, redesign-tab-tu-van, chu-ky-khach-ghe-khong-mua, ltv-phase-1
Đồng bộ các package đang lệch giữa diva-group và dva-docs: publish mới cấu hình chấm công đa đơn vị, cập nhật redesign tab tư vấn theo B0 As-Is UI Inventory + Delta Contract, đồng bộ lại Chu kỳ khách ghé không mua khớp source v1.2, và cập nhật Handoff LTV Phase 1.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Publish mới package cau-hinh-cham-cong-da-don-vi với PRD cấu hình chấm công theo đơn vị cho Daisy và Phương Nam | Index, PRD | Tài liệu, A5, A10 | PO/BA + TL + FE + BE + QA |
Đồng bộ redesign-tab-tu-van lên public v1.2: bổ sung B0 As-Is UI Inventory + Delta Contract, khóa customer commission/affiliate/referral là KEEP và cập nhật QA scope guard | Index, UI Spec, QA, Handoff | B0, D1, Files | UI/UX + FE + QA |
Đồng bộ lại chu-ky-khach-ghe-khong-mua khớp source v1.2 trong diva-group, bỏ các banner publish-only đang làm public package lệch source | Index, SOURCE OF TRUTH (internal), PRD, Dev Spec, QA, Handoff | Lịch sử thay đổi, Canonical Decisions, D2 | PO/BA + TL + FE + BE + QA |
Cập nhật ltv-phase-1 Handoff với reference mới từ source; publish public giữ reference nội bộ ở dạng text để tránh link private/broken trong VitePress | Index, Handoff | Files, Lịch sử thay đổi | PM + TL + PO |
Publish — Cập nhật
ho-so-benh-an
Hồ sơ bệnh án v1.5.9 → v1.5.10
Biên tập lại văn phong UI/business theo tiếng Việt SaaS thẩm mỹ viện; chuẩn hóa thuật ngữ vận hành cho kiểm tra sẵn sàng, phân loại DV-KT, xem khẩn cấp, thông tin KH tự khai và tải scan; không đổi scope/FR/AC.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.5.10, cập nhật mô tả public, tính năng chính và lịch sử thay đổi theo package mới | Index | Mô tả, Tính năng chính, Lịch sử thay đổi | PO + UI/UX + FE + QA |
| Cập nhật SOURCE OF TRUTH: chuẩn hóa thuật ngữ vận hành, copy quyền, tải scan, xem khẩn cấp, kiểm tra sẵn sàng và cấu hình mẫu ban đầu | SOURCE OF TRUTH | Lịch sử thay đổi, Solution Lock | PO + TL + QA |
| Cập nhật PRD: biên tập văn phong UI/business và A9 Glossary cho kiểm tra sẵn sàng, phân loại DV-KT, xem khẩn cấp, thông tin KH tự khai và tải scan | PRD | Lịch sử thay đổi, A9 Glossary | PO + TL + FE + QA |
| Cập nhật UI Spec và QA: chuẩn hóa copy nút, trạng thái, tooltip, intake, tải scan, xem khẩn cấp và test oracle theo tiếng Việt SaaS thẩm mỹ viện | UI Spec, QA | B7, B9, D2 | UI/UX + FE + QA |
Publish — Cập nhật
vi-km-2
Ví Khuyến Mãi 2 (Promotion Wallet 2) v1.1 → v1.6
Đồng bộ package Ví KM2 mới nhất từ diva-group: bổ sung decision-brief, EVIDENCE_PACK, SOURCE_OF_TRUTH, go-live-checklist, nâng profile lên L, khóa Dynamic Permission v2, behavior refund_km2_wallet, FIFO/idempotency/expiry guards và readiness gates cho wallet/payment/report trước khi bàn giao team.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump public index lên v1.6, thêm full package map 9 file, cập nhật mô tả Ví KM2 theo wallet type VND_PROMOTION_2, FIFO deduction, Hoàn ví KM2 và Dynamic Permission v2 | Index | Tài liệu, Lịch sử thay đổi | PO/BA + TL + Delivery |
Thêm cửa vào package và canonical truth: scope lock, decision registry DEC-013..DEC-026, impact boundary, permission matrix và open decision PD-001 cho report dashboard | Decision Brief, Source of Truth, Evidence Pack | Tóm tắt 5 phút, Decision Registry, Ma trận Dynamic Permission v2 | PO + TL + BE + QA |
Cập nhật PRD v1.6: chốt Dynamic Permission v2, behavior refund_km2_wallet, Hoàn ví KM2 reuse Yêu cầu hoàn tiền hiện có, và traceability cho profile L | PRD | Z) Nhật ký quyết định, A5) Yêu cầu chức năng | PO + FE + BE + QA |
| Cập nhật UI Spec: mở rộng settings/prepaid/payment/customer/refund/report theo As-Is + Delta, thêm ma trận refresh quyền và copy/state tiếng Việt-first | UI Spec | B0, B1.6, B-FR012, B9 | UI/UX + FE + QA |
Cập nhật Dev Spec: thêm wallet_km2_lot, wallet_km2_lot_deduction, action FIFO/idempotency, scheduler expiry, refund request behavior và backend enforcement theo permission v2 | Dev Spec | C2, C3, C4, C5, C8, C11 | TL + BE + FE |
Bổ sung QA/Go-live/Handoff: test race condition, multi-payment, grant/revoke/portal/branch/API no-leak, seed disabled-by-default, rollback, monitoring và gates TG-001..TG-007 | QA Test Plan, Go-Live, Handoff | TC-PERM-*, E1/E2/E4, TG-001..TG-007 | QA + Ops + TL |
2026-04-28
Publish — Cập nhật
ho-so-benh-an
Hồ sơ bệnh án v1.5.8 → v1.5.9
Rà lại UI Spec theo Vietnamese UI Copy Contract: nội dung người dùng thấy dùng tiếng Việt tự nhiên cho trạng thái, hành động, loading/trống/lỗi/không có quyền; tiếng Anh chỉ giữ cho enum, key, API, event hoặc code cần Dev đối chiếu.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.5.9, cập nhật mô tả public, tài liệu UI Spec, tính năng chính và lịch sử thay đổi theo rule copy UI tiếng Việt | Index | Mô tả, Tài liệu, Tính năng chính, Lịch sử thay đổi | PO + UI/UX + FE + QA |
| Cập nhật UI Spec: thêm Vietnamese UI Copy Contract v1.5.9, đổi state/action/copy dictionary/wireframe/edge case sang tiếng Việt-first, giữ English ở enum/key/code để Dev đối chiếu | UI Spec | Quy tắc copy UI Việt Nam, B5, B6, B7, B8, B9, B-Wireframe, B-Tình huống biên | UI/UX + FE + QA |
Publish — Cập nhật
ho-so-benh-an
Hồ sơ bệnh án v1.5.7 → v1.5.8
Làm rõ trạng thái bàn giao sau review kỹ thuật: package đủ để team kickoff, estimate và chạy Phase 0/pre-req, nhưng chưa coi là full handoff complete hoặc ready build toàn bộ nếu thiếu Tech Lead/QA/stakeholder sign-off.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.5.8, cập nhật mô tả public và lịch sử thay đổi theo trạng thái kickoff/Phase 0/full build/go-live | Index | Mô tả, Lịch sử thay đổi | PO + TL + Delivery |
| Cập nhật Decision Brief: chốt rõ đủ giao team kickoff/estimate/Phase 0, nhưng Phase 1/full build chỉ nên bắt đầu sau TL + QA sign-off và P0 gate có owner | Tóm tắt quyết định | Trạng thái package, Tóm tắt 5 phút | PO + TL + QA |
Cập nhật Handoff: thêm mục 0) Trạng thái bàn giao v1.5.8, sửa Phase 0 thành C11-PREREQ-001..006, cập nhật Ripple/Traceability v1.5.8 và completion checklist | Handoff | 0, Thứ tự implement, Tiêu chí hoàn tất bàn giao | Delivery + TL + QA |
Publish — Cập nhật
tong-hop-tai-chinh-don-hang
Tổng hợp tài chính đơn hàng v2.3.2 → v2.4
Đồng bộ package theo Dynamic Permission v2: chuyển phân quyền tài chính từ role mapping cứng sang role_module.actions + portal + branch_mode, thêm action view_financial_summary / view_financial_pnl, view mode hidden/summary/full_pnl, backend least-data và QA grant/revoke/no-leak để POS/CRM/role khác có thể được mở quyền sau này qua Dynamic Permission.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v2.4, cập nhật mô tả public và lịch sử thay đổi package theo Dynamic Permission v2 | Index | Mô tả, Lịch sử thay đổi | PO/BA + TL + Delivery |
Khóa canonical truth mới: DEC-003 chuyển sang action view_financial_summary / view_financial_pnl, thêm DEC-018, ma trận module_id/service_order theo portal và view mode hidden/summary/full_pnl | SOURCE OF TRUTH | DEC-003, DEC-018, 5.2 | PO + TL + BE + QA |
Cập nhật PRD: FR-003 thành Dynamic Permission tài chính, thêm AC POS default hidden → grant summary → revoke, và cảnh báo lỗ chỉ cho view_financial_pnl | PRD | PD-002, DEC-003, DEC-018, FR-003, FR-015 | PO + FE + BE + QA |
Cập nhật UI Spec: thêm ma trận Dynamic Permission, liên kết màn Dynamic Permission hiện có, view mode full_pnl/summary/hidden và hành vi sau grant/revoke/refetch | UI Spec | SCR-01, Ma trận Dynamic Permission, B-Tình huống biên | UI/UX + FE + QA |
Cập nhật Dev Spec: seed module_permission_action, extend FE permission constants, backend tự resolve effective permission và trả least-data theo view mode | Dev Spec | C2, C4, C5, C6, C8 | TL + BE + FE |
| Cập nhật QA/Go-live/Handoff: thêm TC-018..020 cho POS grant/revoke, portal split, API no-leak, go-live gate permission actions và blocker seed Dynamic Permission | QA Test Plan, Go-Live, Handoff | TC-003, TC-018..020, E1/E3/E4, BLK-002 | QA + Ops + TL |
Publish — Cập nhật
ho-so-benh-an
Hồ sơ bệnh án v1.5.6 → v1.5.7
Bổ sung Ma trận ranh giới ảnh hưởng cho feature lớn Hồ sơ bệnh án: phân loại rõ module ảnh hưởng trực tiếp/gián tiếp/không ảnh hưởng Day-1, thêm guard và smoke regression bắt buộc trước sprint planning/go-live để chống scope creep và regression ngoài module.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.5.7, cập nhật mô tả package, reading time và lịch sử thay đổi public theo Ma trận ranh giới ảnh hưởng | Index | Mô tả, Tính năng chính, Lịch sử thay đổi | PO + TL + Delivery |
Khóa canonical truth mới: thêm DEC-044 và mục 2.1 để phân loại module trực tiếp/gián tiếp/không ảnh hưởng, quy định owner/task/test/guard/smoke regression theo từng nhóm | SOURCE OF TRUTH | 2.1, DEC-044 | PO + TL + QA |
| Cập nhật Decision Brief và PRD: thêm bản đồ ảnh hưởng rút gọn cho reader, PRD A12 liệt kê module trực tiếp, gián tiếp, không ảnh hưởng Day-1 và guardrail sản phẩm | Tóm tắt quyết định, PRD | Bản đồ ảnh hưởng, A12 | PO + TL + UI/UX + FE + BE + QA |
Cập nhật Dev Spec: thêm C2.4 Hợp đồng ảnh hưởng liên feature và C11-PREREQ-006 để TL/QA/BE/FE audit ranh giới scope trước sprint planning | Dev Spec | C2.4, C11.0 | TL + BE + FE + QA |
| Cập nhật QA/Go-live/Handoff: thêm D6 regression theo ranh giới ảnh hưởng, TC-15/BR-14 go-live gate và blocker B-15 nếu thiếu sign-off/owner smoke module không ảnh hưởng | QA Test Plan, Go-Live, Handoff | D6, E1.2, E1.3, B-15 | QA + Ops + TL |
Publish — Cập nhật
ho-so-benh-an
Hồ sơ bệnh án v1.5.5 → v1.5.6
Đồng bộ package Hồ sơ bệnh án theo Dynamic Permission v2 mới: quyền runtime không hard-code theo role, mà resolve theo role_module.actions, portal, branch_mode, is_pos_only và backend least-data; bổ sung coverage grant/revoke/portal split trước khi giao team triển khai.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.5.6, cập nhật mô tả package, reading time và lịch sử thay đổi public theo Dynamic Permission v2 | Index | Mô tả, Tính năng chính, Lịch sử thay đổi | PO + TL + Delivery |
Khóa canonical truth mới: thêm DEC-043, ma trận Module / Portal / Action / Default seed / Dynamic override / View mode, hard policy Sale không override tầng 3 và backend không tin view_mode từ FE | SOURCE OF TRUTH | DEC-043, Dynamic Permission v2 — ma trận canonical | PO + TL + BE + QA |
| Cập nhật PRD: FR-011 chuyển role matrix thành default seed, thêm action contract và AC-011.8..12 cho grant/revoke, portal split, branch scope và backend resolver; FR-016..019 bổ sung action-gated behavior | PRD | FR-011, FR-016, FR-017, FR-018, FR-019, A11 | PO + BE + FE + QA |
| Cập nhật UI Spec: B5 thành ma trận Dynamic Permission v2 theo action/portal, mô tả reuse màn Dynamic Permission, default seed theo vai trò và hành vi UI sau grant/revoke/refetch | UI Spec | B5, B5.1, B5.2, B5.3, B5.4 | UI/UX + FE + QA |
Cập nhật Dev Spec: thêm catalog seed module_permission_action, FE ClinicalPermissionAction, backend ResolveClinicalPermission, hard deny Sale tầng 3 và task Phase 4 cho grant/revoke/portal split | Dev Spec | C1, C8.0, C11.4, C12 | TL + BE + FE + QA |
| Cập nhật QA/Go-live/Handoff: thêm TC-052A..052F, TC-085B, TC-7A, seed user theo portal/branch_mode/action, blocker B-12A và completion checklist v1.5.6 | QA Test Plan, Go-Live, Handoff | D2.11, D2.16, D3.4, D5, E1.2, B-12A | QA + Ops + TL |
Publish — Cập nhật
ho-so-benh-an
Hồ sơ bệnh án v1.1 → v1.5.5
Đồng bộ package Hồ sơ bệnh án theo skill PO/BA + review đa góc nhìn mới nhất: thêm decision-brief, mở rộng vận hành thật, khóa raw clinical access, live gate theo publication, form write qua action validate, siết QA/go-live gate, áp B0 baseline UI hiện tại, chuẩn hóa flowchart/state table tiếng Việt-first và bổ sung độ bao phủ L/Epic cho UI spec trước khi giao team.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.5.5, thêm decision-brief.md, cập nhật mô tả package, reading time, tag và lịch sử thay đổi public | Index, Tóm tắt quyết định | Mô tả, Tài liệu, Lịch sử thay đổi, Tóm tắt 5 phút | PO + TL + Delivery |
Khóa canonical truth mới: no raw clinical runtime user, live gate theo clinic_module_publication, rollback/downtime dùng paper_fallback, OQ-3 chốt ICD-10 default | SOURCE OF TRUTH, EVIDENCE PACK | DEC-040, DEC-041, DEC-042, OQ-3, Biểu mẫu thực tế | PO + TL + BE + QA |
Cập nhật PRD theo contract v1.5.1: G5 pilot timeline, optional paper_diagnosis_code, allergy low-risk vẫn audit, và traceability FR-005..008 qua validate_clinical_form_data | PRD | A3, FR-005, FR-010, FR-016, A10, A11 | PO + BE + QA |
| Viết lại UI Spec theo template tiếng Việt-first: chuẩn hóa heading, table header, nhãn trạng thái, tooltip, wireframe, mobile/export và quyết định mở; English chỉ giữ cho code/path/event cần đối chiếu | UI Spec | B1, B1.1, B4, B6, B7, B8, B9, B-Wireframe, B-Mobile, B-Xuất dữ liệu, B-Quyết định UI còn mở | UI/UX + FE + QA |
Áp rule B0 As-Is UI Inventory + Delta Contract: lấy UI hiện tại làm baseline, đánh dấu block KEEP/UPDATE/NEW/HIDE/REMOVE, chốt REMOVE = không có nếu thiếu Decision Log/FR/PO approval | UI Spec | B0, B2, Đầu vào chuẩn, Lịch sử thay đổi | UI/UX + FE + QA |
Chuẩn hóa Mermaid/flowchart và state table tiếng Việt-first: đổi nhãn Fail/Pass/Readiness/Publish/live/notification thành nhãn nghiệp vụ tiếng Việt, giữ field/enum kỹ thuật trong ngoặc/backtick | UI Spec | Đầu vào chuẩn, B3, B5, B6, B-Tình huống biên, Lịch sử thay đổi | UI/UX + FE + QA |
| Bổ sung độ bao phủ L/Epic cho UI spec: B1.0 bản đồ trải nghiệm theo vai trò, B3.0 ma trận bao phủ flow/case, oracle UI theo case trọng yếu và ma trận hiển thị dữ liệu | UI Spec | B1.0, B3.0, B3.0.1, B3.0.2 | PO + UI/UX + FE + QA |
| Hoàn thiện UI/UX spec cho triển khai thật: mục tiêu màn hình/CTA/ma trận trạng thái, readiness repair deeplink, notification emergency không lộ lý do nhạy cảm, autosave conflict có Reload/Overwrite audit | UI Spec | B1.1, B4, B6.0, B6, B-Đối soát với SoT, B-Quyết định UI còn mở | UI/UX + FE + QA |
Sửa dev contract blocker: raw clinical tables không expose runtime user, thêm secure view/action, action validate_clinical_form_data, sửa SQL procedure log/Workbench, scheduler late-link và live gate | Dev Spec | C3, C4, C5.4, C5.5A, C5.14, C6, C12 | TL + BE + FE + QA |
Đồng bộ data/ops technical detail: thêm enum paper_fallback, metadata raw table chỉ track admin/relationship, audit emergency durable, down migration chỉ dev/staging/pre-D0 | Dev Spec, Go-Live | C4.0, C7, C8, E4 | BE + DBA + Ops |
| Siết QA oracle: autosave conflict không dùng last-write-wins, low-risk allergy ghi audit ack, phase 5B/6 có entry criteria, P0 phải pass 100% trước pilot | QA Test Plan | D2.8, D2.10, D4, D5 | QA + BE + FE |
| Làm rõ deploy/go-live: thứ tự DB/metadata/backend/FE/scheduler, TC-7 raw clinical access gate, TC-12 rollback drill không drop DB production sau D0, hard gate incident/complaint = 0 | Go-Live | E1.2, E2.2, E4.2, E5.2 | Ops + TL + QA |
| Cập nhật handoff để team nhận việc đúng scope v1.5.1: timeline 11-13 tuần dev/UAT, effort BE tăng nhẹ, blocker B-12 no raw runtime, completion checklist/ripple trace mới | Handoff | Timeline, Effort, Blocker, Tiêu chí hoàn tất bàn giao | Delivery + TL + PM |
Publish — Cập nhật
tong-hop-tai-chinh-don-hang
Tổng hợp tài chính đơn hàng v2.3 → v2.3.2
Đồng bộ package public với source mới nhất: khóa rõ SCR-01A là trạng thái cảnh báo lỗ trong section TÀI CHÍNH và bỏ wireframe SCR-02 bị lặp ở B1 để màn cấu hình chi phí cố định chỉ có một nguồn mô tả.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v2.3.2, cập nhật ngày updated và lịch sử thay đổi package | Index | Lịch sử thay đổi | PO/BA + Delivery |
Khóa cảnh báo đơn hàng lỗ là SCR-01A trong sidebar TÀI CHÍNH, đặt ngay dưới tiêu đề và trước dòng Doanh thu | PRD, UI Spec, QA Test Plan, Go-Live | FR-015, SCR-01A, TC-017, E2/E4 | PO/BA + UI/UX + FE + QA |
Bỏ wireframe Demo màn cài đặt — SCR-02 bị lặp ở B1; giữ SCR-02 — Cài đặt đơn hàng làm nguồn mô tả duy nhất cho màn cấu hình chi phí cố định | UI Spec | B1, SCR-02 | UI/UX + FE + QA |
2026-04-27
Publish — Cập nhật
tong-hop-tai-chinh-don-hang
Tổng hợp tài chính đơn hàng v1.1.1 → v2.3
Đồng bộ package theo skill PO/BA mới: bổ sung decision-brief, SOURCE_OF_TRUTH, EVIDENCE_PACK, demo UI gắn đúng sidebar OrderReceiverInfo, khóa chi phí vật tư ở trạng thái Đang phát triển, và thêm đề xuất cảnh báo đơn hàng lỗ cho Admin/BOD.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v2.3, thêm bộ đọc trước và làm rõ P&L hiện là tạm tính chưa gồm vật tư | Index, Tóm tắt quyết định | Mô tả, Lịch sử thay đổi, Tóm tắt 5 phút | PO + TL + Delivery |
Khóa canonical truth: chi phí vật tư giữ nội dung nhưng Đang phát triển, chưa cộng vào total/profit/margin/cảnh báo lỗ | SOURCE OF TRUTH, PRD | DEC-016, FORMULA-005, FORMULA-008..010 | PO + TL + BE + QA |
Bổ sung phân tích đề xuất cảnh báo đơn hàng lỗ, chỉ hiện cho Admin/BOD và phải ghi rõ Chưa gồm chi phí vật tư | PRD, UI Spec | FR-015, A12, Cảnh báo đơn hàng lỗ | PO + UI/UX + FE |
Viết lại UI spec theo màn hiện có: section TÀI CHÍNH nằm trong sidebar trái, trước DỮ LIỆU / LIÊN KẾT, có demo Admin/Manager/Staff | UI Spec | SCR-01, Demo gắn vào UI hiện tại, B6/B9 | UI/UX + FE + QA |
Đồng bộ contract kỹ thuật và QA: action trả material_cost_status, profit_basis_note, is_loss_warning; thêm TC-015/TC-017 và go-live gate tương ứng | Dev Spec, QA Test Plan, Go-Live | C3/C5/C12, TC-015, TC-017, G8/G9 | BE + FE + QA + Ops |
2026-04-22
Publish — Thêm mới
ho-so-benh-an
Hồ sơ bệnh án v1.1 — New
Publish mới package Hồ sơ bệnh án cho chuỗi phòng khám Diva, chốt Day-1 theo hướng triển khai được: số hoá BA DL/TM, bản giấy vẫn là gốc pháp lý, walk-in late-link qua order.reference_appointment_id, và cross-branch tầng 3 chỉ có emergency override trong app.
| File | Nội dung |
|---|---|
| SOURCE OF TRUTH | Canonical decisions, current-code facts, Day-1 simplifications |
| EVIDENCE PACK | Evidence codebase, legal/business notes, risk log |
| PRD | Scope, FR, formulas, metrics |
| UI Spec | Screen map, flow walk-in/cross-branch, permission matrix |
| Dev Spec | Data model, actions, security, tasks, traceability |
| QA Test Plan | Coverage, seed data, test cases |
| Go-Live | Readiness gates, cutover, rollback |
| Handoff | RACI, timeline, blockers |
Publish — Cập nhật
chu-ky-khach-ghe-khong-mua
Tab Chu kỳ khách ghé không mua v1.0 → v1.2
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Chốt popup rule cho case same-day cross-branch hiển thị Nhiều chi nhánh | PRD | A5) Functional Requirements | FE |
| Canonical hóa no-data thành success payload rỗng, không dùng GraphQL error cho empty data | Dev Spec | C5) Integration Contracts | FE |
| Bổ sung analytics instrumentation vào tasks và traceability phase 1 | Dev Spec | C11) Tasks | FE |
| Bổ sung test case no-data success payload và same-day cross-branch | QA Test Plan | D2) Test Cases | QA |
| Publish thêm evidence pack để khóa bằng chứng nguồn trước package spec | EVIDENCE PACK (internal artifact) | — | All |
2026-04-21
Publish — Cập nhật
ltv-phase-1
LTV Phase 1 v1.0 → v1.2
Đồng bộ toàn bộ package LTV Phase 1 từ diva-group sang dva-doc, đóng các review findings của skill po-ba-workflow mới và khóa nốt các default implementation để dev/agent có thể bám spec triển khai ngay.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v1.2, cập nhật lịch sử thay đổi, bổ sung SOURCE OF TRUTH và EVIDENCE PACK vào package phát hành | Index | Lịch sử thay đổi | All |
Đồng bộ PRD theo package mới: sửa SCR mapping, bổ sung lifecycle contract cho mapping version và backfill, nâng chuẩn Decision Log, và khóa report-role/seed source/confidence/refresh defaults | PRD | Decision Log + FR + Lifecycle + Defaults | PO + TL + FE + BE + QA |
| Đồng bộ UI spec theo hướng SaaS config flow: thêm journey/dependency/linking, lifecycle UI mapping, publish safety, permission seed v1 và tooltip dictionary đầy đủ hơn | UI Spec | SCR-02 + Permission + Tooltip | FE + QA + PO |
Đồng bộ dev contract: sửa report.group_id, thêm C12 trace tới TC, role seed mặc định, confidence rubric, và refresh strategy hybrid (event-driven + scheduled reconcile) | Dev Spec | C3, C5, C6, C8, C12 | BE + FE + TL + QA |
| Mở rộng QA coverage cho lifecycle, confidence rubric, hybrid refresh và override confidence escalation | QA Test Plan | D2, D3, TC-FR-004, TC-FR-008 | QA + BE + FE |
Đóng các open item trong handoff thành Defaults Đã Khóa và publish thêm canonical refs để reviewer ngoài codebase theo dõi được lý do chốt | Handoff, SOURCE OF TRUTH, EVIDENCE PACK | Defaults + Canonical refs | PM + TL + PO + QA |
2026-04-20
Publish — Thêm mới
ltv-phase-1
LTV Phase 1 v1.0 — New
Chuẩn hóa Base LTV cho DIVA theo actual revenue hợp lệ, all-time, toàn hệ thống; tách Nguồn khách gốc khỏi Nguồn gốc LTV chuẩn, thêm mapping version, backfill, manual override, và đặt report trong nhóm Chu kỳ khách hàng.
| File | Nội dung |
|---|---|
| PRD | Quyết định business, FR, formulas và semantics phase 1 |
| UI Spec | Tab LTV Phase 1, filter, aggregate tables, mapping drawer, override dialog |
| Dev Spec | Data model ltv_*, query/actions, backfill, RBAC, observability |
| QA Test Plan | Seed data, test cases revenue/source/versioning/semantics |
| Handoff | RACI, timeline, open items, deploy checklist |
chu-ky-khach-ghe-khong-mua
Tab Chu kỳ khách ghé không mua v1.0 — New
Tạo mới package spec cho tab báo cáo tách riêng khỏi Chu kỳ mua hàng, giúp marketing nhìn nhóm khách đã quay lại chi nhánh với hành vi Tư vấn hoặc Làm dịch vụ nhưng lượt ghé đó chưa phát sinh doanh số.
| File | Nội dung |
|---|---|
| SOURCE OF TRUTH (internal artifact) | Canonical decisions, business truths, current-code facts |
| PRD | Scope, FR, glossary, formulas |
| UI Spec | Screen map, filter hidden/fixed, popup, tooltip |
| Dev Spec | Rules implementation, output contract, tasks, traceability |
| QA Test Plan | Coverage, seed data, regression cases |
| Handoff | Delivery index, blockers, readiness |
2026-04-15
Publish — Cập nhật
cham-cong-da-don-vi-shared-tenant
Chấm công đa đơn vị trên shared tenant v3.1.2 → v3.1.3
Chốt lại mô hình Công chuẩn theo đúng xác nhận HCNS: không còn coi branch_label_id là business scope. Day-1 chuyển sang nhóm áp dụng công chuẩn, map department -> standard_workday_scope_key -> rule, để cover được cả Phương Nam theo khối và Daisy có ngoại lệ Kế toán riêng.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v3.1.3, cập nhật lịch sử thay đổi và Bản Đồ Thay Đổi v3.1.3 theo mô hình nhóm áp dụng công chuẩn | Index | Lịch sử thay đổi, Bản Đồ Thay Đổi v3.1.3 | All |
Chốt lại business scope cho công chuẩn: dùng standard_workday_scope_key, thêm seed logic PN/Daisy theo xác nhận HCNS, bỏ wording cũ dựa trên branch_label_id | PRD | DEC-013, FR-020, FORMULA-007 | PO + TL + FE + BE + QA |
Đồng bộ UI vận hành: block Công chuẩn hiển thị Nhóm áp dụng / Công thức / Phòng ban áp dụng, không còn Loại chi nhánh hay + Thêm rule theo branch | UI Spec | Nhóm Công chuẩn, BR-003 | UI/UX + FE + QA |
Đồng bộ contract kỹ thuật: thêm mapping timekeeping_standard_workday_scope_department, runtime resolve theo primary_department_id -> scope -> rule, thay cho proxy branch_label_id | Dev Spec | FORMULA-010, C4 Data Model, seed data | BE + FE + QA |
| Đồng bộ test/go-live/handoff theo scope mapping mới, bao phủ case PN office/service và Daisy accounting/tele-cskh-page/service | QA Test Plan, Go-Live, Handoff | TC-STD, pre-check scope mapping, Compatibility Reminder | QA + Ops + TL |
2026-04-14
Publish — Cập nhật
cham-cong-da-don-vi-shared-tenant
Chấm công đa đơn vị trên shared tenant v3.1.1 → v3.1.2
Chốt contract Ca làm việc để team triển khai dễ hơn: cách tính công chuyển xuống shift, GPS của ca rút về Bắt buộc / Không bắt buộc, và bỏ toggle cấu hình báo cáo phép năm trong SCR-00 để tránh config thừa.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v3.1.2, cập nhật lịch sử thay đổi và Bản Đồ Thay Đổi v3.1.2 | Index | Lịch sử thay đổi, Bản Đồ Thay Đổi v3.1.2 | All |
Chuyển cách tính công xuống Ca làm việc, chốt GPS theo ca bằng gps_required = Bắt buộc / Không bắt buộc, và bỏ config phép năm thừa khỏi Settings Module | PRD | DEC-026, DEC-033, DEC-034, FR-003, FR-016, FR-018 | PO + TL + FE + BE + QA |
Đồng bộ UI vận hành: popup Ca làm việc có field Cách tính công, Giờ chuẩn của ca, GPS cho ca này; Tab Quy định không còn toggle Báo cáo phép năm | UI Spec | Tab Quy định, SCR-00C, EXP-008 | UI/UX + FE + QA |
Đồng bộ contract kỹ thuật: schema shift dùng workday_calculation_mode, standard_hours, gps_required; bỏ field annual_leave_report_enabled khỏi timekeeping_unit | Dev Spec | C3 Rules/Formulas, C4 Data Model, seed data | BE + FE + QA |
| Đồng bộ QA/Go-Live/Handoff theo cùng contract mới cho shift-level workday/GPS và báo cáo phép năm PN | QA Test Plan, Go-Live, Handoff | TC-FR-016, TC-CFG, pre-check schema, Compatibility Reminder | QA + Ops + TL |
2026-04-13
Publish — Cập nhật
cham-cong-da-don-vi-shared-tenant
Chấm công đa đơn vị trên shared tenant v3.1 → v3.1.1
Làm rõ GPS contract để team không hiểu nhầm giữa tọa độ chi nhánh và bán kính GPS: tọa độ tiếp tục dùng branch master data hiện có, còn gps_radius_meters là override per-unit trong SCR-00 và chỉ fallback global khi unit chưa cấu hình.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Bump feature index lên v3.1.1, cập nhật lịch sử thay đổi và Bản Đồ Thay Đổi v3.1.1 cho đúng package mới | Index | Lịch sử thay đổi, Bản Đồ Thay Đổi v3.1.1 | All |
Chốt nguồn GPS ở mức business/spec: thêm DEC-032, làm rõ tọa độ chi nhánh lấy từ branch master data, còn bán kính là override per-unit | PRD | Changelog, DEC-032, A2) Context, FR-003 | PO + TL + FE + BE + QA |
Đồng bộ UI GPS: gps_radius_meters là optional override, thêm helper Xem/Sửa tọa độ chi nhánh gốc, không tạo màn GPS master mới | UI Spec | Changelog, Tab Quy định, Nhóm GPS | UI/UX + FE + QA |
Đồng bộ contract kỹ thuật GPS: branch coordinates reuse branch master data, gps_radius_meters có thể NULL để fallback global | Dev Spec | Changelog, C4 Data Model, GPS contract | BE + FE + QA |
| Đồng bộ QA/Go-Live/Handoff theo cùng GPS oracle và rollout wording | QA Test Plan, Go-Live, Handoff | Changelog, Điều đã chốt, Rollout | QA + Ops + TL |
2026-04-10
15:06 — Publish — Cập nhật
prepaid-card-analytics-tab
Prepaid Card Analytics Tab v1.0 → v1.1
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
Đồng bộ feature index lên v1.1, thêm lịch sử thay đổi và Bản Đồ Thay Đổi v1.1 để UI/UX/BE/QA biết đúng section cần sửa | Index | Thông tin chung, Lịch sử thay đổi, Bản Đồ Thay Đổi v1.1 | All |
Cập nhật PRD theo semantics 2 ví: breakdown cho Tổng dư ví, mở rộng dashboard tài chính, thêm US-4.7 Lịch sử ví, và bổ sung glossary Ví DIVA / Ví khuyến mãi | PRD | Cập nhật v1.1, US-1.1, US-4.1, US-4.2, US-4.7, A9 | PO + UI/UX + QA |
Cập nhật UI spec: card Tổng dư ví có 2 lớp support, Finance tăng từ 4 → 5 tab con, thêm wireframe + behavior cho tab Lịch sử ví | UI Spec | 0. Cập nhật v1.1, 3.1, 6.1, 6.2, 6.3, 6.7, 6.8 | UI/UX + FE |
Cập nhật dev spec theo source-of-truth codebase: map wallet/wallet_promotion ↔ VND/VND_PROMOTION, aggregate số dư theo từng ví, bổ sung dictionary/tooltip/cột bảng doanh thu và 16.12 Bảng Lịch sử ví | Dev Spec | 0. Cập nhật v2.1, 3.1, 6.1, 6.2, 11.3, 16.1, 16.2, 16.3, 16.8, 16.12 | BE + FE + Data + QA |
Cập nhật implementation plan: thêm Change log v1.1, query GetWalletBalanceAggregate trả riêng VND/VND_PROMOTION, thêm file FinanceWalletHistory.tsx, và đổi Finance từ 4 → 5 tab nội bộ | Plan | Spec References, File Structure, GetWalletBalanceAggregate, Task 13 | FE + BE + Tech Lead |
Rút gọn Sub-tab Marketing: bỏ tab riêng Affiliate và So sánh kênh, gộp thành các khối embedded trong Nguồn KH để tránh trùng nghĩa | PRD, UI Spec, Dev Spec, Plan | US-5.2, 7.2, 7.4, 16.16-16.18, Task 16 | UI/UX + FE + PO |
2026-04-07
Publish — Thêm mới
cham-cong-da-don-vi-shared-tenant
Chấm công đa đơn vị trên shared tenant v3.0 — New
Phương Nam (247 NV) + Daisy (150 NV) chấm công trên app Diva. Settings Module toàn diện: penalty engine, công chuẩn tự động, OT rate, tính công theo giờ (PN). Diva không ảnh hưởng.
| File | Nội dung |
|---|---|
| PRD | 28 decisions, 20 FRs, 7 formulas, release plan 1A→1B→1C |
| UI Spec | 9 screens (Settings Module, Working Sheet, Mobile, Export) |
| Dev Spec | Schema, runtime 4 mốc, penalty engine, seed 31 ca |
| QA Test Plan | 100+ test cases, penalty/OT/công chuẩn coverage |
| Go-Live | 25 gates, pre-checks, deploy steps |
| Handoff | Blockers, rollout, 8 câu hỏi TL |
Publish — Cập nhật
redesign-tab-tu-van
Redesign Tab Tư vấn (Commission → Advisory Fee) v1.0 → v1.1
Loại bỏ trạng thái "Chờ duyệt" — commission tự động vào wallet khi thanh toán. Luôn hiện group header (mỗi NV có mã GD riêng, cần header hiện mã TT). Xóa nút "Bỏ filter" trong card (toggle click đủ). Xóa FR-004d. Tổng TC: 77 → 69.
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Xóa "Chờ duyệt" khỏi Summary Bar + Cards | PRD | FR-001, FR-002 | FE |
| Xóa FR-004d (mix trạng thái) | PRD | A5) FR | FE, QA |
| Dropdown filter: bỏ "Chờ duyệt" | PRD | FR-006 | FE |
| Luôn hiện group header (DEC-003 v1.1) | PRD | FR-004a | FE |
| Xóa wireframe mix trạng thái, 7 copy text keys, Edge Case #4 | UI Spec | B6) Copy Text | FE |
showGroupHeaders = true, xóa pending logic | Dev Spec | C6.5 | FE |
| Xóa DS-007 + 7 test cases, TC-004a update expected | QA | D3, D4 | QA |
| Xóa nút "Bỏ filter" trong card + TC-003-02 | PRD, QA | FR-003 | FE, QA |
2026-03-27
Update — Cập nhật
employee-daily-commission
Báo cáo doanh số cá nhân v1.3 → v1.4 — Update
Đổi label "Commission tư vấn" → "Hoa hồng tư vấn". Loại trừ thanh toán bằng ví (wallet + wallet_promotion) khỏi SQL function commission — giống logic report_employee_result hiện có. Thêm DEC-012, cập nhật FORMULA-001 clarify "thực nhận", thêm 3 test cases wallet.
| Thay đổi | File |
|---|---|
| DEC-012 + FR-003/005 + Glossary + FORMULA-001 | PRD |
SQL Function 1 thêm filter payment_method_id | Dev Spec |
| Dropdown label + Copy Text + Tooltip | UI Spec |
| TC-005-07/08/09 (loại trừ ví) | QA Test Plan |
Update — Cập nhật
material-warehouse
Kho vật tư — Quản lý định lượng & giá vật tư dịch vụ v2.1 → v3.0 — Major Update
Kết nối Kho vật tư với kho chi nhánh theo mô hình 4 cấp NCC → Kho tổng → Kho chi nhánh → Kho vật tư. Chuyển kho chi nhánh trở thành primary flow, nhập tay/Excel là fallback; bổ sung FR-022, SCR-08, action transferToMaterialWarehouse, event trigger inventory_document_material_warehouse, 17 test cases transfer và tổng QA lên 85 test cases.
| Thay đổi | File |
|---|---|
Khóa DEC-D29 → DEC-D36: transfer branch warehouse → material warehouse, dual-input, không cần duyệt, nhập theo đơn vị mua, config quy đổi 1 lần, chọn lô nguồn thủ công | PRD |
Thêm flow SCR-08 Chuyển kho, nút Chuyển kho trên SCR-01, matrix permission và copy/tooltip cho transfer form | UI Spec |
Thêm action transferToMaterialWarehouse, event trigger inventory_document_material_warehouse, behavior export_material_warehouse / import_material_warehouse và traceability FR-022 | Dev Spec |
Bổ sung TC-TRF-001 → TC-TRF-017, seed DS-TRF-001, coverage permission/concurrency/cancel/auto-deduct và nâng tổng QA lên 85 test cases | QA Test Plan |
| Cập nhật gate deploy/smoke/rollback cho transfer, pilot branch và data cleanup kho chính không block go-live | Go-Live Checklist |
Mở rộng RACI/timeline/tasks cho transfer BE/FE/QA, thêm acceptance criteria và open items OI-07 / OI-08 | Handoff |
Update — Cập nhật
material-warehouse
Kho vật tư — Quản lý định lượng & giá vật tư dịch vụ v1.1 → v2.1 — Major Update
Chuyển sang Batch-based FIFO (DEC-D22~D28). Thêm bảng material_batch, quản lý lô hàng với giá nhập riêng + HSD + FIFO xuất kho. Two-Phase Pricing (DEC-D28): ước tính giá lúc save, finalize giá thực tế lúc done. Không cho phép tồn kho âm (DEC-D23). Cron auto-lock lô hết hạn. 28 decisions, 21 FRs, 7 formulas, 7 screens, 66 test cases.
| Thay đổi | File |
|---|---|
| +DEC-D22~D28, +FR-018~021, FR-007/008/010 rewrite, glossary +5 terms | PRD |
| SCR-03 +batch list, SCR-06 +giá/HSD/mã lô, +16 copy texts, +7 edge cases | UI Spec |
+material_batch table, FIFO pseudocode, cron HSD, +BatchStockIn mutation, C12 rewrite | Dev Spec |
| Stock-in TCs rewrite (batch contract), +TC-CFG-001/002, FIFO/HSD FR-ref fix, 49→66 TCs | QA Test Plan |
| +batch migration, +cron check, +3 monitoring metrics | Go-Live Checklist |
| 23d→29d, +5 tasks, M1-M7 adjusted T+25d | Handoff |
2026-03-26
Publish — Thêm mới
settings-ux-subtask-tag
Cải thiện UX cài đặt Mã Công Việc / Tiền Tour v1.0 — New
Gộp 2 trang Nhóm Tiền Tour + Tiền Tour thành 1 trang accordion. Enriched tag display (mã + range tiền) ở 5 nơi. Rename sidebar + labels. Zero DB/backend changes. Blast radius: TaskForm (projects) + OrderTaskLimitForm + ServiceSubtaskItem (ecommerce).
| File | Nội dung |
|---|---|
| Design Doc | 6 decisions, blast radius analysis, verification tiền tour runtime |
| PRD | 14 DECs + 8 FRs + Glossary (8 terms) + Milestones |
| UI Spec | 6 screens, 3 flows, wireframes, 17 copy text, 10 edge cases |
| Dev Spec | GraphQL fragments, 2 formulas, 18 tasks (~10.85d) |
| QA Test Plan | 30 test cases (3 CP + 3 blast radius), seed data |
| Handoff | RACI, 7 milestones, Day-0 verification |
subtask-material
Quản lý vật tư theo Subtask v1.0 — New
Chuyển quản lý vật tư từ task cha xuống subtask. Bảng mới project_task_material với denormalized fields, auto-fill từ product_relation, aggregate view ở task cha (SUM by product). Backward compat với order_materials cũ. Tour money ZERO coupling (verified).
| File | Nội dung |
|---|---|
| Design Doc | Kiến trúc, 9 decisions, data model, performance (5K-30K tasks/day), tour money proof |
| PRD | 14 DECs + 8 FRs + Glossary (10 terms) + Milestones |
| UI Spec | 5 screens, 3 flows, Permission Matrix (4 roles), 16 copy text, 7 edge cases |
| Dev Spec | DDL + trigger, Hasura YAML, GraphQL (4 operations), 15 tasks (~10.75d) |
| QA Test Plan | 22 test cases (5 critical path), 3 seed datasets |
| Handoff | RACI, 7 milestones, Day-0 verification, 10 acceptance criteria |
Publish — Cập nhật
tong-hop-tai-chinh-don-hang
Tổng hợp tài chính đơn hàng v1.1 → v1.1.1 — Bổ sung chi phí cố định + restructure PRD
Thêm chi phí cố định (fixed cost): cấu hình % tại Settings, snapshot per order, tính theo thực thu với high water mark. Restructure PRD A2 theo phong cách tổng quan dễ hiểu. Tech Lead reviewed (Performance 8/10, Readiness 9/10).
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| +7 DEC (DEC-16→22), +4 FR (FR-011→014), A2 restructure tổng quan | PRD | A2) Context, Z) Decision Log | All |
| Migration 2 columns, FORMULA-010, event handler, Hasura mutations, +6 tasks | Dev Spec | C7) Migration | BE |
| +SCR-02 Settings, wireframe cập nhật, +6 edge cases | UI Spec | B-Settings | FE |
| +8 TC, +3 datasets (DS-006→008), coverage 20→28 TC | QA | D4) Test Cases | QA |
| +6 tasks (T-13→18), effort 11.5→20h, ASM-007 P0 blocker | Handoff | Timeline | All |
2026-03-25
Publish — Thêm mới
thu-thap-thong-tin-khach-hang
Thu thập & Chuẩn hoá thông tin cá nhân khách hàng v1.0 — New
Popup đề xuất cập nhật thông tin (ngày sinh, nghề nghiệp, tỉnh/thành) + consent screen trên app khách hàng Flutter. Admin quản lý nội dung từ web, thống kê % cập nhật. KPI: 40-50% khách cập nhật.
| File | Nội dung |
|---|---|
| PRD | 8 DECs + 7 FRs + Glossary |
| UI Spec | 3 screens: Consent, Profile Popup (Flutter) + Admin Tab (Web) |
| Dev Spec | Data model + Hasura YAML + Flutter BLoC + Vue 3 |
| QA Test Plan | 41 test cases + seed data SQL |
| Handoff | RACI + timeline + blockers |
2026-03-24
Publish — Thêm mới
vi-km-2
Ví Khuyến Mãi 2 (Promotion Wallet 2) v1.1 — New
Ví khuyến mãi dạng vé: khách mua vé giá nhỏ → cộng số tiền lớn vào ví → mỗi lần dùng DV chỉ trả max X% → retention. Slot-based FIFO, auto-expiry, multi-payment.
| File | Nội dung |
|---|---|
| PRD | A0 Overview + 19 DECs + 12 FRs + 4 Formulas |
| UI Spec | 8 screens mới + delta 8 màn cũ + 30 edge cases |
| Dev Spec | Data model + FIFO Go action + 30+ files impact |
| QA Test Plan | 40 test cases (14 P0) |
| Handoff | RACI + timeline + checklist |
2026-03-23
22:30 — Publish — Cập nhật
employee-daily-commission
Báo cáo doanh số cá nhân v1.2 → v1.3
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Gom thành hub "Báo cáo doanh số cá nhân" — 3 tabs, ẩn 2 cards cũ (DEC-011) | PRD | Z) Decision Log | All |
| Thêm FR-009: Tab container + redirect route cũ | PRD | A5) FR | FE |
| Thêm SCR-00: Tab container layout | UI Spec | B1.1) SCR-00 | FE |
| Cập nhật C6: hub file structure + redirect routes | Dev Spec | C6) Frontend | FE |
| Thêm TC-FR-009: 10 test cases (tabs + redirect) | QA | TC-FR-009 | QA |
| Timeline +1 ngày FE, verify redirect steps | Handoff | Timeline | All |
14:00 — Publish — Cập nhật
employee-daily-commission
Báo cáo doanh số NV theo ngày v1.1 → v1.2
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm DEC-008/009/010: truy thu real-time + dropdown riêng + drill-down in-scope | PRD | Z) Decision Log | All |
| Thêm FR-007: SQL function truy thu commission (wallet DB) | PRD | A5) FR | BE |
| Thêm FR-008: Drill-down popup chi tiết giao dịch ngày | PRD | A5) FR | FE |
| Thêm FORMULA-004: Tổng truy thu NV ngày | PRD | C3) Formulas | BE |
| Thêm SCR-02: Popup chi tiết + số âm màu đỏ | UI Spec | B2.1) SCR-02 | FE |
Thêm Function 3: search_employee_daily_commission_clawback (wallet) | Dev Spec | C3) SQL Functions | BE |
| Thêm GraphQL queries: clawback aggregate + detail | Dev Spec | C5) GraphQL | BE + FE |
| Thêm TC-FR-007 (8 cases) + TC-FR-008 (10 cases) | QA | TC-FR-007 | QA |
| Timeline +4 ngày, wallet deploy steps | Handoff | Timeline | All |
13:00 — Publish — Thêm mới
redesign-tab-tu-van
Redesign Tab Tư vấn (Commission → Advisory Fee) v1.0 — Enhancement
| File | Nội dung |
|---|---|
| PRD | 8 DEC, 13 FR, 5 FORMULA — redesign UX + đổi thuật ngữ |
| UI Spec | Wireframes, 40 copy text, 8 tooltips, 15 edge cases |
| Dev Spec | FE component structure, formulas, 12 tasks |
| QA Test Plan | 77 test cases, 7 seed datasets |
| Handoff | RACI, timeline T+8 ngày |
2026-03-19
16:00 — Publish — Cập nhật
voucher-enhancement
Nâng cấp Voucher Management v1.2 → v1.3
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| FR-P3-01 mở rộng: Hybrid Distribution (App + Batch offline) | PRD | Phase 3 FR | All |
| Thêm FR-P3-01a: Generate batch mã pre-assign cho đối tác | PRD | Phase 3 FR | BE + FE |
Thêm distribution_method vào CREATE TABLE voucher_campaign_affiliates | Dev Spec | 4.4 NEW TABLE | BE |
Thêm migration assigned_affiliate_id trên user_vouchers | Dev Spec | 4.3 ALTER user_vouchers | BE |
Thêm action generate_affiliate_voucher_batch.go + 6 error codes | Dev Spec | 2.1 BE Files | BE |
Thêm 2 FE components: AffiliateBatchPanel.tsx, GenerateBatchDialog.tsx | Dev Spec | 2.4 FE Files | FE |
| Phase 3 tasks: 5→7 BE tasks, 2→3 FE tasks, ~5d→~7d | Dev Spec | Phase 3 Tasks | All |
14:00 — Publish — Cập nhật
prepaid-card-analytics-tab
Prepaid Card Analytics Tab v1.0 → v1.0.1
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm Z) Decision Log (16 decisions) | PRD | Z) Decision Log | All |
| Sửa A9) Glossary đúng format 4 cột | PRD | A9) Thuật ngữ | All |
| Sửa tham chiếu Section 9 sang hyperlink | PRD | 9. Tài liệu tham chiếu | All |
| Fix DISTINCT_ON_ORDER pseudo-code → SQL hợp lệ | Dev Spec | 9.2 MV SQL | BE |
| Fix STABLE → VOLATILE cho alert/search functions | Dev Spec | 9.9, 10.2 | BE |
| Thêm wireframe Tab "Hành vi sử dụng" (Section 5.3) | UI Spec | 5.3 Expanded Row | FE |
| Thêm wireframe Tab "Hoa hồng" (Section 6.5) | UI Spec | 6.5 Hoa hồng | FE |
| Fix Task 19 thiếu Step 2 | Plan | Task 19 | Dev |
| Fix typo PREPAID_cARD → PREPAID_CARD | Plan | Task 5, Task 8 | Dev |
Dashboard Tổng hợp Chiến dịch Voucher v1.0 → v1.1
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Performance optimization: paginate-first strategy (8-10x gain), ROW_NUMBER() pattern, 2 indexes mới, aggregate không JOIN order, FE query caching | PRD | C) Technical Notes | BE |
| Thêm RSK-004: sort theo metrics cần tính toàn bộ trước paginate | PRD | A7) Risks | BE |
Publish — Thêm mới
prepaid-card-analytics-tab
Prepaid Card Analytics Tab v1.0
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Tạo PRD: bối cảnh, 7 epics, 23 user stories, NFR, phases | PRD | Toàn bộ | All |
| Tạo Dev Spec: kiến trúc, 6 MVs, SQL, component tree, performance | Dev Spec | Toàn bộ | BE + FE |
| Tạo UI Spec: layout, wireframes, filter bar, states, interactions | UI Spec | Toàn bộ | FE |
| Tạo Implementation Plan: 23 tasks, 3 chunks, file structure | Plan | Toàn bộ | Dev |
Dashboard Tổng hợp Chiến dịch Voucher v1.0
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Dashboard riêng xem tổng hợp hiệu quả chiến dịch voucher + gift, 4 KPI cards, bảng 12 cột, 5 filter, export Excel | PRD | A5) FR | FE |
| 2 DB functions mới (list + aggregate), 1 index, 4 formulas with edge cases | PRD | C) Technical Notes | BE |
| Bổ sung Manager vào VOUCHER_REPORT_ACCESS_ROLES | PRD | FR-006 | FE |
Nâng cấp Voucher Management: Kiểm soát, Thống kê & Đối tác v1.0
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| 4 phases: kiểm soát thời gian, thống kê NV, đối tác affiliate, chu kỳ sử dụng — 22 FRs | PRD | A5) FR | All |
| 10 components mới, wireframes, 30 edge cases, permission matrix 7 roles | UI Spec | B2) Components | FE |
| 2 tables mới, 3 SQL functions, 6 formulas, Hasura YAML, 35 dev tasks | Dev Spec | C4) Data Model | BE |
| 76 test cases across 4 phases, seed data, entry/exit criteria | QA Test Plan | D2) Test Cases | QA |
| Per-phase deploy steps, rollback plan, Day-0/Day-1 monitoring | Go-Live | E3) Deploy Steps | Ops |
| Perf-fix prerequisite: expression index + merge CTEs + split aggregate (6-8x faster) | Perf-fix | Task 1-3 | BE+FE |
Báo cáo Đơn hàng Voucher/Quà tặng v1.0
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm tab mới trong Revenue Report Group — tracking voucher/gift consumption | PRD | A5) FR | All |
| UI layout: 13 cột, summary bar 4 metrics, cascading filter, visual grouping | UI Spec | B2) SCR-01 | FE |
| 4 database indexes BLOCKER + GraphQL query + export pseudocode | Dev Spec | C7) Migration | BE |
| 42 test cases covering 7 FRs | QA Test Plan | D2) Test Cases | QA |
19/03/2026 (2)
Guides — Thêm mới
Setup Backend cho người mới NEW
- Hướng dẫn cài đặt môi trường backend từ đầu (VPN, DB, Git, etc.).
Features — Cập nhật
Báo cáo doanh số NV theo ngày v1.0 → v1.1
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Đổi tên C3 Formulas → A10 Business Formulas | PRD | A10) Formulas | All |
| Thêm Security note | Dev Spec | C8) Security | BE |
| Thêm NFR & Performance | Dev Spec | C9) NFR | BE |
| Thêm Observability | Dev Spec | C10) Observability | BE |
| Thêm Tasks breakdown | Dev Spec | C11) Tasks | BE + FE |
| Thêm Traceability | Dev Spec | C12) Traceability | QA |
| Thêm D5 Entry/Exit Criteria | QA | D5) Entry/Exit | QA |
| Xóa deploy checklist khỏi handoff | Handoff | — | All |
Tổng hợp tài chính đơn hàng v1.1 → v1.2
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm A10 Business Formulas | PRD | A10) Formulas | All |
| Cập nhật Pending Decisions format | PRD | Pending Decisions | All |
| Thêm RACI matrix | Handoff | RACI | All |
Tổng hợp tài chính đơn hàng v1.0 → v1.1
| Thay đổi | File | Vị trí | Ảnh hưởng |
|---|---|---|---|
| Thêm FR-008 chi phí breakdown | PRD | FR-008 | FE |
| Sửa FORMULA-003 margin (loại trừ đơn hủy) | Dev Spec | C3) Formulas | BE |
| Thêm TC export Excel | QA | D4) Test Cases | QA |
18/03/2026 (2)
Modules — Thêm mới
Báo cáo doanh số NV theo ngày v1.0
- Pivot table: NV × ngày trong tháng (commission tư vấn + tiền tour)
- 6 FR: pivot table, filter (chi nhánh/chức vụ/tháng), dropdown loại, export Excel, 2 SQL functions
- 4 indexes mới cho
order_commission_user+department_user+department - CTE-optimized SQL functions (ecommerce + project DB)
- 38 test cases
Features — Thêm mới
Tổng hợp tài chính đơn hàng v1.0
- 7 FR: doanh thu, thanh toán, RBAC, đơn hủy, loading states, refresh, sidebar scroll
- 2 phases: MVP + Phase 2
- Sidebar financial panel với 4 blocks