# Compliance Control Matrix — MedBASE V2

> Tài liệu này là cầu nối giữa **yêu cầu kiểm soát**, **business rules**, **field/API/flow**, và **evidence audit** của MedBASE V2.

## I. Nhật ký thay đổi

| Phiên bản | Ngày | Chi tiết | Người cập nhật |
|-----------|------|---------|----------------|
| 1.0 | 24/04/2026 | Chuẩn hóa theo official documentation baseline từ bộ docs/v2 và quá trình migration cấu trúc tài liệu | Huyen Tran |
| 1.1 | 24/04/2026 | Bổ sung CTRL-13 đến CTRL-20: KYC manual, recall manual + 0đ, GPP/GDP manual, Dược QG TBD, cold chain deferred, e-invoice manual upload, advertising deferred, return deferred. | Duy Nguyễn (PO) |
| 1.2 | 24/04/2026 | CTRL-08 updated (ETC/SPECIAL/RESTRICTED active Phase 1); CTRL-14 rewrite theo D-23; CTRL-16 hybrid D-21; thêm CTRL-21 (DEVICE class), CTRL-22 (certificate auto-flag), CTRL-23 (KYC SLA enforcement). | Duy Nguyễn (PO) |

---

> **Ghi chú chuẩn hóa Official:** Tài liệu này là bản chính thức trong bộ `docs/official/`. Nội dung được chuẩn hóa từ `docs/v2/` và các tài liệu migration bổ sung. Nếu có điểm diễn giải chưa rõ, ưu tiên theo [01-source-of-truth.md](./01-source-of-truth.md).

## II. Mục tiêu tài liệu

Tài liệu này dùng để trả lời 5 câu hỏi cho mỗi control:
1. control là gì?
2. control áp vào object nào?
3. hệ thống thực thi control ở đâu?
4. bằng chứng / audit trail nào cần lưu?
5. QA/UAT phải kiểm chứng control đó như thế nào?

---

## III. Mẫu cấu trúc control

Mỗi control cần được mô tả theo các cột:
- Control ID
- Nhóm control
- Yêu cầu kiểm soát
- Đối tượng áp dụng
- Điểm thực thi trong hệ thống
- Evidence / audit trail
- Role chịu trách nhiệm
- Tài liệu liên quan
- Tình trạng hiện tại
- Ghi chú gap / action

---

## IV. Compliance controls khởi tạo cho V2

