Skip to content

Test Scenarios · BQ-Calibrated

8 kịch bản end-to-end chạy trên seed snapshot đã hiệu chỉnh từ BigQuery boxme-cloud.boxme_insights (Q1 2026 actuals). Mỗi kịch bản dài ~5–10 phút, mở rộng từ bộ scenarios.md hiện có.

Pre-condition cho toàn bộ:

bash
cd wfp-v2 && npm run seed && npm run dev   # mở http://localhost:5173

Snapshot phải có 6 kho × 12 khách × ~16k history × 162 config.

#TênVai tròThời gianReference data
S1Tết closure & recoveryPlanner8 phútmonthly:2 = 0.83, Tết 16-18/2
S2Calibrated MEGA 11.11Planner + KAM10 phútevent:MEGA_SALE = 3.8, history 4 ngày MEGA
S3C-Store top-customer cycleKAM + Ops7 phútc_cstore_vn avg 3,741/ngày
S4B2B carton workflowKAM + WH6 phútc_unicorn_b2b, 271 đơn Q1
S5Spillover HCM-TP → HCM-TTOps5 phútSpillover ratio 0.7
S6UPH override per-customerConfig admin6 phútKEY customers có UPH override
S7Low-confidence flag cho 12.12Forecast lead5 phútsample_size=4 < threshold 5
S8Báo cáo kho khớp BQ Q1 2026Ops manager8 phútTotal Q1 = 6.58M đơn

S1 — Tết closure & recovery

Mục tiêu: Hệ thống xử lý đúng kho VN đóng cửa 3-5 ngày Tết, sau đó recover.

BướcHành độngExpected
1Mở "Cấu hình → Tham số → Tháng"Bảng 12 tháng hiển thị T2 = 0.83 (badge "calibrated from BQ Q1 2026")
2Forecast page → chọn wh_vn_hcm_01 + c_cstore_vn + date 2026-02-17forecast_qty < 800 (Tết closure), confidence không low
3Tăng date lên 2026-02-23 (1 tuần sau Tết)forecast_qty về mức ~2,000–4,000 (recovery)
4Mở Planner cho 2026-02-17 wh_vn_hcm_01Tổng workload < 50 giờ, headcount required ≈ 1-2
5Kiểm tra calendar UINgày 16/2, 17/2, 18/2 hiển thị label "Tết Bính Ngọ — Mùng X"

✅ Pass = bước 1-5 đều đúng.


S2 — Calibrated MEGA 11.11

Mục tiêu: Forecast 11.11 sinh đỉnh tải, low_confidence flag bật do sample size < 5.

BướcHành độngExpected
1"Cấu hình → Tham số → Sự kiện"MEGA_SALE = 3.8 (calibrated)
2Forecast wh_vn_hcm_03 × c_unicorn × 2026-11-11forecast_qty ∈ [8000, 150000], is_low_confidence = true
3Đọc tooltip "low confidence"Hiển thị "sample_size=4 < 5 ngưỡng"
4KAM gửi override submitted_qty = 12000 cho ngày 11.11Status NEW, ghi audit
5Ops "Accept" overrideForecast cập nhật, audit trail có entry
6Planner ngày 11.11Total hours ≈ qty / UPH_eff, spillover hiển thị 30-40% sang ca tiếp

✅ Pass = forecast > NORMAL × 3, low_confidence flag bật.


S3 — C-Store top-customer cycle

Mục tiêu: Top customer (theo NMV Q1 2026) hiển thị full chu kỳ KAM submit → review → planner.

Customer ref: c_cstore_vn (seller_id 367719, net_sale_q1 = 369B VND, avg 3,741 đơn/ngày).

BướcHành độngExpected
1Customer list page → chọn c_cstore_vnTier KEY, product_mix FMCG 60% + COSMETIC 30% + OTHER 10%
2"View forecasts" → tuần nàyDaily ~2,500–4,500 đơn ở wh_vn_hcm_01 (primary)
3"View spillover"~1,100 đơn/ngày spread sang HCM-02/HCM-03/HN
4KAM submit override cho ngày 25 (PAYDAY)qty = 4500, status NEW
5Ops acceptForecast tăng lên 4500, planner ca sáng/chiều cập nhật

