Skip to content

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 đổiFileVị 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"PRDA10 FORMULA-020All (Phase 3+)
US-5.1 AC: trạng thái CD ghi rõ 3 ngưỡng + ref FORMULA-020 + edge casePRDA5 US-5.1FE, BE, QA
Tooltip ROI KPI Card với 3 phân loại + edge case "Chưa có budget"Dev Spec§16.4 Tooltip MarketingFE, UI/UX
Column "Trạng thái" bảng Chiến dịch: ngưỡng + edge case canonicalDev Spec§16.12 Bảng Chiến dịchFE, QA
Tab Chiến dịch status line đồng bộ 3 ngưỡng + ref FORMULA-020Dev Spec§7.2 Tab con Chiến dịchFE, BE, QA
ROI card highlight rule: 3 màu 🟢/🟡/🔴 + rule "—" khi cost = 0UI Spec§7.1 Marketing KPI CardsFE, 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 đổiFileVị tríẢnh hưởng
Đảo DEC-031 sang Option A — tab thứ 3 trong wallet_screen.dart thay vì screen riêngPRDZ) Nhật ký quyết địnhFE Mobile, QA
Chốt DEC-032 Option α — AffiliateFor KHÔNG bổ sung promotion2, CTV nhận hoa hồng giữ [commission, promotion]PRDZ) Nhật ký quyết địnhFE Mobile, BE
Chốt DEC-030 — KM 2 inherit affiliate_config matrix của KM 1; seed 3 row FALSEPRDZ) Nhật ký quyết địnhBE, QA, Ops
SCR-09-MOBILE-01/02 — Tab Ví khuyến mãi 2 thứ 3 + Home widget card "Ví KM 2" thứ 5UI SpecB2.9FE Mobile, QA
SCR-09-MOBILE-03 — WalletType.promotion2 enum + l10n shared coreUI SpecB0.1FE Mobile
SCR-10-STAFF-01 — Staff app customer detail balance KM 2UI SpecB2.10FE Mobile, QA
SCR-06-NEW-03 — Popup StatisticWalletPromotion2Popup.tsx lịch sử giao dịch KM 2 web admin (parity popup KM 1)UI SpecB2.6.6AFE Web, QA
9 task mobile C11 Phase 2 (P2-MOBILE-01..09) + 2 task FE Web (P2-01B/C)Dev SpecC11) TasksMobile, 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 PlanD2) 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.

FileNội dung
Decision BriefTóm tắt 5 phút package + 28 DEC + 14 PD
PRDZ (Decision Log) + A0-A12 + 6 FORMULA + LIFECYCLE-001/002 + 18 FR
UI SpecB-PRE → B-QUALITY + 6 SCR (Settings 4 tabs + slot 9 delta) + 12 edge case nhóm + 32 risk
Dev SpecC1-C13 + 5 bảng pancake_* + 8 migration + 7 cron + 15-step handler + direct pgxpool foundation
QA Test PlanD1-D7 + 127 test case + chaos test outage + load test 500 req/s burst
HandoffRACI + timeline 6 tuần + 14 PD blockers
Go-Live ChecklistE1-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).

FileNội dung
Decision BriefTóm tắt 5 phút package + 16 DEC + 11 PD + 5 risk
PRDZ (Decision Log 16 DEC) + A1-A12 (11 FR / 49 AC / 6 FORMULA / Glossary / A12 Tooltip)
UI SpecB-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 SpecC1-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 Plan49 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)
HandoffRACI matrix + 4 sprint timeline (Pre-kickoff 17/05 → Go-Live 29/05) + 6 PD critical blockers + Communication channels
Go-Live Checklist7 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 đổiFileVị 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-LiveZ) Nhật ký quyết định, B0.7, B2.6.11, E4.1 T+30 smoke testAll
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 FEDev Spec · QAC4) 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 flowDev Spec · UI Spec · QA5.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_daysUI SpecB0.4, B2.1.4FE, 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 TCUI SpecB0.9FE, 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 PlanD2 + D4 traceabilityQA, 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 packageNone (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.mdTài liệu tableAll 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ệu125.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 đổiFileVị 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 IssuesBUG-PROD-006FE, PO
MOB-01 wireframe125 Triệu125.000.000đ; Thu 130M − HT 5MĐã thu 62M (49,6%) · Nợ 63MUI SpecMOB-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 SpecSub-label KPI mobile sectionFE
Format VND cleanup — 26 chỗ dấu , ngàn → dấu . (chuẩn VN locale)UI Spec · Prod IssuesToàn 2 fileAll

sales-cskh-debt-handover — v2.1 → v2.2

Sales/CSKH Debt Follow-up & Handover v2.1 → v2.2Wave 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 đổiFileVị tríẢnh hưởng
BUG-PROD-005 status ⚠️ OPEN🟡 SCHEDULED Wave 1 — Resolution Plan APPROVED Day-0 deploy 4 indexes CONCURRENTLYProd IssuesBUG-PROD-005 · Resolution LogBE, 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 IssuesBUG-PROD-003FE
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 phaseProd IssuesIII) Bảng action itemsAll

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 đổiFileVị 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 thiProd IssuesBUG-PROD-005 · Resolution Log · Action itemsBE, DBA

sales-cskh-debt-handover — v1.2 → v2.0

