Giai đoạn 1 · sh-exchange · Spec UI · 13/7/2026

Spec màn hình — trao đổi báo cáo PC08 MVP P1

4 màn hình của module sh-exchange trên WS hub. Dữ liệu minh hoạ = đợt thật 23–29/06/2026 của Vĩnh An (7 khóa ô tô · 582 hồ sơ · 318 đạt / 264 rớt — nguồn BC/FILE BC OTO/). Mọi nút gate theo permission sh-exchange.exchange.<feature>.<action> — chuẩn HRM, không hardcode.

A

Danh sách đợt — /sh-exchange?nav=batch

Trung tâm: 40023 Vĩnh AnTrạng tháiNăm 2026 🔍 Mã đợt / khóa / kỳ SH + Tạo đợt
Tất cả (5)Đang chạy (2)Chờ kết quả (1)Đã đóng (2)
ĐợtNgày thiKhóaHồ sơTrạng thái vòngFileCảnh báo
SH ô tô 29/06 · kỳ 405196203629/06/20267582Có kết quả18 đi · 7 về
SH A1 10/07 · kỳ 405196203710/07/20263432Có kết quả6 đi · 4 về
SH ô tô 26/0726/07/20264310Đã gửi BC29 đi · 0 vềBC2 −7: còn 6 ngày
SH ô tô 08/2026 (dự kiến)2~180Chuẩn bị2 đi · 0 vềChưa gửi DAT (−10)
#Hành viChi tiết
A1Chọn trung tâmUser 1 center (data scope) → select khóa cứng, ẩn luôn nếu chỉ có quyền 1 center; HUB_ADMIN/PC08 thấy tất cả
A2Badge trạng thái vòngxám chuan_bi · xanh dương da_gui · vàng da_duyet/co_sbd · xanh lá co_ket_qua/dong
A3Cột cảnh báo (P2)Đếm ngược mốc cứng DAT −10 · BC2 −7 ngày so với ngày thi; đỏ khi trễ
A4Nút "+ Tạo đợt"gate batch.create; xóa/đóng gate batch.delete/close trong menu ⋮
B

Chi tiết đợt — /sh-exchange?nav=batch&id=… (tab File)

Đợt SH ô tô 29/06/2026  Có kết quả
40023 Vĩnh An · kỳ SH 4051962036 · 7 khóa: B.01K576–579 · BK941 · BK942 · C1-D2K244 · CV 694/TTĐT-VA, 706/BC
⬆ Upload file
Chuẩn bị Đã gửi BC2 PC08 duyệt Có SBD Đã thi 29/06 Có kết quả Đóng
582hồ sơ đề nghị
582hợp lệ
0từ chối
582có SBD · thi 29/06
318đạt (DA)
264rớt (RO)
Tổng quanFile trao đổi (25)Hồ sơ (582)Đối soát ⚠1
HướngLoạiFileKhóaBản ghiParseNgười · ngày
ĐIBC1BC1_40023_40_40023K26B0116.xml (+zip)B.01K57696OKNga · 13/06
ĐIBC2BC2_40023_40_40023K26B021.xmlBK94164OKNga · 16/06
ĐICONG_VANMẫu bao cao đăng ký sh 23.06.xlsx · 694/TTĐT-VAđính kèmChi · 13/06
ĐIBIEN_BAN1.3 Biên bản kiểm tra hồ sơ 23.06.docx582đính kèmChi · 10/06
VỀKQBC2KQBC2_40_40023_20260625145503.xmlnhiều394OKNga · 25/06
VỀSBDSBD 23.06.xlsx582xác nhận tayNga · 23/06
VỀSAT_HACH40_40023_4051962036.xml582OKChi · 30/06
… 18 file khác (BC1×6 · BC2×6 · KQBC2×3 · công văn 706 · DS hợp lệ · tình trạng)
#Hành viChi tiết
B1Stepper vòng khứ hồiSuy tự động từ file đã nhận (upload KQBC2 → da_duyet); click bước = sửa tay khi lệch (gate batch.edit)
B2KPI đếm từ entry582/582/0/318/264 — realtime theo parse, không nhập tay
B3File immutableKhông sửa/ghi đè — upload bản mới, bản cũ giữ vết; delete gate file.delete (chỉ CENTER_MANAGER) và chỉ khi chưa khớp entry
B4Tab Đối soát có badge ⚠Hiện số dòng lệch chưa xử lý
C

