2 màn hình trong module student (feature hoso): Danh sách hồ sơ và Form tiếp nhận. Dev code được ngay — khi có DB Vĩnh An chỉ chỉnh tên trường/quy tắc mã. Đầu vào: quy trình · schema · data-scope §3b.
| Mã ĐK | Họ tên | CCCD | Hạng | Khóa | Trạng thái | Thiếu giấy tờ | GV | |
|---|---|---|---|---|---|---|---|---|
| HV-001-2026-00128 | Nguyễn Văn A | 0790…812 | B | K12B | Tiếp nhận | — | — | ⋮ |
| HV-001-2026-00127 | Trần Thị B | 0791…334 | C1 | K09C | Chờ bổ sung | Khám SKẢnh | — | ⋮ |
| HV-001-2026-00119 | Lê Văn C | 0792…558 | B | K12B | Đang học | — | GV05 | ⋮ |
| HV-001-2026-00104 | Phạm D | 0793…901 | A1 | M03 | Hủy | — | — | ⋮ |
| # | Hành vi | Chi tiết |
|---|---|---|
| A1 | Tab đếm theo trạng thái | Đếm realtime theo bộ lọc đang áp; click tab = lọc nhanh |
| A2 | Badge trạng thái | xám tu_van · xanh dương tiep_nhan · vàng cho_bo_sung · xanh lá hop_le→dang_hoc · đỏ huy |
| A3 | Cột "Thiếu giấy tờ" | Chỉ hiện với cho_bo_sung — chip đỏ từng loại thiếu (đọc checklist) |
| A4 | Data scope | TUYEN_SINH → dải tiếp nhận · KE_TOAN → từ hợp lệ · GIAO_VIEN → phụ trách — server lọc (scopeWhere); UI ẩn tab ngoài phạm vi |
| A5–A7 | Nút theo quyền | "+ Tiếp nhận" cần hoso.create · menu ⋮ theo transition mục C · export cần quyền export |
| # | Trường | Quy tắc | Thông báo |
|---|---|---|---|
| V1 | CCCD | 12 số; chống trùng trong khóa (ma_dk, ma_kh, ma_csdt); trùng người khác khóa → cảnh báo mềm + gợi ý nâng hạng | "CCCD đã có hồ sơ K12B — xem / tạo nâng hạng?" |
| V2 | Ngày sinh × Hạng | Tuổi tại ngày sát hạch dự kiến ≥ min_age của hạng (catalog) | "Chưa đủ N tuổi cho hạng B…" |
| V3–V4 | SĐT · Nâng hạng | SĐT 10 số, trùng active → cảnh báo mềm · nâng hạng bắt buộc GPLX cũ + hợp lệ theo ma trận nâng hạng | — |
| V5 | Học phí | > 0; lệch >X% bảng giá → yêu cầu ghi chú lý do | — |
| V6–V7 | Khám SK · Ảnh | Khám SK hết hạn trước khai giảng = thiếu · ảnh bắt buộc trước khi rời tiep_nhan, nén ≤500KB | — |
| Method | Endpoint | Ghi chú |
|---|---|---|
| GET | /api/student/hoso · /counts · /:id | list + filter + tab đếm + chi tiết — scopeWhere áp server |
| POST/PUT | /api/student/hoso · /:id | tạo/sửa — validate V1–V7 phía server |
| POST | /api/student/hoso/:id/transition | Nguồn duy nhất đổi trạng thái — chạy rule + ghi lịch sử; callback tuition/report cũng gọi vào đây (service token) |
| POST/PUT | /:id/giayto · /:id/giayto/:gid/verify | upload scan · đối chiếu bản gốc |
| GET | /check-cccd · /api/catalog/checklist | check trùng realtime (V1) · checklist động theo hạng+loại |