PRD-02 đang có 11 "Order Type" — 8 trong số đó không phải Order Type

Tách 1 cột thành 4 lớp.

Một order thật không chỉ là "loại đơn". Nó là bản chất thương mại × thời điểm giao × cấu trúc đơn × các linked process. PRD-02 đang gộp 4 thứ này vào một ô enum — đó là root cause, không phải chỉ vài mục lẻ.

11
Mục trong bảng Order Type cũ
3+1
Order Type thật (Standard/B2B/CTV + Hub Internal)
3
Delivery timing (derived, không encode cứng)
5
Mục không phải Order Type (composition + non-order)
/01 — BEFORE / AFTER

Cách cũ vs. cách mới

Click vào bất kỳ mục nào để xem nó thuộc lớp nào trong taxonomy mới.
PRD-02 hiện tại
orders.order_type (ENUM, 11 giá trị)
Standardtype 01
B2Btype 02
CTV/Dealertype 03
Hub Internaltype 04
Giao ngaytype 05
Preorder 2–4 ngàytype 06
Scheduled Ordertype 07
Mixed Ordertype 08
Return/Exchange/Replacementtype 09
Incomplete / Needs CS Reviewtype 10
Duplicate Suspectedtype 11
4 loại đầu = Order Type thật · 3 tiếp = derived · 4 cuối = không phải Order Type
Taxonomy 4 lớp (Lợi + Mavis)
Layer 1 enum, persisted
Order Type
Bản chất thương mại · tồn tại xuyên suốt vòng đời · ảnh hưởng pricing/procurement/allocation
Layer 2 derived, not stored as type
Delivery Timing
Suy ra từ delivery_date + stock + lead_time · Hệ tự routing procurement
Layer 3 transient flag
Order Composition
Cấu trúc bên trong đơn · tồn tại tạm thời tại intake · sau khi split thì không còn vai trò
Layer 4 linked records / flags
Non-Order Concepts
Không phải Order Type · là linked records hoặc state/flag mô tả vấn đề
/02 — USE CASE

Một order đi qua 4 lớp như thế nào

Ví dụ: KH doanh nghiệp đặt đơn 50 SKU, 20 có sẵn ở hub HCM, 30 cần nhập từ supplier, giao ngày 20/6.

Layer 1
Order Type
B2B
Customer segment = doanh nghiệp, có contract, áp wholesale pricing
Layer 2
Delivery Timing
Preorder
delivery_date - today = 7 → nhưng hiển thị "Preorder" vì rule UI ≤ 14 ngày
Layer 3
Composition
Mixed
50 SKU → split thành 2 child: 20 in-stock + 30 cần procurement
Layer 4
Non-Order
Đơn mới, không có Return/Exchange. Không flag Incomplete/Duplicate
DOWNSTREAM ROUTING (suy ra tự động từ 4 lớp)
pricing
Áp wholesale pricing B2B · contract discount 12%
procurement
30 SKU short → auto-create Procurement Draft · ATP check 4 SKU supplier lead time 5 ngày
allocation
20 SKU từ hub HCM reserve · 30 SKU incoming từ supplier → allocation tự động
/03 — OLD WAY vs NEW WAY

Workflow cũ vs. Vibe Coding

Cùng một feature — phân loại Order Type. So sánh từng bước: ai làm gì, tốn bao lâu, output ra sao. Mục đích không phải "AI thay người" mà là "AI làm accelerator, người giữ quyết định".