✅ Pass = customer profile, forecast cycle, audit log đều đúng.


S4 — B2B carton workflow

Mục tiêu: Customer B2B (~10 đơn/ngày, value cao) không bị nhầm như B2C.

Customer ref: c_unicorn_b2b (seller_id 396395, 271 đơn Q1, 135B VND nmv).

BướcHành độngExpected
1Customer page c_unicorn_b2bTier KEY, channels=['B2B'], note "B2B carton"
2Forecast 2026-07-15 (MID_MONTH)forecast_qty ∈ [0, 30] đơn
3UPH lookup cho FMCG × STANDARD< UPH cho c_unicorn (B2C) khoảng 30%
4Planner pageTotal hours ≈ vài giờ (không phải vài trăm)

✅ Pass = qty < 30, UPH override thấp hơn B2C.


S5 — Spillover HCM-TP → HCM-TT

Mục tiêu: Khi BMVN_HCM_TP (primary) full capacity, system spillover sang BMVN_HCM_TT đúng tỷ lệ.

BướcHành độngExpected
1Pick ngày 2026-03-10 (peak HCM_TP = 89,748 đơn)Daily snapshot khớp BQ ±5%
2Planner wh_vn_hcm_01 ngày 2026-03-10Capacity 16k, workload > capacity → spillover badge
3Switch sang wh_vn_hcm_02 (TT)Workload tăng do spillover (~30%)
4Check spillover ratio (config)0.7 (constant), 30% còn lại split đều sang VN khác

✅ Pass = spillover hiển thị cả 2 chiều.


S6 — UPH override per-customer

Mục tiêu: KEY customer có UPH calibrated khác DEFAULT, planner áp dụng đúng.

BướcHành độngExpected
1"Cấu hình → Định mức" filter wh_vn_hcm_014 PK type × 5 product group × (1 DEFAULT + N KEY) rows
2Sửa UPH c_cstore_vn × FMCG × STANDARD từ 88 → 100New ConfigValue version=2, old version=1 (is_current=false)
3Re-run forecast c_cstore_vnwlu_per_order_minutes giảm ~12%, total hours giảm tương ứng
4Mở audit logHiện entry "ConfigValue updated", actor, before/after

✅ Pass = UPH update propagate vào forecast realtime.


S7 — Low-confidence flag cho 12.12

Mục tiêu: Khi sample size < 5, system bật cờ low confidence để KAM/Ops biết tin cậy thấp.

BướcHành độngExpected
1Forecast wh_vn_hcm_03 × c_unicorn × 2026-12-12forecast_qty ∈ [8000, 140000], is_low_confidence = true
2Tooltip / banner low_confidence"Chỉ có 4 ngày MEGA trong history"
3Submit override hoặc skip — both should be valid actionsUI cho phép cả 2
4Sau khi thêm 1 ngày MEGA giả (history import) → re-forecastlow_confidence chuyển false (sample size = 5)

✅ Pass = flag hiển thị + actionable.


S8 — Báo cáo kho khớp BQ Q1 2026

Mục tiêu: Báo cáo kho hiển thị tổng số khớp BigQuery Q1 2026 (sanity check).

BướcHành độngExpected
1"Báo cáo kho" → range 2026-01-01..2026-03-31 → all VNTotal ≈ 3.72M đơn (BQ Q1 VN: 3,720,659) ±5%
2Filter wh_vn_hcm_01 only~1.18M đơn (BQ BMVN_HCM_TP)
3Filter c_cstore_vn × Q1~325k đơn (BQ seller 367719)
4Top customer leaderboardC-Store #1, Skinetiq #2, Judydoll #3 (match BQ Q2)
5Filter PH~1.68M (BMPH_PDC)

✅ Pass = 3 con số tổng (Q1 VN, HCM-TP, C-Store) lệch BQ < 5%.