Tab Hồ sơ & Đối soát

Tổng quanFile trao đổi (25)Hồ sơ (582)Đối soát ⚠1
KhóaHạngKQ duyệtKQ thi 🔍 Họ tên / MA_DK / SO_HO_SO / SBD ⬇ Export
MA_DK · SO_HO_SOHọ tênKhóa · hạngKQ duyệtSBDKQ thiL·M·H·ĐSố GPLX
26B021-0342 · 0342/26Nguyễn Văn T.BK941 · BHợp lệB0117ĐẠT28 · Đ · Đ · 927902xxxxxx
26B021-0343 · 0343/26Trần Thị H.BK941 · BHợp lệB0118RỚT26 · Đ · R · —
26D2005-0017 · 0017/26Lê Văn Q. thi lại L+M+H+ĐC1-D2K244 · D2Hợp lệD2031ĐẠT30 · Đ · Đ · 957902xxxxxx
… phân trang 582 hồ sơ · click dòng = drawer chi tiết (nhân thân + GPLX đã có + lịch sử thông điệp)

Đối soát — lệch giữa các thông điệp (khớp MA_DK + SO_HO_SO)

Kiểm traNguồnKết quả
Số hồ sơ gửi = số duyệtBC2 (582) ↔ KQBC2 (582)KHỚP
Hồ sơ hợp lệ = có SBDKQBC2 (582) ↔ SBD (582)KHỚP
Kết quả thi khớp hồ sơ đợtSAT_HACH (582) ↔ BC2LỆCH 1Xem
Đạt + rớt = tổng dự thi318 + 264 = 582KHỚP
#Hành viChi tiết
C1Entry chỉ đọcSinh/cập nhật từ parse — không sửa tay (nguồn sự thật = file); export gate entry.export
C2Không khớp → danh sách lệchKQBC2/SAT_HACH không khớp entry → vào bảng lệch, KHÔNG tự tạo entry mới (quy tắc §6.3 doc thiết kế)
C3Nội dung thiBảng mã L=Lý thuyết · M=Mô phỏng · H=Hình · Đ=Đường; "thi lại L+M+H+Đ" từ file tình trạng
D

Upload — tự phân loại & parse trước khi lưu

Upload file vào đợt SH ô tô 29/06/2026
Kéo thả file vào đây hoặc chọn file
xml · zip · xlsx · docx · pdf — tối đa 100MB (BC1 có ảnh nhúng rất nặng)
📄 BC2_40023_40_40023K26B021.xml — 3.1 MB

Nhận diện: BC2 — đề nghị sát hạch ĐI (theo tên file; root <BAO_CAO1> — quirk FPT, đã xử lý)
Khóa 40023K26B021 · hạng B · 64 hồ sơ · CSĐT 40023 ✓ khớp center · ảnh chân dung: đã strip khỏi preview

✓ 64/64 hồ sơ có MA_DK + SO_HO_SO hợp lệ — sẵn sàng tạo entry
HủyĐổi loại thủ côngXác nhận & lưu
#Hành viChi tiết
D1Tự phân loạiBC1_*→BC1 · BC2_*→BC2 · KQBC2_*→KQBC2 · 40_* root <SAT_HACH>→SAT_HACH · xlsx/docx→gợi ý theo tên, người dùng xác nhận (như SBD ở B)
D2Parse TRƯỚC khi lưuHiện preview thống kê + lỗi (thiếu MA_DK, sai center 40023…) — người dùng thấy trước hậu quả rồi mới Xác nhận
D3Sai center → chặnMA_CSDT trong file ≠ center của đợt → từ chối, không cho ghi nhầm dữ liệu trung tâm khác
D4GateNút upload gate file.upload; PC08_OFFICER (P3) chỉ upload chiều VỀ