Sales/CSKH Debt Follow-up & Handover v1.2 → v2.0Major 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 đổiFileVị tríẢnh hưởng
DEC-022 Doanh thu ròng canonical SUM(actual_revenue) exclude wallet (supersede DEC-009 paid - refund)PRDZ1 Decision Log + A10 FORMULA-003BE, QA
DEC-023 + FORMULA-006B Customer-level aging bucket = max(overdue_days) — giải quyết KH có nhiều đơn ở nhiều bucketPRD + Dev SpecA10 FORMULA-006B + C3 FORMULA-006BBE, 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ớiPRD + Dev SpecA12.4 + C5.5BE, FE
DEC-025 + DEC-026 Noti trigger >= inclusive + 4 re-trigger rules (daily/bucket/partial/settled) + NTF-DEBT-BUCKET-ESCALATEPRD + UI Spec + Dev SpecFR-009 + B4 Notification + C6.1BE, QA
DEC-027 + FORMULA-007 Service representative tie-break SCR-02 + multi-DV formatPRD + UI Spec + Dev SpecA10 FORMULA-007 + SCR-02 columns + C3 FORMULA-007BE, 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 SpecZ1 DEC-028 + SCR-02 columns + B9 tooltipFE, QA
DEC-029 + FORMULA-008 Weighted % tham gia multi-order — giải quyết function search_report_debt_performance_consultation chỉ pick 1 reference_orderPRD + Dev SpecA10 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 SpecZ1 + C6.1DevOps, 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áoPRD + UI SpecZ1 + KPI cards + B9 tooltipFE
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_bannerPRD + UI Spec + Dev SpecZ1 + Spec Priority Card Strip + C5.2/C5.3FE, BE
DEC-034 RESOLVED PD-004 Capacity Index-first Day-1 (4 indexes critical) + gate Day-30 cho snapshot Phase 2PRD + Dev SpecZ1 + C9.2 Capacity Model + C7 indexesDBA, TL
DEC-035 Hasura permission harden DEFERRED — risk accepted với mitigation, REVISIT trước GA via GO-008PRD + Go-LiveZ1 + E1 Release gatesTL, Security
BUG-PROD-001..004 + 3 QUESTION-PROD resolved — date format mmMM, KPI unit "Triệu"→"đ", Cuộc gọi source, tooltip wording, Banner as-of, "% tham gia" intentProd Issues 🆕Toàn fileAll
GO-008 Security gate trước GA — Pen-test direct GraphQL access từ Sale/Manager → verify không leak cross-staff/branch/tenantGo-LiveE1 Release gatesTL, 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.15DEC-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 đổiFileVị 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 skewPRDZ3 Technical DecisionsAll
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)PRDFORMULA-013BE, 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)"PRDA9 GlossaryFE, 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_closingDev Spec§9.2 MV SQL DefinitionsBE
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 = 0Dev Spec§9.2 sau MV definitionBE, 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 180dDev Spec§5.5, §16.24FE
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àngUI/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 scopeQA Test PlanTC-CT-CYCLEQA
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 > 5trPRD · UI Spec · Dev SpecUS-3.2 · Column config · Customer table contractFE, BE, QA
V5 blocker mở rộng — BE phải confirm source exact cho wallet_balance_divawallet_balance_km trong wallet_balance_result/wallet_balance, đồng thời reconcile với total balanceHandoff · PlanF4.2 · GraphQL query examplesBE, 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ã.

FileNộ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 khi actual_revenue hoặc disabled thay đổi
  • Migration update template với 4-layer guard: filter name = 'invoice_template' + idempotent + PRE-CHECK anchor + assert affected == target_missing (phòng PG REPLACE silent no-op)
  • Excel export qua Hasura action lotteryExport trỏ {{EXPORT_BASE_URL}}/actions (export-api có sẵn FileClient)
  • Backend string-template strings.ReplaceAll (KHÔNG phải Go text/template) — BE pre-build HTML qua buildLotterySectionHTML() 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 đổiFileVị 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ị , "Tăng 4đ" thay vì 4,00%, "Tăng 4%". Dùng allowlist tường minhPRDFR-008 + C3.1.bFE
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àyPRDFR-009 + C6BE 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 packagePRDZ1 Decisions + Z3 DecisionsAll
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àyPRDD) QA Test CasesQA
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_amountPRDC2 i18n + C3.1.aFE/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.1index.mdAll

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 đổiFileVị 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+PRDZ3 Technical DecisionsAll
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"PRDZ3 Technical DecisionsAll
US-2.2 AC: 3 tab → 2 tab + tab Hoa hồng bỏ "trạng thái"PRD§4.2 Epic Giao dịchFE, QA
FORMULA-008 Hoa hồng rewritten: source invoice_commission, thêm gross/net split (net = gross − SUM(ABS(refund_commission)))PRDFORMULA-008BE, QA
§4.5 Expanded Row wireframe ASCII: 3 tab → 2 tab, bỏ [Lịch sử sử dụng]UI Spec§4.5FE, 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 copyUI SpecSub-tab Tài chính §6.xFE, 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_commissionDev Spec§4.3BE, FE, QA
§6 KPI table + §9 MV LATERAL + §10 Index: Đổi source query Hoa hồng từ transaction_request_userinvoice_commission. MV mv_prepaid_staff_stats thêm LATERAL cho refund. Index mới idx_invoice_commission_order + idx_txreq_refund_commission_orderDev Spec§6, §9, §10BE, 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.6BE, 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ớiDev Spec§16.xBE, QA, FE
Component PrepaidAnalyticsTransactionRow.tsx: 3 sections → 2 sections, LOC ước tính 350 → 300Dev SpecComponent tableFE
Task 12 Step 4 plan: tab Hoa hồng — source invoice_commission, refund row riêngPlanTask 12 Step 4FE
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.xPRDZ2 UX DecisionsAll
US-1.2 Alert AC rewritten: 4 lớp rich context. Verb button thay nút generic [Xem]. Banner top spec. Sort override specPRDUS-1.2FE, BE, QA, UI/UX
§3.3 Alert Box redesign rich context: 4 lớp visual + hover tooltip + cell rendering example + bỏ secondary buttonUI Spec§3.3 Alert BoxFE, 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.3FE, BE, QA
§6.4 Công nợ thêm wireframe landing-from-alert state: banner top + summary highlight + sort overdue DESC + filter chipsUI Spec§6.4FE, 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 < 500msDev Spec§3.3BE, 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 đơn order_new/prepaid_new chư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 cho conversion_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.281 trê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.

FileNội dung
PRD / Bug Spec3 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ó đơn vs 18.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.

