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_nhancho_bo_sunghop_leda_thu_dot1xep_khoada_bao_sodang_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

  1. Chuyển kiểu SQL Server → Postgres
  2. Ánh xạ gần 1:1 (schema đã bám legacy)
  3. Đổ vào DB workspace của trung tâm
  4. Sinh trang_thai_ho_so từ cờ legacy (is_dao_tao, ket_qua…)
  5. 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?