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

  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 — đã 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