FileNội dung
PRD / Bug Spec5 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 đổiFileVị 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 invoicefund trước khi chốt fixPRDSection 2BE, DBA
Rollback Q7 từ "CHỐT Option B" → "PENDING DISCOVERY" với 3 giả thuyết H1/H2/H3 + reconciliation SQL gợi ýPRDSection 6BE, 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: truePRDBUG-05BE, FE, QA
Thêm TC-11b/11c — verify bảng vẫn lazy-load, không regression eagerPRDSection 5QA
Cập nhật TC-18/19/20 — đánh dấu PENDING DISCOVERY (chưa assign cho QA)PRDSection 5QA
Status banner per-bug — table rõ ràng Ready/Blocked/Discovery cho từng bug, fix mâu thuẫn ready-for-devPRDBanner topAll
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-bugIndexFrontmatter + table + quick linksAll
Fix UI Spec typo (P2 QA review) — DD/YYYYMM/YYYY cho monthly compare headerPRDSection 4BDesigner, 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 đổiFileVị tríẢnh hưởng
Thêm BUG-06telesale_amount_rate mismatch dimension (tử "doanh số" / mẫu "thực thu")PRDSection 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)PRDSection 6 — Confirmed DecisionsAll
Thêm TC-18/19/20 — telesale rate tests (verify, cross-check, regression Metric 2)PRDSection 5 — Test CasesQA
Sửa anchor links — bỏ emoji/em-dash khỏi headings để VitePress slug ổn định (QA review P1)PRDTOC + headingsAll
Sửa TC-10 — single expected khớp Q4 chốt (ẩn hẳn ngày tương lai, không có placeholder)PRDSection 5QA, FE
Clarify status — BE READY-FOR-DEV; FE BLOCKED đến Designer sign-off Section 4BPRDBanner topFE, Designer
Đổi complexity M → S + ghi rõ "Quick Fix compact package" + audit fail preventionIndexFrontmatterAll

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.

FileNội dung
Decision BriefTóm tắt 5 phút, scope lock, decisions, risks
PRDRequirements, formulas, glossary, traceability
UI SpecAs-is/delta UI, states, permissions, copy
Dev SpecAPI/action/data/security/tasks
QA Test PlanTest matrix, seed data, entry/exit
Go-Live ChecklistRelease gates, deploy order, rollback
HandoffRACI, 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 đổiFileẢnh hưởng
Pull diva-admin dev2025 và thêm FE Code Baseline cho các màn debt manager/settings hiện tạiUI SpecUI/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.createUI SpecFE, 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 copyUI SpecFE, QA

sales-cskh-debt-handover — v1.1 update

Sales/CSKH Debt Follow-up & Handover v1.0 → v1.1 — Figma UI handoff mapping

