Kho danh mục quy định (regulation-as-config) cho mọi module — km/giờ theo hạng, checklist giấy tờ, bộ mã. Mục tiêu: thông tư đổi → sửa danh mục trong vài ngày, không sửa code. Mọi module đều depends catalog.
| Feature | BO chính | Action |
|---|---|---|
| license | Hạng GPLX | viewcreateeditdeleteimport |
| training-category | Hạng đào tạo | viewcreateeditdelete |
| doc-type | Loại giấy tờ + Checklist theo hạng | viewcreateeditdeleteconfigure |
| edu-level · subject | Trình độ học vấn · Môn học | viewcreateeditdelete |
| code-rule | Quy tắc sinh mã (học viên/khóa/phiếu) | viewconfigure |
| Trường | Kiểu | Bắt buộc | Ghi chú |
|---|---|---|---|
| Mã hạng · tên · mô tả | text | ✔ | B, C1, C, D1, D2, A1, A2… (đã seed theo quy định mới) |
| Hạn sử dụng (năm) | number | — | — |
| Tuổi tối thiểu * | number | ✔ | Validate hồ sơ (student) |
| Km / giờ thực hành tối thiểu * | number | ✔ | Chuẩn đối soát DAT |
| Hiệu lực từ * | date | ✔ | Version theo thông tư |
| Trạng thái | bool | ✔ | — |
| Trường | Kiểu | Bắt buộc | Ghi chú |
|---|---|---|---|
| Mã / tên loại giấy tờ | text | ✔ | đơn ĐK, CCCD, khám SK, ảnh thẻ, GPLX cũ… |
| Có hạn sử dụng | bool | ✔ | giấy khám SK có hạn |
| Checklist: hạng × giấy tờ | ref×ref | ✔ | áp dụng (mới/nâng hạng/cả hai) + bắt buộc |
Đối tượng (học viên/khóa/phiếu) + mẫu mã, vd HV-{ma_csdt}-{YYYY}-{seq5} — giữ tương thích mã cũ khi migrate.
Mọi module tham chiếu bằng mã danh mục (ma_hang, mã giấy tờ…) — không FK cứng. Giáo vụ trưởng cấu hình; module khác chỉ đọc.
Khối permissions[] dán vào manifest.json; bảng dưới là gán quyền theo vai trò (seed rt_role). Permission key đầy đủ: catalog.main.<feature>.<action>.
| Feature | QTHT | GIAM_DOC | QL_DAO_TAO | GIAO_VU | TUYEN_SINH |
|---|---|---|---|---|---|
| license | W | R | W | R | R |
| training-category | W | R | W | R | R |
| doc-type | W | R | W | R | R |
| edu-level | W | R | R | R | R |
| subject | W | R | R | R | R |
| code-rule | W | R | R | — | — |
R xem · W tạo/sửa · A duyệt · — không có quyền · ¹ dữ liệu phân công · ² của chính mình · ³ theo trạng thái hồ sơ. Vai trò không liệt kê = không có quyền.
W của QTHT gồm cả delete·import·configure