| Control ID | Nhóm | Yêu cầu kiểm soát | Đối tượng áp dụng | Điểm thực thi trong hệ thống | Evidence / Audit Trail | Role chịu trách nhiệm | Tài liệu liên quan | Tình trạng | Gap / Action |
|---|---|---|---|---|---|---|---|---|---|
| CTRL-01 | Buyer Eligibility | Buyer không đủ điều kiện không được checkout thành công | Buyer / Checkout | checkout validation + order orchestration | verification state, rejection reason, order audit | Compliance Reviewer / Admin / System | business rules, role matrix, API, UAT | Draft | cần chốt exact eligibility policy |
| CTRL-02 | KYC Review | Quyết định approve/reject phải đi qua review flow có kiểm soát | KYC Case | admin/reviewer flow | reviewer, timestamp, reason, status history | Compliance Reviewer / Admin | business rules, role matrix, screen spec, UAT | Draft | cần chốt final authority matrix |
| CTRL-03 | KYC Reason Trace | Reject phải lưu reason đủ dùng cho buyer và ops | KYC Case | KYC review screen + API | reject_reason, actor, time | Reviewer | rules, screen spec, API | Draft | cần chuẩn hóa reason catalog |
| CTRL-04 | Product Legal Data | Product legal/compliance fields tối thiểu phải có ở admin/compliance-facing surfaces | Product | product management / product compliance detail | field presence, audit history | Catalog Manager / Admin | screen spec, rules | Draft | cần hoàn thiện field list chi tiết |
| CTRL-05 | Product Sellability Control | Product inactive hoặc blocked không được order | Product | product validation + checkout validation | validation result, rejection message | System / Catalog Manager | rules, API, UAT | Draft | cần chuẩn hóa blocked status |
| CTRL-06 | Recall / Stop-Sell | Product hoặc batch bị recall/stop-sell không được commit order mới | Product / Batch / Order | checkout validation / fulfillment control | recall log, blocked status, reject event | Admin / Ops / System | rules, screen spec, UAT | Draft | cần chốt operating model cho recall |
| CTRL-07 | Batch / Expiry Control | Batch không hợp lệ theo policy không được allocate vào order | Batch / Inventory | inventory allocation / checkout | batch status, expiry evaluation, allocation trace | Inventory Ops / System | rules, data architecture, UAT | Open | cần quyết định batch-aware scope trong V2 |
| CTRL-08 **[MANUAL-P1]** | Prescription / Restricted Sale | ETC: buyer upload ảnh đơn thuốc tại checkout (RX-05); SPECIAL: cấm bán lẻ online tuyệt đối (RX-07); RESTRICTED: hard block Drugstore (BP-02/BP-10) | Product / Order | checkout validation | prescription_file, actor, time, decision log | Compliance Reviewer / System | RX-05/06/07/08, BP-02/10, D-24/D-28, UAT-46/47/38 | Active Phase 1 | eCabinet integration Q3 2026 (RX-08) |
| CTRL-09 | Buyer Legal Validity | Hồ sơ pháp lý buyer hết hiệu lực theo policy phải chặn giao dịch phù hợp | Buyer / Checkout | buyer eligibility validation | validity result, blocking reason, audit log | Compliance Reviewer / System | rules, UAT | Open | cần chốt dossier tối thiểu |
| CTRL-10 | Admin/Ops Non-Bypass | Admin/Ops không được bypass domain rules bằng raw update | Admin / Ops actions | manual operation flow + service boundary | admin_action_log, manual_request_log | Admin / Ops / Tech Lead | rules, ops model, service spec | Draft | cần bổ sung manual flow chi tiết |
| CTRL-11 | Reporting Non-Truth | Reporting chỉ là read model, không phải transactional truth | Reporting | reporting architecture + KPI layer | read-model design, reconciliation logic | PM / Data / Tech | KPI doc, architecture | Draft | cần chốt cadence và reconciliation rule |
| CTRL-12 | Attribution Integrity | Source attribution dùng cho reporting, không dùng làm business identity | Lead / Referral / Buyer | referral capture + reporting | referral data, lead link, reporting definition | Product / BA / Data | BRD, rules, KPI doc | Draft | cần chốt dedupe policy |
| CTRL-13 **[MANUAL-P1]** | Buyer KYC Manual Review | Thẩm định hồ sơ KYC Buyer thủ công trên CMS, SLA 30 phút/case | Buyer / KYC Case | CMS Admin flow | KYC case log, reviewer, timestamp, reason, docs uploaded | Admin / Compliance Reviewer | BRD §IV-bis, rules KYC-09/KYC-10, UC-06 | Active Phase 1 | cần bổ sung OCR hỗ trợ ở Phase 2 |
| CTRL-14 **[MANUAL-P1]** | Drug Recall Workflow | Quy trình thu hồi theo Luật Dược 44/2024 + TT 11/2018 (hoặc thay thế) + NĐ 123/2020: NCC chủ trì reverse logistics; Admin facilitate + track evidence; **hoá đơn điều chỉnh giảm** (không phải "0đ"); biên bản thu hồi/tiêu huỷ; báo cáo Cục QLD | Product / Batch / Order / RecallCase | CMS RecallCase flow + file upload + notification | QĐ thu hồi, biên bản thu hồi, hoá đơn điều chỉnh giảm, biên bản tiêu huỷ, báo cáo QLD, audit log | NCC (chủ trì) / Admin (facilitator) / Compliance | rules RCL-05/RCL-06/RCL-06.1/RCL-06.2, UC-14 | Active Phase 1 | tích hợp TCT auto + template báo cáo QLD ở Phase 2 (Q3 2026) |
| CTRL-15 **[MANUAL-P1]** | Seller GPP/GDP Certificate Manual | Admin upload + theo dõi certificate trên CMS; cập nhật trạng thái VALID/EXPIRED/PENDING | Seller / NCC | CMS Seller management | certificate file, expiry date, status, actor | Admin / Compliance Reviewer | rules KYC-11 | Active Phase 1 | auto nhắc hạn certificate thuộc Phase 2 |
| CTRL-16 **[MANUAL-P1 Hybrid]** | Dược Quốc Gia Sync | Hybrid: (a) CSV/Excel export từ dav.gov.vn mỗi tuần + diff catalog; (b) Event-driven upload công văn thu hồi → trigger UC-14 | Product / Batch | CMS upload + diff job | CSV file, diff report, actor, time; công văn file | PM / Admin / Tech | D-21, rules RCL-07, Q-11 | Active Phase 1 | nâng cấp API tự động ở Phase 2 Q3 2026 |
| CTRL-17 **[DEFERRED-P2]** | Cold Chain SLA Enforcement | Kiểm tra năng lực cold chain của NCC trước khi tạo order cho product cold_chain_flag | Product / NCC / Order | chưa có | — | Tech Lead / Ops | rules DEF-COLD-01 | Deferred Phase 2 | triển khai sau khi KYC Seller ổn (bước 2) |
| CTRL-18 **[MANUAL-P1]** | E-Invoice Manual Upload | Hoá đơn điện tử xuất thủ công ngoài hệ thống, upload vào tài liệu đơn hàng | Order | CMS attachment | invoice file, actor, timestamp | NCC / Admin | rules INV-EI-01/INV-EI-02 | Active Phase 1 | tích hợp TCT thuộc Phase 2 |
| CTRL-19 **[DEFERRED-P2]** | Advertising Compliance | Kiểm soát nội dung quảng cáo thuốc theo Luật Dược 44/2024 | Product / Catalog | chưa có | — | PM / Compliance | rules DEF-ADV-01 | Deferred Phase 2 | Phase 1 không có tính năng quảng cáo nội bộ |
| CTRL-20 **[DEFERRED-P2]** | B2B Return Flow | Quy trình hoàn trả có kiểm soát trong hệ thống (RETURN_PENDING → RETURN_COMPLETED + hoá đơn điều chỉnh) | Order / Inventory | chưa có | — | PM / Ops | rules DEF-RET-01 | Deferred Phase 2 | Phase 1: xử lý ngoài hệ thống, ghi chú trong order notes |
| CTRL-21 **[MANUAL-P1 + SYSTEM]** | DEVICE A/B/C/D Classification Control | Buyer × DeviceClass và Seller DEVICE-08 validation theo NĐ 98/2021 | Product / Buyer / Seller / Order | checkout validation + SKU publish validation | device_class, seller DEVICE-08 status, reject event | System / Admin | BP-08/09, D-25, UAT-48/49 | Active Phase 1 | — |
| CTRL-22 **[SYSTEM-P1]** | Seller Certificate Auto-Flag & Auto-Block | Auto-flag GPP/GDP/GMP/GSP expiry 30d/7d; auto set EXPIRED; auto-chặn đăng SKU mới | Seller | dashboard + SKU publish validation | expiry event, auto status change, block event | System / Admin | KYC-11/12/13, D-26, UAT-50/51 | Active Phase 1 | nhắc tự động qua email Phase 2 |
| CTRL-23 **[SYSTEM-P1]** | KYC SLA Enforcement | Case PENDING_REVIEW > 30 phút auto-alert + SLA Breach dashboard | KYC Case | dashboard + alert pipeline | sla_breach_event, alert_ack | System / Ops Lead | KYC-14, D-27, UAT-52 | Active Phase 1 | SLA escalation ladder chi tiết hơn Phase 2 |