Thay đổiFileẢ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 decisionUI SpecUI/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 variantsUI SpecUI/UX, FE, QA
Tách thêm SCR-07 Lịch nhắc của tôiSCR-08 Lịch sử bàn giao để cover Figma handoff và code hiện hữuUI SpecFE, 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 đổiFileVị 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 requiredPRDZ) Nhật ký quyết địnhAll
Thêm FR-007 Info strip luôn hiển thị (above filter bar, không dismiss, không localStorage)PRDA5) FR-007FE
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 SpecB2) SCR-01 wireframeFE, 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 + BacklogUI SpecB9) Tooltip dictionaryFE, 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 coverageQAD3) Test casesQA
Thêm 2 component FE (VisitNoPurchaseInfoStrip, LabelWithSubText) + 10 task FE-005..010 + QA-006..010Dev SpecC11) Task breakdownFE, QA
Thêm 8 implementation step (10-17) + 5 blocker mới + 8 DoD v2.8Handoff3) Implementation orderAll

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-group sau 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 đổiFileẢ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 userDecision Brief, PRD, Dev Spec, QABE, QA
Order enum + detail scope fix — canonical canceled enum là order_canceled / prepaid_canceled; detail action nhận branch_ids để popup khớp matrix bucketPRD, Dev Spec, QABE, 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 1UI Spec, QA, HandoffFE, 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ớiIndex, Decision BriefAll

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 đổiFileVị 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)PRDZ1 + Section 6 PhaseAll
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 SpecSection 2.xFE, 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 SpecSection 0BE
MV topology v3: tách summary_dailymv_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 · PlanSection 9.1, 9.2 · Task 2BE
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ừ codebasePRDA10All
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ụngPRDZ1 DEC-B06 + A10 FORMULA-005, 005bAll
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 confirmPRD · Dev SpecSection 5.3 · Section 2.5BE, 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 SpecSection 5.4FE
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 SpecSection 4FE
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ũyUI Spec · PRDSection 5.5 · A10 FORMULA-011..013FE, PO
Charts time-series chỉ theo ngày — KHÔNG có toggle Tuần/Tháng. Range follow shared filter (DEC-U08)UI Spec · PRDSection 3.2 · DEC-U08FE
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 SpecSection 3.1FE
Tab Công nợ: chỉ 1 nút [📞 Gọi] (TT/Ghi chú = OUT OF SCOPE Phase 1). Click Mã đơn navigate detailUI SpecSection 6.4FE
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 · HandoffAllAll 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 parallelHandoffF4 Internal BlockersAll

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 đổiFileVị 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 endpointsPRDA10 FORMULA-019All
DEC-U08 update — ref FORMULA-019 cho cách tính kỳ trước (trước đây chỉ note "dynamic theo filter")PRDZ2 DEC-U08FE
Composable usePrepaidAnalyticsFilter — expose previousPeriod + trendLabel computed (pseudo-code 30 dòng trong plan)PlanTask 8 Step 1FE
Trend label dynamic ref FORMULA-019 ở 2 chỗ (Section 3.1 KPI Tổng quan + Section 4.3 Sum Cards Giao dịch)UI Spec3.1, 4.3FE

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 đổiFileVị 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 downstreamPRDA10.0All
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 patternsPRDSection "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 SAIDev SpecSection 0 Schema MappingBE
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ờ V9Dev Specmv_prepaid_order_daily Sum Cards sectionBE
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 Specmv_prepaid_customer_stats + mv_prepaid_finance_dailyBE
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 onlyDev SpecSection 4.2BE, 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 ở clientPlanTask 9FE, 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-tabPRD · UI Spec · PlanDEC-U12 + Section 4.2 + Task 12 Step 1FE, 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 fullUI SpecSection 9.2FE, UX
plan.md Task 19b mớiEmptyState.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)PlanTask 19bFE
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ườngPlanTask 12 Step 1FE
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 sampleQA Test PlanD5 Entry/ExitQA, 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ấtHandoffF4.2 Internal BlockersAll 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 đổiFileVị 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)PRDA10 FORMULA-009BE, Kế toán
PRD FORMULA-010 Lợi nhuận gộp PROVISIONAL — depends V10 (km_da_nap)PRDA10 FORMULA-010BE
Dev-spec §6 KPI table fix — "KM đã sử dụng" REVERTED wallet_promotion_amountreference_amount filter payment_method_id='wallet_promotion' (V12). "KM đã nạp" REVERTED topup−collectedSUM(parent_invoice.wallet_promotion_amount) (V10). Thêm cột V-ref + cảnh báo BEDev Spec§6 KPI Source/FormulaBE
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 BriefAllFE, 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)HandoffHeader + F3 TimelineAll
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àngPlanHeader §1 ArchitectureFE, 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 & ValidationUI SpecPre §1 + Post §12FE, 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_daily LATERAL aggregate vẫn dùng wallet_promotion_amount cho wallet_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 đổiFileVị tríẢnh hưởng
dev-spec §9 LATERAL invoice aggregate fixwallet_promo_used REVERTED wallet_promotion_amountreference_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 inlineDev Spec§9 mv_prepaid_order_daily LATERALBE
dev-spec §16.1 Tooltip dictionary sweep — sửa "DT ghi nhận" (bỏ + wallet_promotion_amount), "KM đã nạp" (REVERTED topup−collectedSUM(parent_invoice.wallet_promotion_amount)), "KM đã sử dụng" (REVERTED wallet_promotion_amountreference_amount filter). Thêm "Ví Diva nạp" + "Ví KM nạp" hàng riêng + V-ref ⏳ markersDev Spec§16.1 Glossary canonicalUI/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 V11HandoffF2 RACI VerificationAll 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)HandoffF3 Timeline W1All 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 queryPlanTask 23 Step 2-3QA, 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-LiveVarious headingsLint 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/QAUI SpecB-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_amount cho "KM đã sử dụng" và Nạp ví − Tiền thu cho "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 đổiFileVị tríẢnh hưởng
dev-spec §16.3 Tooltip Sub-tab Tài chính sweep — KM đã sử dụng REVERTED wallet_promotion_amountreference_amount filter payment_method_id='wallet_promotion' (V12). KM đã nạp REVERTED Nạp ví − Tiền thu vàoSUM(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 filterDev Spec§16.3 Tooltip Tài chínhUI/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 PolicyAll 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" derive topup − collected (V10 forbidden). Đây là copy FE/QA dễ dùng làm source mapping.

Thay đổiFileVị 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_amountDev Spec§16.7 Customer tableFE, QA, BE
dev-spec §16.8 Revenue table — cột "KM đã nạp" REVERTED total_wallet_topup − total_collectedSUM(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 V10Dev Spec§16.8 Revenue tableFE, QA, BE
Assumption clarification L1822invoice.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 AssumptionsBE

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 đổiFileVị tríẢnh hưởng
PRD A9 Glossary "KM đã nạp" REVERTED Nạp ví − Tiền thuparent_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/QAPRDA9 GlossaryAll
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ả địnhDev Spec§6 Phase 1 cash flow sampleFE, 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)PlanTask 13 Step 1FE

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 đổiFileVị tríẢnh hưởng
Section 10.1 Click Action Matrix mới — 7 sub-section canonicalUI SpecSection 10.1.1 — 10.1.7FE, 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 Spec10.1.1FE
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 Spec10.1.2FE
10.1.3 Alert List 5/5 (bù 3 thiếu) + override date range rule cho alert lũy kếUI Spec10.1.3FE
10.1.4 Sub-tab Giao dịch cell click (Mã đơn / KH / NV disabled)UI Spec10.1.4FE
10.1.5 Sub-tab Khách hàng cell click (KH / SĐT mask copy)UI Spec10.1.5FE
10.1.6 Sub-tab Tài chính cell click (Mã đơn / Gọi / expand)UI Spec10.1.6FE
10.1.7 Disabled controls unified rule — visual + tooltip + aria + KHÔNG render <a href> ngay cả khi href="" + tabindex="-1" focus skipUI Spec10.1.7FE, 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 ruleUI Spec§4.4 column 9FE
Mini Rankings L418 — ref Click Action Matrix 10.1.2 + tóm tắt 3 destinationUI Spec§3.4FE

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 đổiFileVị 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.4FE
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.3FE
Plan Task 4 alert payload schemacompute_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 rangePlanTask 4 Step 1BE
Section 3.4 Mini Rankings note + Section 4.4 column note sync với disable Top thẻ Phase 1UI Spec§3.4 + §4.4FE

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 đổiFileVị 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..07Dev SpecC5.4.1BE, 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òngDev SpecC9 NFRTL, 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..05Dev SpecC10BE, 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+POGo-LiveE4.1, E4.2, E4.3Ops, 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ýHandoffSprint 0 — Checklist 1 tuần kickoffAll

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 đổiFileVị tríẢnh hưởng
Bổ sung B-PRE Discovery checklist (3 bảng)UI SpecB-PREAll
As-Is UI Inventory mở rộng từ 9 → 32 dòng UI ID kèm Evidence file:lineUI SpecB0.1FE, UI/UX
Thêm B0.4 Field × Surface (28 field × 12 cột) + B0.5 State × Screen (13 màn × 6 state)UI SpecB0.4 / B0.5FE, QA
Thêm B0.6-0.8 Wireframe Quality + Bilingual Pairing + Schema Cross-CheckUI SpecB0.6 / B0.7 / B0.8FE, QA
Thêm B1.0 quick-scan CTA hierarchy 8 SCRUI SpecB1.0All
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 TaxonomyUI SpecB2.1 → B2.8FE, QA
Thêm B5A Export Deep + B6A Copy Length Budget + B7A Analytics Schema + B8A/B/C Performance/A11y/HapticUI SpecB5A / B6A / B7A / B8A-CFE, QA
Thêm B-Microcopy / B-Voice / B-i18n / B-Versioning / B-HelpUI SpecB-Microcopy → B-HelpUI/UX
Tình huống biên tổ chức 12 nhóm chuẩn G1-G12 (60+ case) + 44 case spa-context theo SCRUI SpecB-Tình huốngQA
Thêm B-POST verification (4 checkpoint) + B-QUALITY 45 rủi roUI SpecB-POST / B-QUALITYAll
Tham chiếu UI Spec v2.0 mới — PRD content business không đổiPRDLịch sử thay đổiAll
Tham chiếu UI Spec v2.0 mới — package readiness sẵn sàng bàn giaoDecision BriefHeaderPO/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 đổiFileVị 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 SpecToà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-stepUser GuideToà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 configPrint Design SpecToà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-QUALITYUI SpecB2.6) Variant per role, SCR-18, B-QUALITYUI/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 SpecSCR-04, SCR-05, SCR-08, FR-007, FR-011, C5.5A, C5.5BUI/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_recordDev SpecC4.0 enum, C4.8, C5.5B, C5.16 Trigger 4BE + 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 UIPRDFR-011 AC-011.13..20PO + 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 P12QA Test PlanD2.7, D2.11, D5.2QA
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)HandoffSection 3 RACI, Section 5.1 BlockerPM + 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 BriefToàn filePO + 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 đổiFileVị tríẢnh hưởng
Thêm Decision Brief vào docs public để có cửa vào package cho PO/TL/SếpDecision BriefToàn filePO + 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-QUALITYUI SpecB2.1A, B2.2, B2.8A, B-QUALITYUI/UX + FE + QA
Đồng bộ PRD theo warning banner/design token intent và đơn đã hủy hiển thị theo đúng quyềnPRDFR-001, FR-007PO + FE + QA
Đồng bộ test oracle cho đơn đã hủy, trạng thái thanh toán đủ và warning bannerQA Test PlanTC-FR-001, TC-FR-007QA
Cập nhật handoff/index theo checklist B-QUALITY và lịch sử thay đổi v3.1Handoff, IndexCross-spec verification, Lịch sử thay đổiAll

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-groupdva-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 đổiFileVị 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 NamIndex, PRDTài liệu, A5, A10PO/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 guardIndex, UI Spec, QA, HandoffB0, D1, FilesUI/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 sourceIndex, SOURCE OF TRUTH (internal), PRD, Dev Spec, QA, HandoffLịch sử thay đổi, Canonical Decisions, D2PO/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 VitePressIndex, HandoffFiles, Lịch sử thay đổiPM + 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 đổiFileVị 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ớiIndexMô tả, Tính năng chính, Lịch sử thay đổiPO + 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 đầuSOURCE OF TRUTHLịch sử thay đổi, Solution LockPO + 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 scanPRDLịch sử thay đổi, A9 GlossaryPO + 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ệnUI Spec, QAB7, B9, D2UI/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 đổiFileVị 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 v2IndexTài liệu, Lịch sử thay đổiPO/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 dashboardDecision Brief, Source of Truth, Evidence PackTóm tắt 5 phút, Decision Registry, Ma trận Dynamic Permission v2PO + 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 LPRDZ) Nhật ký quyết định, A5) Yêu cầu chức năngPO + 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-firstUI SpecB0, B1.6, B-FR012, B9UI/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 v2Dev SpecC2, C3, C4, C5, C8, C11TL + 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-007QA Test Plan, Go-Live, HandoffTC-PERM-*, E1/E2/E4, TG-001..TG-007QA + 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 đổiFileVị 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ệtIndexMô tả, Tài liệu, Tính năng chính, Lịch sử thay đổiPO + 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ếuUI SpecQuy tắc copy UI Việt Nam, B5, B6, B7, B8, B9, B-Wireframe, B-Tình huống biênUI/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 đổiFileVị 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-liveIndexMô tả, Lịch sử thay đổiPO + 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ó ownerTóm tắt quyết địnhTrạng thái package, Tóm tắt 5 phútPO + 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 checklistHandoff0, Thứ tự implement, Tiêu chí hoàn tất bàn giaoDelivery + 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 đổiFileVị 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 v2IndexMô tả, Lịch sử thay đổiPO/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_pnlSOURCE OF TRUTHDEC-003, DEC-018, 5.2PO + 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_pnlPRDPD-002, DEC-003, DEC-018, FR-003, FR-015PO + 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/refetchUI SpecSCR-01, Ma trận Dynamic Permission, B-Tình huống biênUI/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 modeDev SpecC2, C4, C5, C6, C8TL + 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 PermissionQA Test Plan, Go-Live, HandoffTC-003, TC-018..020, E1/E3/E4, BLK-002QA + 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 đổiFileVị 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ưởngIndexMô tả, Tính năng chính, Lịch sử thay đổiPO + 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ómSOURCE OF TRUTH2.1, DEC-044PO + 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ẩmTóm tắt quyết định, PRDBản đồ ảnh hưởng, A12PO + 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 planningDev SpecC2.4, C11.0TL + 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ưởngQA Test Plan, Go-Live, HandoffD6, E1.2, E1.3, B-15QA + 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 đổiFileVị 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 v2IndexMô tả, Tính năng chính, Lịch sử thay đổiPO + 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ừ FESOURCE OF TRUTHDEC-043, Dynamic Permission v2 — ma trận canonicalPO + 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 behaviorPRDFR-011, FR-016, FR-017, FR-018, FR-019, A11PO + 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/refetchUI SpecB5, B5.1, B5.2, B5.3, B5.4UI/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 splitDev SpecC1, C8.0, C11.4, C12TL + 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.6QA Test Plan, Go-Live, HandoffD2.11, D2.16, D3.4, D5, E1.2, B-12AQA + 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 đổiFileVị 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 publicIndex, Tóm tắt quyết địnhMô tả, Tài liệu, Lịch sử thay đổi, Tóm tắt 5 phútPO + 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 defaultSOURCE OF TRUTH, EVIDENCE PACKDEC-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_dataPRDA3, FR-005, FR-010, FR-016, A10, A11PO + 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ếuUI SpecB1, 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 approvalUI SpecB0, B2, Đầu vào chuẩn, Lịch sử thay đổiUI/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/backtickUI SpecĐầu vào chuẩn, B3, B5, B6, B-Tình huống biên, Lịch sử thay đổiUI/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ệuUI SpecB1.0, B3.0, B3.0.1, B3.0.2PO + 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 auditUI SpecB1.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 gateDev SpecC3, C4, C5.4, C5.5A, C5.14, C6, C12TL + 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-D0Dev Spec, Go-LiveC4.0, C7, C8, E4BE + 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 pilotQA Test PlanD2.8, D2.10, D4, D5QA + 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 = 0Go-LiveE1.2, E2.2, E4.2, E5.2Ops + 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ớiHandoffTimeline, Effort, Blocker, Tiêu chí hoàn tất bàn giaoDelivery + 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 đổiFileVị 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 packageIndexLịch sử thay đổiPO/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 thuPRD, UI Spec, QA Test Plan, Go-LiveFR-015, SCR-01A, TC-017, E2/E4PO/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ố địnhUI SpecB1, SCR-02UI/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 đổiFileVị 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 địnhMô tả, Lịch sử thay đổi, Tóm tắt 5 phútPO + 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, PRDDEC-016, FORMULA-005, FORMULA-008..010PO + 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 SpecFR-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/StaffUI SpecSCR-01, Demo gắn vào UI hiện tại, B6/B9UI/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 ứngDev Spec, QA Test Plan, Go-LiveC3/C5/C12, TC-015, TC-017, G8/G9BE + 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.

