BẢN SO SÁNH: IMPLEMENTATION vs TÀI LIỆU — TXNG-F30 Dashboard ​
| Thông tin | Chi tiết |
|---|---|
| Chức năng | TXNG-F30 — Dashboard Tổng hợp Truy xuất Nguồn gốc |
| Ngày lập | 19/05/2026 |
| Phạm vi | Đối chiếu UI + logic lấy data hiện có trên web với BRD/SRS |
| Tài liệu gốc | docs/brd/BRD_TXNG-F30_Dashboard_Tong_Hop_TXNG.md, docs/srs/SRS_TXNG-F30_Dashboard_Tong_Hop_TXNG.md |
| Mục đích | Liệt kê thừa / thiếu / chưa khớp theo từng dashboard |
Chú thích: ✅ khớp · ⚠️ lệch/khác · ❌ thiếu · ➕ thừa (implementation có, tài liệu không nêu)
Lưu ý: SRS có mâu thuẫn nội bộ — §4.1 + §1.4.2 (L4) + BRD ghi 8 KPI card/dashboard, nhưng bảng chi tiết §5.x liệt kê chỉ 6 stat card. Implementation theo §4/§1.4 + BRD (8 card). Cột "Tài liệu" trong bảng KPI dưới đây lấy theo bảng chi tiết SRS §5.
A. Cấp kiến trúc (áp dụng toàn bộ 8 dashboard) ​
| Hạng mục | Tài liệu | Implementation | Đánh giá |
|---|---|---|---|
| 8 sub-dashboard | SCR-F30-01..08 | Đủ 8 | ✅ |
| KPI Strip | BRD/SRS§4: 8 card · SRS§5: 6 card | 8 card (Quản lý NN còn 7) | ⚠️ SRS tự mâu thuẫn; impl theo BRD |
| FilterBar primary | DN / Vùng SX / Sản phẩm / Kỳ phân tích | DN / Tỉnh / Loại SP / Kỳ | ⚠️ "Vùng SX"→"Tỉnh", "Sản phẩm"→"Loại SP" |
| FilterBar secondary | Loại lô / Trạng thái / GTIN / Vùng GIS | Rỗng (EMPTY_SECONDARY_FIELDS) |
❌ Thiếu toàn bộ bộ lọc nâng cao |
| BreadcrumbContextBar | Có | Có | ✅ |
| So sánh kỳ liền kề | Có | Có | ✅ |
| NestedDrillDownModal (SCR-F30-09) | Có | Có | ✅ |
| PersonalizationPanel (SCR-F30-10) | Có | Có | ✅ |
| Export PDF / Excel / CSV | Có | Có | ✅ |
| Chia sẻ URL | Có | Có | ✅ |
| Nút "Làm mới" (bỏ qua cache) | Không nêu | Có | ➕ Bổ sung hợp lý |
| Map GIS Leaflet (SCR-05, 08) | Bắt buộc — BR_REQ-F30-11/12 | Không có | ❌ Thiếu hẳn |
| Widget Điều Chuyển Nội Bộ F33 (SCR-05) | Bắt buộc — BR_REQ-F30-10 | Không có | ❌ Thiếu |
| Bảng dữ liệu mỗi dashboard | SRS §5: 1 table/dashboard | Thể hiện bằng chart cột ngang | ⚠️ Khác cách trình bày |
| Số section/dashboard | SRS §4.1: Tổng quan "18–22 section" | 6–8 section | ⚠️ Ít hơn SRS §4.1 (vẫn trong 6–25 của BRD) |
| Lọc "Loại sản phẩm" | — | Lọc theo keyword trong tên SP | ⚠️ Bản chất là proxy keyword |
Trường batch_type |
FE batch form CÓ thu thập ("Vui lòng chọn loại lô") | Prisma Batch KHÔNG có cột; BE batches không tham chiếu |
❌ Chưa khớp — loại lô có thể không được lưu DB |
Scope đa tenant (ENTERPRISE_* theo enterprise_id) |
BR_RULE-F30-01 | Hiện chỉ admin truy cập; chưa auto-scope | ⏸ Hoãn — không phải lỗi ở trạng thái admin-only |
B. Chi tiết từng dashboard ​
1. SCR-F30-01 — Tổng quan TXNG ​
KPI (SRS §5.1.1: 6 card ↔ Implementation: 8 card)
| Tài liệu (SRS) | Implementation | Đánh giá |
|---|---|---|
| total_enterprises (Tổng DN) | total_dn (Tổng DN) | ✅ |
| traceability_rate (Tỷ lệ truy xuất đạt chuẩn) | — (gần với trust_avg) | ❌ Thiếu đúng chỉ số |
| active_batches (Lô đang hoạt động) | — | ❌ Thiếu |
| total_qr_scans (Tổng lượt quét QR) | — | ❌ Thiếu |
| active_recalls (Thu hồi đang xử lý) | — | ❌ Thiếu |
| unresolved_alerts (Cảnh báo chưa giải quyết) | — | ❌ Thiếu |
| — | total_sp, total_lot, comp_rate, chain_active, violations_ytd, chain_disrupt, trust_avg | ➕ Thừa 7 |
Chart (SRS §5.1.3: 4 chart + 1 table)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Line xu hướng tỷ lệ truy xuất 12 tháng | ov-02 line | ✅ |
| Donut phân bố lô theo loại hình SX | ov-05 donut | ⚠️ Có nhưng để trống (không có field batch_type) |
| Stacked bar lô SX theo trạng thái & tháng | ov-03 stacked | ✅ |
| Bar top 10 DN theo số lô | ov-04 hbar | ✅ |
| Table cảnh báo gần nhất | ov-07 hbar | ⚠️ Làm bằng chart thay table |
| — | ov-01 donut ngành hàng, ov-06 heatmap Tỉnh×Tháng, ov-08 radar (trống) | ➕ Thừa 3 |
2. SCR-F30-02 — Sản xuất & Kế hoạch ✅ (khớp tốt nhất) ​
KPI (SRS §5.2.1: 6 ↔ Impl: 8)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| total_production / total_lots / avg_yield | total_prod / total_lots / avg_yield | ✅ |
| completed_plans / overdue_plans / growth_rate | plan_done / plan_overdue / growth | ✅ |
| — | top_sp, cost | ➕ Thừa 2 |
Chart (SRS §5.2.3: 5 chart)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Grouped Bar Kế hoạch vs Thực tế | pr-01 stacked_bar | ⚠️ Khác kiểu (grouped → stacked) |
| Line xu hướng sản lượng | pr-02 line | ✅ |
| Donut tỷ trọng sản lượng theo loại | pr-03 donut | ⚠️ Có nhưng để trống |
| Bar top 10 SP sản lượng | pr-04 hbar | ✅ |
| Stacked nhật ký SX theo loại hình | pr-05 stacked | ⚠️ Có nhưng để trống |
| — | pr-06 heatmap năng suất | ➕ Thừa 1 |
3. SCR-F30-03 — Lô mã & Tồn kho ✅ ​
KPI (SRS §5.3.1: 6 ↔ Impl: 8): cả 6 khớp ✅ (total_batch, active_batch, stock_total, expiring, recalled, quality_pass). ➕ Thừa: avg_lifetime, warehouse_use.
Chart (SRS §5.3.2: 4 + table)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Donut phân bố lô theo trạng thái | bs-01 donut | ✅ |
| Stacked lô mới theo tháng & loại | bs-02 stacked | ⚠️ Có nhưng để trống |
| Bar tồn kho theo kho hàng | bs-03 hbar | ✅ |
| Line xu hướng tỷ lệ chất lượng đạt | bs-04 line | ✅ |
| Table lô sắp hết hạn | bs-06 hbar | ⚠️ Làm bằng chart |
| — | bs-05 heatmap loại×kho (trống) | ➕ Thừa 1 |
4. SCR-F30-04 — Mã hoá & Tem ✅ ​
KPI (SRS §5.4.1: 6 ↔ Impl: 8): cả 6 khớp ✅ (qr_total, scans_total, scans_today, stamps_total, stamps_active, cte_count). ➕ Thừa: scan_rate, avg_scan_time.
Chart (SRS §5.4.2: 4 + table)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Line lượt quét QR 30 ngày | cs-01 line | ✅ |
| Donut phân bố trạng thái tem | cs-02 donut | ✅ |
| Bar mã QR tạo mới theo tháng | cs-03 stacked | ⚠️ Khác kiểu (bar → stacked) |
| Pie phân bố thiết bị quét | cs-04 donut "mức độ quét" | ⚠️ Đổi nội dung — DB không có data thiết bị |
| Table QR quét nhiều nhất | cs-05 hbar | ⚠️ Làm bằng chart |
| — | cs-06 heatmap Tỉnh×Tháng | ➕ Thừa 1 |
5. SCR-F30-05 — Chuỗi cung ứng ⚠️ ​
KPI (SRS §5.5.1: 6 ↔ Impl: 8)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| total_shipments / total_warehouses / total_sale_points | shipments / warehouses / pos | ✅ |
| in_transit (Đơn đang vận chuyển) | — | ❌ Thiếu |
| active_vehicles (Phương tiện hoạt động) | — | ❌ Thiếu |
| distribution_partners (Đối tác phân phối) | — | ❌ Thiếu |
| — | chains, on_time, cold_chain, disrupt, cross_dn | ➕ Thừa 5 |
Chart (SRS §5.5.2: 4 chart + Map + 2 widget F33)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Grouped Bar đơn vận chuyển theo trạng thái | sc-01 line | ⚠️ Khác kiểu + nội dung |
| Donut phân bố điểm bán theo khu vực | sc-02 donut loại xe | ⚠️ Khác nội dung |
| Bar top 10 kho theo lượng xuất | sc-04 hbar top điểm bán tồn kho | ⚠️ Khác nội dung |
| Leaflet Map mạng lưới phân phối | — | ❌ Thiếu |
| Widget Điều Chuyển Nội Bộ F33 | — | ❌ Thiếu |
| Widget Cân Bằng Tồn Kho Chuỗi F33 | sc-06 donut cân bằng tồn kho | ⚠️ Một phần |
| — | sc-03 heatmap (trống), sc-05 stacked sự cố lạnh | ➕ Thừa 2 |
6. SCR-F30-06 — Truy vết & Thu hồi ⚠️ ​
KPI (SRS §5.6.1: 6 ↔ Impl: 8)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| total_tracebacks / avg_traceback_time / active_recalls / recall_completion_rate | traces_total / avg_trace_time / recall_active / recall_rate | ✅ |
| successful_tracebacks (Truy vết thành công) | — | ❌ Thiếu |
| affected_quantity (SP bị ảnh hưởng — kg/tấn) | affected_lots (đếm theo lô) | ⚠️ Khác đơn vị |
| — | recall_completed, cost_recall, time_to_close | ➕ Thừa 3 |
Chart (SRS §5.6.2: 4 chart)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Line dual-axis truy vết + thu hồi | rt-01 line đơn | ⚠️ Khác (đơn trục) |
| Donut phân bố thu hồi theo mức độ | rt-02 donut | ✅ |
| Bar nguyên nhân thu hồi phổ biến | — | ❌ Thiếu |
| Bar thời gian xử lý thu hồi theo loại | — | ❌ Thiếu |
| — | rt-03 (trống), rt-04 top lô, rt-05 tỷ lệ thu hồi, rt-06 heatmap | ➕ Thừa 4 |
7. SCR-F30-07 — Tích hợp & Đồng bộ ✅ ​
KPI (SRS §5.7.1: 6 ↔ Impl: 8): cả 6 khớp ✅ (sync_total, sync_success, sync_fail, certs_active, certs_expiring, cte_logged). ➕ Thừa: latency_p95, integrations.
Chart (SRS §5.7.2: 4 chart)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Line khối lượng đồng bộ 30 ngày | it-01 line | ✅ (impl theo tháng) |
| Stacked kết quả đồng bộ theo loại dữ liệu | it-02 donut lỗi đồng bộ | ⚠️ Khác |
| Donut chứng chỉ theo tiêu chuẩn | it-03 stacked chứng chỉ | ⚠️ Khác kiểu |
| Bar tỷ lệ lỗi đồng bộ 8 tuần | — | ❌ Thiếu |
| — | it-04 cert sắp hết hạn, it-05 P95 latency, it-06 heatmap CTE | ➕ Thừa 3 |
8. SCR-F30-08 — Quản lý Nhà nước ⚠️ ​
KPI (SRS §5.8.1: 6 ↔ Impl: 7 — đã bỏ tcvn_compliance)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| valid_cert_rate (Tỷ lệ DN có chứng chỉ) | comp_avg (Tỷ lệ chứng chỉ hợp lệ) | ✅ |
| sync_coverage (Tỷ lệ đồng bộ QG) | dn_coverage (% DN có định danh DID) | ⚠️ Gần đúng |
| total_enterprises (DN trên địa bàn) | — | ❌ Thiếu |
| full_trace_rate (Lô truy xuất đầy đủ) | — | ❌ Thiếu |
| recall_incidents (Sự cố thu hồi trong kỳ) | — | ❌ Thiếu |
| new_onboarding (DN mới đăng ký) | — | ❌ Thiếu |
| — | violations, audits_done, reports_due, reports_done, alerts | ➕ Thừa 5 |
Chart (SRS §5.8.3: 5 chart)
| Tài liệu | Implementation | Đánh giá |
|---|---|---|
| Bar DN theo quận/huyện | — | ❌ Thiếu |
| Line + Bar xu hướng DN tham gia | gm-02 line compliance | ⚠️ Khác nội dung |
| Radar chỉ số tuân thủ TCVN 12850 | gm-01 radar | ⚠️ Có nhưng để trống |
| Donut tỷ lệ chứng chỉ theo tiêu chuẩn | gm-06 donut trạng thái sync | ⚠️ Khác nội dung |
| Leaflet Map phủ sóng DN | gm-05 heatmap | ⚠️ Heatmap thay Map |
| — | gm-03 stacked thu hồi theo mức độ, gm-04 top DN | ➕ Thừa 2 |
C. Tổng kết ​
| Nhóm vấn đề | Mức độ |
|---|---|
| Khung kiến trúc 8 lớp UX (filter / KPI strip / section / drill / personalization / export) | ✅ Đạt |
| Bộ KPI: SX-KH / Lô-Tồn / Mã-Tem / Tích hợp khớp tốt SRS | ✅ |
| Bộ KPI: Tổng quan / Chuỗi CC / Truy vết / Quản lý NN lệch nhiều SRS §5 | ⚠️ |
| Bộ lọc secondary (Loại lô / Trạng thái / GTIN / Vùng GIS) | ❌ Thiếu hẳn |
| Map GIS Leaflet (SCR-05, SCR-08) | ❌ Thiếu |
| Widget Điều Chuyển Nội Bộ F33 (SCR-05) | ❌ Thiếu |
| Chart SRS yêu cầu nhưng chưa có: nguyên nhân thu hồi, thời gian xử lý recall, tỷ lệ lỗi 8 tuần, Bar DN theo huyện | ❌ Thiếu 4 |
| 9 section để trống do không có nguồn data thật (7 phân loại loại SP + 2 radar TCVN) | ⚠️ Có khung, chưa có data |
batch_type: FE form thu thập nhưng schema Batch không lưu |
❌ Chưa khớp |
Nhận định ​
Implementation bám đúng khung kiến trúc BRD/SRS, nhưng bộ KPI/chart cụ thể là một thiết kế riêng, lệch đáng kể so với bảng chi tiết SRS §5 (vốn là nội dung v1.0 chưa được cập nhật đồng bộ với phiên bản mới).
2 hướng xử lý ​
- Cập nhật tài liệu theo code: viết lại SRS §5 (bảng KPI + chart) cho khớp implementation thực tế; ghi rõ Map GIS / widget F33 / filter secondary lùi sang phiên bản sau.
- Bổ sung code theo tài liệu: thêm bộ lọc secondary, Map GIS Leaflet, widget Điều Chuyển Nội Bộ F33, 4 chart còn thiếu; thêm cột
batch_typevào schemaBatchđể 7 section phân loại loại SP có data thật.
Việc nền tảng cần làm trước (chung cho cả 2 hướng) ​
- Thêm cột
batch_type(enum TRONG_TROT / CHAN_NUOI / THUY_SAN / CHE_BIEN) vào bảngBatch+ migration, và lưu giá trị từ FE batch form (hiện đang thu thập nhưng không persist) → khôi phục được 7 section phân loại loại SP. - Có nguồn chấm điểm tuân thủ TCVN 12850 thật (module F11/F12) → khôi phục 2 radar.