Module · WS đào tạo · 07/7/2026

report — Báo cáo tuân thủ Sở XD MVP Painkiller NEW

Lý do trung tâm trả tiền: tự sinh báo cáo theo mẫu gửi Sở Xây dựng (kế hoạch đào tạo, DS học viên, tốt nghiệp), đọc chéo student/course/dat. Mẫu là dữ liệu cấu hình — thông tư đổi mẫu thì cập nhật config, không sửa code.

⚠️ Chưa có trong code — scaffold mới.
🔀 Cập nhật 13/7/2026: chiều trao đổi file sát hạch với PC08 (BC1/BC2 đi — KQBC2/SBD/SAT_HACH về, đối soát) tách sang sh-exchange chạy trên WS hub riêng (làm trước). report giữ phần sinh báo cáo theo mẫu phía WS trung tâm; P3 sinh BC1/BC2 rồi push sang hub. Thẩm quyền đã đính chính: HỌC → Sở GT/XD · SÁT HẠCH → PC08.
1

Feature / BO / Action

FeatureBO chínhAction
templateMẫu báo cáo (version theo thông tư)viewconfigure
so-xdBáo cáo đã lậpviewgenerateeditapprovedownload
registrySổ theo dõi đã nộp (immutable)viewexport
2

Quy trình lập – duyệt – gửi

student · course · dat (đối soát) ──đọc snapshot──▶ generate (giáo vụ lập) → nháp → chờ duyệt → approve (Giám đốc) → gửi Sở (workflow) (ghi ngày + người gửi) → file giữ nguyên bản đã nộp — sai thì lập bản mới, bản cũ giữ vết Kế hoạch đào tạo da_gui ──callback──▶ course "đã báo Sở" ──▶ hồ sơ da_bao_so
3

Dữ liệu chính

BOTrường chính
Mẫu báo cáo report_mauMã/tên (KH đào tạo · DS học viên · tốt nghiệp · đăng ký sát hạch…) · cấu hình jsonb (cột, nguồn dữ liệu, định dạng xuất) · hiệu lực từ (version khi thông tư đổi — mẫu cũ giữ cho báo cáo cũ)
Báo cáo đã lập report_da_lapMẫu · khóa/kỳ · file đã sinh (immutable) · trạng thái (nháp → chờ duyệt → đã duyệt → đã gửi) · người lập/duyệt · ngày lập/gửi
Sổ đã nộpView tổng hợp các bản da_gui — phục vụ thanh tra
4

Quy tắc & liên kết

Quy tắc nghiệp vụ

  • File đã nộp không sửa/ghi đè — lập bản mới, giữ vết
  • Sinh báo cáo = snapshot tại thời điểm lập — dữ liệu nguồn đổi sau không ảnh hưởng file
  • Duyệt bởi Giám đốc (vai trò GIAM_DOC) trước khi gửi
  • Báo cáo tốt nghiệp lấy kết quả đối soát DAT làm căn cứ — thiếu km/giờ không vào danh sách

Liên kết chéo (chỉ đọc + callback)

  • student — DS học viên, trạng thái hồ sơ
  • course — kế hoạch, phân công + callback "đã báo Sở"
  • dat — đối soát km/giờ (căn cứ tốt nghiệp)
  • teacher/vehicle — DS đăng ký (phụ lục)
  • catalog — mẫu, hạng

⚠ Câu hỏi mở

  • DS mẫu báo cáo Vĩnh An đang nộp (tên, tần suất, giấy/cổng điện tử?) → seed report_mau
  • Sở XD có cổng nhận điện tử → thêm action transmit sau
Quyền

Ma trận phân quyền — ốp vào manifest & seed role

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 đủ: report.main.<feature>.<action>.

▸ permissions[] — manifest.json

[ { "group": "main", "feature": "template", "label": "Mẫu báo cáo", "actions": [ "view", "configure" ] }, { "group": "main", "feature": "so-xd", "label": "Báo cáo Sở XD", "actions": [ "view", "generate", "edit", "approve", "download" ] }, { "group": "main", "feature": "registry", "label": "Sổ đã nộp", "actions": [ "view", "export" ] } ]

⚠️ Action đặc thù (generate) cần bổ sung vào validator manifest — xem plan data-scope P1.

▸ Ma trận vai trò × feature

FeatureQTHTGIAM_DOCQL_DAO_TAOGIAO_VU
templateWRR
so-xdRRAWW
registryRRRR

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.

Đặc thù: so-xd +generate (QL_DAO_TAO, GIAO_VU) · +download (QL_DAO_TAO) · gửi Sở = bước workflow sau approve