FileNội dung
SOURCE OF TRUTHCanonical decisions, current-code facts, Day-1 simplifications
EVIDENCE PACKEvidence codebase, legal/business notes, risk log
PRDScope, FR, formulas, metrics
UI SpecScreen map, flow walk-in/cross-branch, permission matrix
Dev SpecData model, actions, security, tasks, traceability
QA Test PlanCoverage, seed data, test cases
Go-LiveReadiness gates, cutover, rollback
HandoffRACI, 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 đổiFileVị tríẢnh hưởng
Chốt popup rule cho case same-day cross-branch hiển thị Nhiều chi nhánhPRDA5) Functional RequirementsFE
Canonical hóa no-data thành success payload rỗng, không dùng GraphQL error cho empty dataDev SpecC5) Integration ContractsFE
Bổ sung analytics instrumentation vào tasks và traceability phase 1Dev SpecC11) TasksFE
Bổ sung test case no-data success payload và same-day cross-branchQA Test PlanD2) Test CasesQA
Publish thêm evidence pack để khóa bằng chứng nguồn trước package specEVIDENCE 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 đổiFileVị tríẢnh hưởng
Bump feature index lên v1.2, cập nhật lịch sử thay đổi, bổ sung SOURCE OF TRUTHEVIDENCE PACK vào package phát hànhIndexLịch sử thay đổiAll
Đồng bộ PRD theo package mới: sửa SCR mapping, bổ sung lifecycle contract cho mapping versionbackfill, nâng chuẩn Decision Log, và khóa report-role/seed source/confidence/refresh defaultsPRDDecision Log + FR + Lifecycle + DefaultsPO + 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ơnUI SpecSCR-02 + Permission + TooltipFE + 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 SpecC3, C5, C6, C8, C12BE + FE + TL + QA
Mở rộng QA coverage cho lifecycle, confidence rubric, hybrid refresh và override confidence escalationQA Test PlanD2, D3, TC-FR-004, TC-FR-008QA + 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ốtHandoff, SOURCE OF TRUTH, EVIDENCE PACKDefaults + Canonical refsPM + 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.

