Storyboard từng bước với mini-screen của các luồng quan trọng nhất: cán bộ chụp 1 sản phẩm, P2 review queue, P3 publish rule pack mới.
Cán bộ thấy tổng quan ngày + nút lớn "Chụp sản phẩm". Tap nút → mở camera.
Camera preview hiện 4 indicator. Blur đỏ → reason text "Ảnh mờ", nút Chụp disabled.
Tất cả 4 indicator xanh → nút active → user chụp ảnh Front. App chạy M3 (Gemma 4 + ML Kit OCR) ~3s.
Field Natri đỏ. User tap "Xem ảnh nguồn" → verify trên ảnh thực sự là 32 mg. Sửa, save.
Server validation chạy ~2s. Trả về 1 advisory "Natri cao theo WHO" — vẫn pass nhưng có note.
P2 thấy queue 189 submission. Filter mặc định "pending_review", sort cũ trước. Click row đầu OMI-...001234.
Drawer hiện 4 ảnh + JSON + OCR raw text. P2 thấy ngay flag: VLM trả 320 nhưng OCR đọc "32 mg".
Click "👁 Xem ảnh nguồn" → bbox highlight chữ "32 mg". P2 confirm OCR đúng, sửa 320→32, chọn lý do.
P2 chọn 23 submission đã review xong → nút Bulk "Duyệt batch" → comment chung → Confirm. Audit log đầy đủ.
before/after/reason — required cho ISO 27001 + BVDLCNP3 fill form: ID, severity, scope (thực phẩm + đồ uống), predicate sodium_mg > 600, message.
Hệ thống chạy rule trên 50 submission gần. 8% flag — không quá cao, OK submit approval.
P3 chọn approver = Hùng Phan, write changelog, click Submit. Hệ thống gửi notification + email tới P3.5.
P3.5 mở approval queue, xem diff +1 rule. Auto test: schema OK, syntax OK, perf 42ms, không cảnh báo. Click Approve.
Backend tự: bump version, sign ECDSA P-256, upload S3, invalidate CDN, audit. Mobile app pull mỗi 6h.
Còn 4 SOP khác trong tài liệu Section 15.10 — em có thể visualize tiếp khi Anh cần.
CMS Về trang chủ