Cách cũ — Waterfall-lite
~ 2 tuần
STEP 1 · Day 1–3
BA viết PRD
30+ trang · 11 Order Type liệt kê hết · Mermaid flow diagram · ERD sơ bộ
→ Output: PRD-02.docx · 8.4MB · 47 trang
STEP 2 · Day 4–6
Reviewer đọc + góp ý
Nghĩa gửi 3 vấn đề chính · Lợi refactor thành 4 lớp · Mavis bổ sung 11 câu hỏi open
→ 3 vòng review qua Slack/Group · mỗi vòng 1–2 ngày chờ
STEP 3 · Day 7–9
BA revise PRD
Đối chiếu 3 nguồn feedback · rewrite phần Order Type · đồng bộ với 4 lớp
→ Output: PRD-02-v2.docx · chưa chắc đã hết vấn đề
STEP 4 · Day 10–12
Tech Lead vẽ design
ERD chuẩn · sequence diagram · API contract · migration plan · rollback strategy
→ Nếu PRD đổi tiếp → phải redo design. Lặp lại.
STEP 5 · Day 13–14
QA viết test case
Dựa trên PRD-v2 + design-v1 (chưa chắc khớp nhau)
→ Test case có thể sai nếu spec đổi tiếp
STEP 6 · Day 15+
Dev code · QA test · Deploy
Phát hiện thêm 3 edge cases chưa có trong PRD → quay lại revise
→ Vòng lặp có thể lặp 2–3 lần
Tổng: 2–4 tuần/feature · 3+ vòng review · spec có thể đổi giữa chừng · 80% effort là alignment, 20% là build
Cách mới — Vibe Coding
~ 3–5 ngày
STEP 1 · Day 1 morning
BA viết SPEC (1 trang)
Mục tiêu · 3–5 user flow · schema fields sơ bộ · 5–10 edge case · out of scope rõ ràng
→ Output: SPEC.md · 1.2KB · 1 trang
STEP 2 · Day 1 afternoon
AI generate code từ SPEC
Migration files · API endpoints · UI components · test stubs · docstrings
→ Output: PR đầu tiên có code chạy được, không phải skeleton rỗng
STEP 3 · Day 2
Tech Lead + BA review diff (1 lần)
Focus vào: business logic sai · edge case bị miss · security issue. Không review style/format.
→ Code có match SPEC không? Có thiếu case nào không?
STEP 4 · Day 3
Merge + auto-deploy staging
Test bằng data thật (hoặc synthetic data do AI generate)
→ Feedback loop 1–2 giờ, không phải 1–2 ngày
STEP 5 · Day 4–5
Iterate theo data thật
Phát hiện edge case mới → update SPEC → AI regen → review → merge. Mỗi vòng 2–4 giờ.
→ Không có "vòng review kéo dài cả tuần"
STEP 6 · Day 5+
Ship Phase 1 + monitor
Taxonomy minimum viable (3+1 type) · refactor khi có data đủ lớn
→ 80% value ship sớm · 20% còn lại rõ hơn qua data
Tổng: 3–5 ngày/feature · 1 vòng review · spec thay đổi thì chỉnh sửa nhanh · 20% alignment, 80% build
SO SÁNH TRỰC TIẾP
Tiêu chí Cách cũ Cách mới Chênh lệch
Spec length 30+ trang 1–3 trang −90%
Review rounds 3+ vòng 1 vòng (sau khi có code) −67%
Time to first working code 2–4 tuần 1–2 ngày −80%
Refactor cost nếu sai Cao (redo PRD + design + code) Thấp (chỉnh SPEC + regen code) −60%
Domain knowledge cần 100% ở người Vẫn 100% ở người (AI là accelerator) 0%
Risk chính Spec kéo dài, scope creep, BA–Tech lệch pha AI hiểu sai requirement, người ký mà không đọc Đổi risk
Khi nào dùng Compliance nghiêm ngặt, tổ chức lớn, audit trail bắt buộc Startup/SMB, MVP, internal tool, refactor nhanh Context matters
⚠️ GUARD RAILS — ĐỪNG BỎ QUA
1. Domain knowledge vẫn là của người
AI có thể viết nhưng hiểu sai business rule. BA/Tech Lead phải đọc kỹ output, không blind-sign.
2. Spec ngắn ≠ spec thiếu
1 trang nhưng phải cover: mục tiêu · out of scope · edge cases quan trọng. Đừng tưởng ngắn = đủ.
3. Data thật mới là benchmark
Đừng ship full taxonomy chỉ vì "nghe có lý". Phase 1 minimum viable, refactor khi có data lớn.
/04 — META

Cái này được build bằng vibe coding

Để demo cách workflow mới hoạt động. SPEC 1 trang → HTML 1 file → deploy. Tổng thời gian: chưa đến 5 phút.

📝
SPEC.md (1 trang)
Mục tiêu · Sections · Design intent · Stack
Không phải PRD 30 trang, không phải ERD chuẩn. Chỉ đủ để AI scaffold code đúng.
index.html (single file)
Vanilla JS + Tailwind CDN · dark glass UI
AI generate 90%, designer review visual hierarchy, không optimize premature.
🚀
Cloudflare Pages (live URL)
Static deploy · CDN global · free tier
Push → auto-deploy. Không cần devops, không cần CI phức tạp cho static showcase.
FEEDBACK CHAIN (2026-06-13)
N
Nguyễn Hữu Nghĩa · Tech Lead
Review 3 vấn đề chính: Incomplete/Duplicate không phải Order Type · Preorder vs Scheduled ranh giới mờ · 3 delivery timing chỉ là derived từ delivery_date
→ Đề xuất: Order Type = commercial essence, Delivery mode = derived
L
Lợi · Contributor
Refactor thành 4 lớp rõ ràng · Bổ sung Mixed Order tách riêng · Return/Exchange là linked record không phải type
→ Taxonomy sạch hơn: Type · Timing · Composition · Non-order
M
Mavis · AI advisor
Phản biện + bổ sung: "Standard" semantics cần clarify · Override guard rail cần thiết · 3 lớp còn thiếu cross-cutting questions về Phase 1 scope
→ Đề xuất: ship minimum viable taxonomy, refactor khi có data thật
/05 — NEXT STEPS

Bước tiếp theo

Gửi PRD-02 cho BA team, dùng taxonomy 4 lớp này làm reference. Không cần full PRD, chỉ cần SPEC 1 trang + 4 câu hỏi open ở trên.

Layer 1: clarify "Standard" semantics Layer 2: define ngưỡng delivery_date Layer 3: child order split logic Layer 4: separate entity cho Return