FileNội dung
PRDQuyết định business, FR, formulas và semantics phase 1
UI SpecTab LTV Phase 1, filter, aggregate tables, mapping drawer, override dialog
Dev SpecData model ltv_*, query/actions, backfill, RBAC, observability
QA Test PlanSeed data, test cases revenue/source/versioning/semantics
HandoffRACI, 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ố.

FileNội dung
SOURCE OF TRUTH (internal artifact)Canonical decisions, business truths, current-code facts
PRDScope, FR, glossary, formulas
UI SpecScreen map, filter hidden/fixed, popup, tooltip
Dev SpecRules implementation, output contract, tasks, traceability
QA Test PlanCoverage, seed data, regression cases
HandoffDelivery 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 đổiFileVị 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ẩnIndexLịch sử thay đổi, Bản Đồ Thay Đổi v3.1.3All
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_idPRDDEC-013, FR-020, FORMULA-007PO + 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 branchUI SpecNhóm Công chuẩn, BR-003UI/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_idDev SpecFORMULA-010, C4 Data Model, seed dataBE + 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/serviceQA Test Plan, Go-Live, HandoffTC-STD, pre-check scope mapping, Compatibility ReminderQA + 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 đổiFileVị 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.2IndexLịch sử thay đổi, Bản Đồ Thay Đổi v3.1.2All
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 ModulePRDDEC-026, DEC-033, DEC-034, FR-003, FR-016, FR-018PO + 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ămUI SpecTab Quy định, SCR-00C, EXP-008UI/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_unitDev SpecC3 Rules/Formulas, C4 Data Model, seed dataBE + 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 PNQA Test Plan, Go-Live, HandoffTC-FR-016, TC-CFG, pre-check schema, Compatibility ReminderQA + 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ánhbá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 đổiFileVị 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ớiIndexLịch sử thay đổi, Bản Đồ Thay Đổi v3.1.1All
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-unitPRDChangelog, DEC-032, A2) Context, FR-003PO + 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ớiUI SpecChangelog, Tab Quy định, Nhóm GPSUI/UX + FE + QA
Đồng bộ contract kỹ thuật GPS: branch coordinates reuse branch master data, gps_radius_meters có thể NULL để fallback globalDev SpecChangelog, C4 Data Model, GPS contractBE + FE + QA
Đồng bộ QA/Go-Live/Handoff theo cùng GPS oracle và rollout wordingQA Test Plan, Go-Live, HandoffChangelog, Điều đã chốt, RolloutQA + 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 đổiFileVị 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ửaIndexThông tin chung, Lịch sử thay đổi, Bản Đồ Thay Đổi v1.1All
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ãiPRDCập nhật v1.1, US-1.1, US-4.1, US-4.2, US-4.7, A9PO + 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 Spec0. Cập nhật v1.1, 3.1, 6.1, 6.2, 6.3, 6.7, 6.8UI/UX + FE
Cập nhật dev spec theo source-of-truth codebase: map wallet/wallet_promotionVND/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 Spec0. Cập nhật v2.1, 3.1, 6.1, 6.2, 11.3, 16.1, 16.2, 16.3, 16.8, 16.12BE + 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ộPlanSpec References, File Structure, GetWalletBalanceAggregate, Task 13FE + BE + Tech Lead
Rút gọn Sub-tab Marketing: bỏ tab riêng AffiliateSo sánh kênh, gộp thành các khối embedded trong Nguồn KH để tránh trùng nghĩaPRD, UI Spec, Dev Spec, PlanUS-5.2, 7.2, 7.4, 16.16-16.18, Task 16UI/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.

