Giai đoạn 1 · Schema trên OpenGate · Nháp nội bộ · 06/7/2026
Schema dữ liệu — trên nền OpenGate
Mô hình dữ liệu theo nền tảng OpenGate (repo controlplane + ws_suns).
Domain = các module .ogapp, PostgreSQL, bảng prefix theo key, tên cột tiếng Việt theo legacy. DDL đầy đủ ở
bản markdown.
✅ Multi-tenant = workspace (DB riêng mỗi trung tâm) → không có tenant_id. Users/SSO/RBAC do Control Plane lo. Danh mục quy định (hạng GPLX…) đã có sẵn ở module catalog.
⚠️ Bản trước (SQL Server + tenant_id) đã bị thay. Tên cột chốt theo DB thật QLHS V2 của Vĩnh An (việc #2).
PKkhóa chính
FK/reftham chiếu
NEWđề xuất thêm (WS1)
Viền xanh dương = module đã có · tím = catalog · xanh lá = đề xuất mới
Đã có
Module domain đã port (QLHS V2 → OpenGate)
Hiện trạng thật trong ws_suns/modules/ — schema đã bám tên cột legacy nên migrate gần 1:1.
student_nguoi_lxstudent · học viên
- PKnguoi_lxidbigserial
- ma_dk · ho_va_tenvarchar
- ngay_sinh · gioi_tinh · so_cmt—
- hang_dao_tao · hang_gplx→catalog
- refkhoa_hoc_id · giao_vien_id→course/teacher
- ma_xe_tap · rfid · ma_csdt—
- is_dao_tao · ket_qua_hoc_ly_thuyetbool/varchar
course_khoa_hoccourse · khóa học
- PKkhoa_hoc_idbigint
- ma_kh · ten_khvarchar
- hang_dao_tao · ma_csdt—
- ngay_bg · ngay_kgtimestamptz
- ngay_dao_tao · ngay_sat_hach—
teacher_giao_vienteacher · giáo viên
- PKgiao_vien_idserial
- ma_gv · ten_day_duvarchar
- so_cmt · hang_gplx—
- ma_cndt · ma_csdt—
- ma_the_rfid · is_rfid—
vehicle_xe_tap_laivehicle · xe tập lái
- PKxe_tap_lai_idserial
- ma_xe · bien_sovarchar
- hang_gplx · ma_csdt—
- ngay_het_han_gptimestamptz
- refdat_device_id · seri_dat→dat_device
dat_device / dat_logdat · thiết bị DAT
- PKidserial/bigint
- seri_number · sim_numbervarchar
- handover_date · expiry_date—
- dat_log: payload · log_typetext
- dat_log: status · created_at—
rfcard_the_rfrfcard · thẻ RFID
- PKrfidbigint
- ma_the · so_thevarchar
- ma_csdt · ngay_tao—
Catalog
Danh mục quy định (regulation-config) — đã có
Module catalog — hầu hết module depends: ["catalog@>=1.0"]. Bảng catalog_hang_gplx đã seed B/B1/B2/C/C1/D/D1/A1/A2… theo quy định mới.
catalog_hang_gplxhạng GPLX (đã seed)
- PKidinteger
- ma_hang · ten_hangvarchar
- mo_ta_vnvarchar(600)
- han_su_dunginteger
- trang_thaiboolean
catalog_trinh_do_hoc_van+ hạng đào tạo, môn dạy
- PKidinteger
- ten · ma · mo_tavarchar
- (catalog_hang_dao_tao …)—
catalog_loai_giay_toloại giấy tờ NEW
- PKidserial
- ma · tenvarchar
- co_hanboolean
catalog_hang_giay_tochecklist theo hạng NEW
- PKidserial
- refhang_gplx_id→catalog_hang_gplx
- refloai_giay_to_id→catalog_loai_giay_to
- ap_dung · bat_buocmoi/nang_hang
Đề xuất
Quy trình hồ sơ (WS1) — hướng LAI
Đề xuất của tôi: giữ student_nguoi_lx để migrate 1:1, thêm lớp trạng thái + giấy tờ + công nợ (module student bản 1.2). Không phá cấu trúc legacy.
student_nguoi_lx (thêm cột)+ trạng thái hồ sơ NEW
- trang_thai_ho_sotiep_nhan…dang_hoc
- loai_ho_somoi/nang_hang
- phong_phu_trach_idinteger
- hoc_phi_thoa_thuannumeric
student_ho_so_lichsulịch sử trạng thái / bàn giao NEW
- PKidbigserial
- refnguoi_lxid→student_nguoi_lx
- trang_thai_cu → moivarchar
- phong_tu_id · phong_den_id—
- nguoi_thao_tac · ly_do · thoi_gianaudit
student_ho_so_giaytogiấy tờ nộp NEW
- PKidbigserial
- refnguoi_lxid→student_nguoi_lx
- refloai_giay_to→catalog_loai_giay_to
- file_url · trang_thaida_nop/duyet/thieu
- ngay_het_han · nguoi_duyet—
tuition_hoc_phi_dotcông nợ đợt · module tuition NEW
- PKidbigserial
- refma_dk · ma_kh · ma_csdt→học viên (khóa NV)
- dot · so_tien · da_dongnumeric
- trang_thai · so_hoa_don—
Trạng thái: tiep_nhan → cho_bo_sung ⇄ hop_le → da_thu_dot1 → xep_khoa → da_bao_so → dang_hoc (enum còn có tu_van · huy · chuyen_khoa). Mỗi bước ghi student_ho_so_lichsu.
Ánh xạ WS1: tiep_nhan→B2 · cho_bo_sung→thiếu giấy · hop_le→B2 xong · da_thu_dot1→B4 · xep_khoa→B6 · da_bao_so→B7 · dang_hoc→B8.
· Công nợ tách module tuition ngay từ đầu (theo review module — v1.5 mở rộng kế toán/HĐĐT).
Đề xuất
Đối soát DAT & báo cáo Sở (painkiller MVP)
Feature session thêm vào module dat; module report mới đọc chéo dữ liệu để sinh báo cáo theo mẫu.
dat_phien_hocphiên học DAT · đối soát NEW
- PKidbigserial
- UQnguon · phien_id_gocchống trùng import
- refma_dk · ma_kh · ma_gv · ma_xekhóa nghiệp vụ
- bat_dau · ket_thuctimestamptz
- quang_duong_km · thoi_luong_phutnumeric
- hop_le · ly_do_loailệch GV/xe → loại
report_maumẫu báo cáo (config) NEW
- PKidserial
- ma · tenke_hoach_dao_tao…
- cau_hinhjsonb
- hieu_luc_tuversion theo TT
report_da_lapbáo cáo đã lập/gửi NEW
- PKidbigserial
- refma_mau→report_mau
- ma_kh · ky_bao_cao—
- file_urlgiữ nguyên bản đã nộp
- trang_thai · nguoi_lap · nguoi_duyetnhap→da_gui
Đối soát = tổng km/giờ các phiên hop_le theo học viên so với required_km/hours của hạng trong catalog → cảnh báo thiếu trước kỳ sát hạch. File đã nộp Sở giữ nguyên bản — sửa là lập bản mới.
Quan hệ
Quan hệ trong 1 workspace-DB
[catalog_hang_gplx] ──ref── student_nguoi_lx.hang_gplx / course_khoa_hoc
[catalog_loai_giay_to] ─* catalog_hang_giay_to *─ [catalog_hang_gplx] (checklist động)
student_nguoi_lx (hồ sơ = record)
├─ khoa_hoc_id ─→ course_khoa_hoc ├─ giao_vien_id ─→ teacher_giao_vien
├─ ma_xe_tap ─→ vehicle_xe_tap_lai ├─ rfid ─→ rfcard_the_rf
├─* student_ho_so_lichsu (trạng thái/bàn giao)
└─* student_ho_so_giayto *─ catalog_loai_giay_to
tuition_hoc_phi_dot ──(ma_dk, ma_kh, ma_csdt)──→ student_nguoi_lx (module tuition)
dat_phien_hoc ──(ma_dk / ma_gv / ma_xe)──→ student/teacher/vehicle (module dat · đối soát)
report_da_lap ──(ma_mau)──→ report_mau · đọc chéo student/course/dat (module report)
vehicle_xe_tap_lai.dat_device_id ─→ dat_device dat_device ─* dat_log
Liên kết chéo module dùng khóa nghiệp vụ (ma_kh, giao_vien_id, ma_xe_tap, rfid), không FK cứng xuyên module — vì module cài/gỡ độc lập.
Ghi chú
Migrate, audit & điểm chốt
Migrate QLHS V2 → module
- Chuyển kiểu SQL Server → Postgres
- Ánh xạ gần 1:1 (schema đã bám legacy)
- Đổ vào DB workspace của trung tâm
- Sinh trang_thai_ho_so từ cờ legacy (is_dao_tao, ket_qua…)
- Chạy song song đối chiếu 1–2 khóa (WS3)
Audit log — đã chốt cho MVP
- Platform chưa có audit chung (xác nhận 06/7)
- MVP: dùng student_ho_so_lichsu cho truy vết hồ sơ (đủ compliance)
- Audit toàn cục ở nền tảng = hạng mục riêng sau MVP
⚠ Chốt với Vĩnh An
- Quy tắc ma_dk / ma_kh / ma_csdt
- Học phí chia mấy đợt → tuition_hoc_phi_dot
- Bộ giấy tờ theo hạng → seed catalog
- Vendor DAT + định dạng phiên → dat_phien_hoc
- Danh sách mẫu báo cáo đang nộp → seed report_mau