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—
student_hoc_phi_dotcông nợ đợt NEW
- PKidbigserial
- refnguoi_lxid→student_nguoi_lx
- 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. Mỗi bước ghi student_ho_so_lichsu.
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
└─* student_hoc_phi_dot (công nợ đợt)
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 — cần chốt
- Module chưa có bảng audit riêng
- Đề xuất: dùng student_ho_so_lichsu cho truy vết hồ sơ (đủ compliance MVP)
- ⚠ Verify runtime-core/base có audit chung không → quyết audit toàn cục
⚠ Chốt với Vĩnh An
- Quy tắc ma_dk / ma_kh / ma_csdt
- Học phí chia mấy đợt
- Bộ giấy tờ theo hạng → seed catalog
- Audit chung ở base/runtime-core?