FileNội dung
PRD28 decisions, 20 FRs, 7 formulas, release plan 1A→1B→1C
UI Spec9 screens (Settings Module, Working Sheet, Mobile, Export)
Dev SpecSchema, runtime 4 mốc, penalty engine, seed 31 ca
QA Test Plan100+ test cases, penalty/OT/công chuẩn coverage
Go-Live25 gates, pre-checks, deploy steps
HandoffBlockers, 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 đổiFileVị tríẢnh hưởng
Xóa "Chờ duyệt" khỏi Summary Bar + CardsPRDFR-001, FR-002FE
Xóa FR-004d (mix trạng thái)PRDA5) FRFE, QA
Dropdown filter: bỏ "Chờ duyệt"PRDFR-006FE
Luôn hiện group header (DEC-003 v1.1)PRDFR-004aFE
Xóa wireframe mix trạng thái, 7 copy text keys, Edge Case #4UI SpecB6) Copy TextFE
showGroupHeaders = true, xóa pending logicDev SpecC6.5FE
Xóa DS-007 + 7 test cases, TC-004a update expectedQAD3, D4QA
Xóa nút "Bỏ filter" trong card + TC-003-02PRD, QAFR-003FE, 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 đổiFile
DEC-012 + FR-003/005 + Glossary + FORMULA-001PRD
SQL Function 1 thêm filter payment_method_idDev Spec
Dropdown label + Copy Text + TooltipUI 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 đổiFile
Khóa DEC-D29DEC-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ôngPRD
Thêm flow SCR-08 Chuyển kho, nút Chuyển kho trên SCR-01, matrix permission và copy/tooltip cho transfer formUI Spec
Thêm action transferToMaterialWarehouse, event trigger inventory_document_material_warehouse, behavior export_material_warehouse / import_material_warehouse và traceability FR-022Dev Spec
Bổ sung TC-TRF-001TC-TRF-017, seed DS-TRF-001, coverage permission/concurrency/cancel/auto-deduct và nâng tổng QA lên 85 test casesQA Test Plan
Cập nhật gate deploy/smoke/rollback cho transfer, pilot branch và data cleanup kho chính không block go-liveGo-Live Checklist
Mở rộng RACI/timeline/tasks cho transfer BE/FE/QA, thêm acceptance criteria và open items OI-07 / OI-08Handoff

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 đổiFile
+DEC-D22~D28, +FR-018~021, FR-007/008/010 rewrite, glossary +5 termsPRD
SCR-03 +batch list, SCR-06 +giá/HSD/mã lô, +16 copy texts, +7 edge casesUI Spec
+material_batch table, FIFO pseudocode, cron HSD, +BatchStockIn mutation, C12 rewriteDev Spec
Stock-in TCs rewrite (batch contract), +TC-CFG-001/002, FIFO/HSD FR-ref fix, 49→66 TCsQA Test Plan
+batch migration, +cron check, +3 monitoring metricsGo-Live Checklist
23d→29d, +5 tasks, M1-M7 adjusted T+25dHandoff

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).

FileNội dung
Design Doc6 decisions, blast radius analysis, verification tiền tour runtime
PRD14 DECs + 8 FRs + Glossary (8 terms) + Milestones
UI Spec6 screens, 3 flows, wireframes, 17 copy text, 10 edge cases
Dev SpecGraphQL fragments, 2 formulas, 18 tasks (~10.85d)
QA Test Plan30 test cases (3 CP + 3 blast radius), seed data
HandoffRACI, 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).

FileNội dung
Design DocKiến trúc, 9 decisions, data model, performance (5K-30K tasks/day), tour money proof
PRD14 DECs + 8 FRs + Glossary (10 terms) + Milestones
UI Spec5 screens, 3 flows, Permission Matrix (4 roles), 16 copy text, 7 edge cases
Dev SpecDDL + trigger, Hasura YAML, GraphQL (4 operations), 15 tasks (~10.75d)
QA Test Plan22 test cases (5 critical path), 3 seed datasets
HandoffRACI, 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 đổiFileVị tríẢnh hưởng
+7 DEC (DEC-16→22), +4 FR (FR-011→014), A2 restructure tổng quanPRDA2) Context, Z) Decision LogAll
Migration 2 columns, FORMULA-010, event handler, Hasura mutations, +6 tasksDev SpecC7) MigrationBE
+SCR-02 Settings, wireframe cập nhật, +6 edge casesUI SpecB-SettingsFE
+8 TC, +3 datasets (DS-006→008), coverage 20→28 TCQAD4) Test CasesQA
+6 tasks (T-13→18), effort 11.5→20h, ASM-007 P0 blockerHandoffTimelineAll

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.

FileNội dung
PRD8 DECs + 7 FRs + Glossary
UI Spec3 screens: Consent, Profile Popup (Flutter) + Admin Tab (Web)
Dev SpecData model + Hasura YAML + Flutter BLoC + Vue 3
QA Test Plan41 test cases + seed data SQL
HandoffRACI + 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.

FileNội dung
PRDA0 Overview + 19 DECs + 12 FRs + 4 Formulas
UI Spec8 screens mới + delta 8 màn cũ + 30 edge cases
Dev SpecData model + FIFO Go action + 30+ files impact
QA Test Plan40 test cases (14 P0)
HandoffRACI + 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 đổiFileVị 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)PRDZ) Decision LogAll
Thêm FR-009: Tab container + redirect route cũPRDA5) FRFE
Thêm SCR-00: Tab container layoutUI SpecB1.1) SCR-00FE
Cập nhật C6: hub file structure + redirect routesDev SpecC6) FrontendFE
Thêm TC-FR-009: 10 test cases (tabs + redirect)QATC-FR-009QA
Timeline +1 ngày FE, verify redirect stepsHandoffTimelineAll

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 đổiFileVị tríẢnh hưởng
Thêm DEC-008/009/010: truy thu real-time + dropdown riêng + drill-down in-scopePRDZ) Decision LogAll
Thêm FR-007: SQL function truy thu commission (wallet DB)PRDA5) FRBE
Thêm FR-008: Drill-down popup chi tiết giao dịch ngàyPRDA5) FRFE
Thêm FORMULA-004: Tổng truy thu NV ngàyPRDC3) FormulasBE
Thêm SCR-02: Popup chi tiết + số âm màu đỏUI SpecB2.1) SCR-02FE
Thêm Function 3: search_employee_daily_commission_clawback (wallet)Dev SpecC3) SQL FunctionsBE
Thêm GraphQL queries: clawback aggregate + detailDev SpecC5) GraphQLBE + FE
Thêm TC-FR-007 (8 cases) + TC-FR-008 (10 cases)QATC-FR-007QA
Timeline +4 ngày, wallet deploy stepsHandoffTimelineAll

13:00 — Publish — Thêm mới