---

## V. Mapping control theo lớp hệ thống

### Business Rule Layer
Control phải được thể hiện trong:
- [05-business-rules.md](./05-business-rules.md)
- [06-role-permission-matrix.md](./06-role-permission-matrix.md)

### Screen / Field Layer
Control phải được phản ánh ở:
- field required / conditional
- status display
- warning / restriction message
- action enabled / disabled state

### API / Service Layer
Control phải được phản ánh ở:
- validation logic
- auth/permission logic
- error response
- orchestration boundaries
- audit logging

### QA / UAT Layer
Mỗi control cần có ít nhất một scenario kiểm chứng trong:
- [14-qa-uat-scenarios.md](./14-qa-uat-scenarios.md)

---

## VI. Các gap còn tồn tại cần xử lý tiếp

### Gap G-01
Prescription / restricted-sale flow chưa được chốt đầy đủ.

### Gap G-02
Buyer legal dossier tối thiểu và validity policy chưa được chốt chi tiết.

### Gap G-03
Recall / stop-sell / batch-aware model mới ở mức direction, chưa đầy đủ operational detail.

### Gap G-04
Field-level evidence cho product compliance và buyer legal data cần bổ sung thêm vào screen-field spec.

### Gap G-05
Cần mở rộng control matrix với legal citation level sâu hơn khi vào phase legal sign-off.

---

## VII. Tuyên bố cuối cùng

Compliance control matrix của MedBASE V2 không nhằm thay thế legal interpretation đầy đủ, nhưng phải đủ mạnh để đảm bảo rằng:

> **mọi control quan trọng đều có nơi thực thi, có bằng chứng lưu vết, có owner chịu trách nhiệm, và có cách kiểm chứng trong UAT.**
