Appearance
Delivery Index — Nâng cấp Voucher Management
| Field | Value |
|---|---|
| Feature | Nâng cấp Voucher Management: Kiểm soát, Thống kê & Đối tác |
| Version | 1.0 |
| Date | 19/03/2026 |
| Complexity | Large (4 phases, cross-module) |
Files
| # | File | Audience | Ghi chú |
|---|---|---|---|
| 1 | PRD | PO, Tech Lead, All | Z + A: 22 FRs, 4 phases, decision log |
| 2 | UI Spec | FE Dev, UI/UX | B: 10 components, wireframes, states, copy text |
| 3 | Dev Spec | BE Dev, FE Dev, Tech Lead | C1-C12: SQL, Hasura YAML, Go, traceability |
| 4 | QA Test Plan | QA | D1-D5: 76 test cases, seed data |
| 5 | Go-Live Checklist | Ops, Tech Lead | E1-E5: per-phase deploy, rollback plan |
| 6 | Perf-fix Campaign Detail | BE Dev, FE Dev | Prerequisite: 3 tasks tối ưu hiệu năng |
RACI
| Deliverable | PO | TL | FE Dev | BE Dev | QA | Ops |
|---|---|---|---|---|---|---|
| PRD | A | C | I | I | I | — |
| UI Spec | C | I | R | I | I | — |
| Dev Spec | I | A | C | R | I | — |
| QA Test Plan | C | I | I | I | R | — |
| Go-Live Checklist | I | A | I | I | I | R |
| Migration + Hasura (P1) | I | A | — | R | I | C |
| Migration + Hasura (P2) | I | A | — | R | I | C |
| Migration + Hasura (P3) | I | A | — | R | I | C |
| Migration + Hasura (P4) | I | A | — | R | I | C |
| Go Handlers | I | C | — | R | I | — |
| FE Components (P1) | I | I | R | — | I | — |
| FE Components (P2) | I | I | R | — | I | — |
| FE Components (P3) | I | I | R | — | I | — |
| FE Components (P4) | I | I | R | — | I | — |
| Perf-fix | I | A | R | R | I | — |
| Partner App UI | A | C | Partner Dev (R) | — | R | — |
R = Responsible, A = Accountable, C = Consulted, I = Informed
Timeline
| # | Milestone | Target | Owner | Phụ thuộc |
|---|---|---|---|---|
| 0 | Perf-fix deploy | T+3 ngày | BE Dev + FE Dev | — |
| 1 | P1 — BE migrations + Go handlers | T+5 ngày | BE Dev | — |
| 2 | P1 — Hasura metadata | T+6 ngày | BE Dev | Sau migration |
| 3 | P1 — FE components | T+9 ngày | FE Dev | Sau Hasura + codegen |
| 4 | P1 — QA testing | T+12 ngày | QA | Sau FE deploy staging |
| 5 | P1 — Go-Live | T+14 ngày | TL | QA pass |
| 6 | P2 — BE function + migration | T+17 ngày | BE Dev | Perf-fix done |
| 7 | P2 — FE tab + export | T+20 ngày | FE Dev | Sau codegen |
| 8 | P2 — QA testing | T+23 ngày | QA | Sau FE deploy |
| 9 | P2 — Go-Live | T+25 ngày | TL | QA pass |
| 10 | P3 — BE table + quota logic | T+27 ngày | BE Dev | P2 done (report) |
| 11 | P3 — FE wizard step + badge | T+30 ngày | FE Dev | Sau codegen |
| 12 | P3 — QA testing | T+33 ngày | QA | Sau FE deploy |
| 13 | P3 — Go-Live | T+35 ngày | TL | QA pass |
| 14 | P4 — BE functions | T+37 ngày | BE Dev | Perf-fix done |
| 15 | P4 — FE tab + chart | T+40 ngày | FE Dev | Sau codegen |
| 16 | P4 — QA testing | T+43 ngày | QA | Sau FE deploy |
| 17 | P4 — Go-Live | T+45 ngày | TL | QA pass |
Lưu ý: P2 và P4 có thể chạy song song nếu có 2 FE dev (cả 2 chỉ depend Perf-fix, không depend nhau). P3 phải chờ P2 xong vì extend report.
Gantt Overview
Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7
|---------|---------|---------|---------|---------|---------|---------|
[PERF-FIX ]
[===P1 BE===][=P1 FE=][P1 QA][✓]
[==P2 BE==][=P2 FE=][P2 QA][✓]
[==P3 BE==][=P3 FE=][P3 QA][✓]
[==P4 BE==][=P4 FE=][P4 QA][✓] ← song song P2 nếu có resourceOpen Items / Blockers
| ID | Item | Owner | Deadline | Status | Blocking? |
|---|---|---|---|---|---|
| ASM-01 | Verify staff_id populated đúng cho voucher offline hiện tại | BE Dev | Trước P2 | Open | Yes — P2 report thiếu data nếu sai |
| ASM-02 | Confirm Partner app dùng Hasura GraphQL (không phải REST riêng) | TL | Trước P2 | Open | Yes — nếu REST → cần thêm endpoint |
| ASM-03 | Verify module Affiliate có data (không trống) | PO | Trước P3 | Open | Yes — nếu trống → cần flow tạo đối tác |
| ASM-04 | Confirm PostgreSQL >= 14 trên production | Ops | Trước P4 | Open | Yes — PERCENTILE_CONT cần PG14 |
| RSK-01 | staff_id type mismatch (Go: *string, DB: uuid) | BE Dev | P2 migration | Open | No — fix trong migration |
| PERF | Deploy perf-fix trước P2/P4 | BE+FE Dev | T+3 | Open | Yes — P2/P4 tabs on slow page |
Cross-feature Note
Feature voucher-gift-order-report (báo cáo đơn hàng voucher/gift trong Revenue Report Group) không conflict với feature này:
- gift-order-report = macro view (cross-campaign, góc đơn hàng, module report)
- voucher-enhancement = micro view (per-campaign, góc quản lý voucher, module cms)
- Cả hai đọc bảng
user_vouchersnhưng cột khác nhau, index khác nhau - Migration order: deploy gift-order-report indexes trước (chỉ READ, ít risk), sau đó enhancement (ALTER tables)
Handoff Checklist
- [ ] PO review + sign-off PRD
- [ ] TL review + sign-off Dev Spec
- [ ] Verify 4 ASM (trước khi bắt đầu code)
- [ ] Perf-fix deploy + verify
- [ ] Phase 1 → Phase 2 → Phase 3 → Phase 4 (tuần tự)
- [ ] Mỗi phase: BE → Hasura → FE → QA → Go-Live
- [ ] Post-deploy monitoring per phase (xem go-live-checklist.md E5)