redesign-tab-tu-van

Redesign Tab Tư vấn (Commission → Advisory Fee) v1.0 — Enhancement

FileNội dung
PRD8 DEC, 13 FR, 5 FORMULA — redesign UX + đổi thuật ngữ
UI SpecWireframes, 40 copy text, 8 tooltips, 15 edge cases
Dev SpecFE component structure, formulas, 12 tasks
QA Test Plan77 test cases, 7 seed datasets
HandoffRACI, 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 đổiFileVị tríẢnh hưởng
FR-P3-01 mở rộng: Hybrid Distribution (App + Batch offline)PRDPhase 3 FRAll
Thêm FR-P3-01a: Generate batch mã pre-assign cho đối tácPRDPhase 3 FRBE + FE
Thêm distribution_method vào CREATE TABLE voucher_campaign_affiliatesDev Spec4.4 NEW TABLEBE
Thêm migration assigned_affiliate_id trên user_vouchersDev Spec4.3 ALTER user_vouchersBE
Thêm action generate_affiliate_voucher_batch.go + 6 error codesDev Spec2.1 BE FilesBE
Thêm 2 FE components: AffiliateBatchPanel.tsx, GenerateBatchDialog.tsxDev Spec2.4 FE FilesFE
Phase 3 tasks: 5→7 BE tasks, 2→3 FE tasks, ~5d→~7dDev SpecPhase 3 TasksAll

14:00 — Publish — Cập nhật

prepaid-card-analytics-tab

Prepaid Card Analytics Tab v1.0 → v1.0.1

Thay đổiFileVị tríẢnh hưởng
Thêm Z) Decision Log (16 decisions)PRDZ) Decision LogAll
Sửa A9) Glossary đúng format 4 cộtPRDA9) Thuật ngữAll
Sửa tham chiếu Section 9 sang hyperlinkPRD9. Tài liệu tham chiếuAll
Fix DISTINCT_ON_ORDER pseudo-code → SQL hợp lệDev Spec9.2 MV SQLBE
Fix STABLE → VOLATILE cho alert/search functionsDev Spec9.9, 10.2BE
Thêm wireframe Tab "Hành vi sử dụng" (Section 5.3)UI Spec5.3 Expanded RowFE
Thêm wireframe Tab "Hoa hồng" (Section 6.5)UI Spec6.5 Hoa hồngFE
Fix Task 19 thiếu Step 2PlanTask 19Dev
Fix typo PREPAID_cARD → PREPAID_CARDPlanTask 5, Task 8Dev

Dashboard Tổng hợp Chiến dịch Voucher v1.0 → v1.1

Thay đổiFileVị 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 cachingPRDC) Technical NotesBE
Thêm RSK-004: sort theo metrics cần tính toàn bộ trước paginatePRDA7) RisksBE

Publish — Thêm mới

prepaid-card-analytics-tab

Prepaid Card Analytics Tab v1.0

Thay đổiFileVị tríẢnh hưởng
Tạo PRD: bối cảnh, 7 epics, 23 user stories, NFR, phasesPRDToàn bộAll
Tạo Dev Spec: kiến trúc, 6 MVs, SQL, component tree, performanceDev SpecToàn bộBE + FE
Tạo UI Spec: layout, wireframes, filter bar, states, interactionsUI SpecToàn bộFE
Tạo Implementation Plan: 23 tasks, 3 chunks, file structurePlanToàn bộDev

Dashboard Tổng hợp Chiến dịch Voucher v1.0

Thay đổiFileVị 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 ExcelPRDA5) FRFE
2 DB functions mới (list + aggregate), 1 index, 4 formulas with edge casesPRDC) Technical NotesBE
Bổ sung Manager vào VOUCHER_REPORT_ACCESS_ROLESPRDFR-006FE

Nâng cấp Voucher Management: Kiểm soát, Thống kê & Đối tác v1.0

Thay đổiFileVị 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 FRsPRDA5) FRAll
10 components mới, wireframes, 30 edge cases, permission matrix 7 rolesUI SpecB2) ComponentsFE
2 tables mới, 3 SQL functions, 6 formulas, Hasura YAML, 35 dev tasksDev SpecC4) Data ModelBE
76 test cases across 4 phases, seed data, entry/exit criteriaQA Test PlanD2) Test CasesQA
Per-phase deploy steps, rollback plan, Day-0/Day-1 monitoringGo-LiveE3) Deploy StepsOps
Perf-fix prerequisite: expression index + merge CTEs + split aggregate (6-8x faster)Perf-fixTask 1-3BE+FE

Báo cáo Đơn hàng Voucher/Quà tặng v1.0

Thay đổiFileVị tríẢnh hưởng
Thêm tab mới trong Revenue Report Group — tracking voucher/gift consumptionPRDA5) FRAll
UI layout: 13 cột, summary bar 4 metrics, cascading filter, visual groupingUI SpecB2) SCR-01FE
4 database indexes BLOCKER + GraphQL query + export pseudocodeDev SpecC7) MigrationBE
42 test cases covering 7 FRsQA Test PlanD2) Test CasesQA

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 đổiFileVị tríẢnh hưởng
Đổi tên C3 Formulas → A10 Business FormulasPRDA10) FormulasAll
Thêm Security noteDev SpecC8) SecurityBE
Thêm NFR & PerformanceDev SpecC9) NFRBE
Thêm ObservabilityDev SpecC10) ObservabilityBE
Thêm Tasks breakdownDev SpecC11) TasksBE + FE
Thêm TraceabilityDev SpecC12) TraceabilityQA
Thêm D5 Entry/Exit CriteriaQAD5) Entry/ExitQA
Xóa deploy checklist khỏi handoffHandoffAll

Tổng hợp tài chính đơn hàng v1.1 → v1.2

Thay đổiFileVị tríẢnh hưởng
Thêm A10 Business FormulasPRDA10) FormulasAll
Cập nhật Pending Decisions formatPRDPending DecisionsAll
Thêm RACI matrixHandoffRACIAll

Tổng hợp tài chính đơn hàng v1.0 → v1.1

Thay đổiFileVị tríẢnh hưởng
Thêm FR-008 chi phí breakdownPRDFR-008FE
Sửa FORMULA-003 margin (loại trừ đơn hủy)Dev SpecC3) FormulasBE
Thêm TC export ExcelQAD4) Test CasesQA

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

Cập nhật lần cuối: