S4 — สิ่งที่ต่างจากระบบเดิม (Changes vs Current)¶
เทียบอะไรกับอะไร
ปัจจุบัน = V2 dual-DB: (1) MSSQL MEDIATE @ PSDBPRDDB (.149) — 95 ตาราง cms_* (live docs) · (2) MySQL mediation @ .87 — 21 ตาราง (online mediation/Webex/eSign, online_mysql.md) → เป้าหมาย V3 = single DB MEDIATE เดียว: ขยายต่อ (+28 ตาราง / ALTER 7 / ย้าย MySQL เข้าให้หมด)
· S4 เป็น extension + merge (เหมือน S9 ไม่ใช่ redesign แบบ S8) → ตารางเดิมส่วนใหญ่ ใช้ต่อไม่แก้
· ดู: schema.sql · Data Dictionary · ERD · Implementation · index
ภาพรวม¶
- เพิ่ม 29 ตารางใหม่, แก้ 7 ตาราง (ALTER), ตารางเดิม 95 ตาราง reuse ไม่แก้
- รวม V1 (PHP/.41) + V2 (Node/.87) → V3 ตาม mockup
emediation/fe+ SRS v4.0.0 (ดู s4_combine_summary) - ยุบ dual-DB → single DB: ย้าย MySQL 21 ตาราง เข้า
MEDIATEให้หมด (ดู § รวม MySQL) - จุดเริ่มของ FK + CHECK (ของเดิม MEDIATE = 0 FK / 0 SP) — เพิ่มในตาราง NEW
🆕 เพิ่มใหม่ (29 ตาราง — ไม่มีใน MSSQL เดิม)¶
| กลุ่ม | ตาราง | ทำไม | REQ |
|---|---|---|---|
| Workflow Engine (9) | cms_wf_approval_level, cms_wf_request_type, cms_wf_definition, cms_wf_step, cms_wf_instance, cms_wf_instance_step, cms_wf_task, cms_wf_delegation, cms_wf_audit |
ของเดิมไม่มี workflow เลย (อนุมัติ hardcode) → engine สาย 7 ระดับ + skip มีเหตุผล + มอบอำนาจ + audit | 007 |
| Assessment Committee (3) | cms_assessment_committee, cms_assessment_committee_member, cms_assessment_committee_role |
คณะกรรมการประเมินศูนย์เฉพาะกิจ (ราย ศูนย์×ปี) | 004 |
| Exam / Question Bank (3) | cms_exam, cms_exam_question, cms_exam_attempt |
คลังข้อสอบ + สุ่ม + auto-grade (ปลายทาง migrate exams/questions ของ V2 ที่เป็น stub) |
001 |
| Trainer Eval master (2) | cms_trainer_eval_category, cms_trainer_eval_subject |
5 หมวด 11 วิชา (แก้ไขได้) | 001 |
| Document Template (1) | cms_document_template |
Template เอกสาร dynamic + ตัวแปร { } |
011 |
| Center Process Cost (2) | cms_center_process_cost, cms_center_process_cost_item |
เบิกค่าจัดกระบวนการศูนย์ + รายการ + ใบเสร็จ | 015 |
| Award / Model Org (2) | cms_award_criteria, cms_center_award |
เกณฑ์รายปีงบ (รวม 100%) + รางวัล QR cert | 016 |
| Integration (1) | cms_integration_setting |
เปิด/ปิดราย integration (ThaID/eSign/K-COP/ศาล) | 008 |
| Online Mediation/Webex (5) | cms_online_meeting, cms_meeting_attendance (+eKYC), cms_meeting_signature (eSign), cms_meeting_report, cms_webex_auth |
ยกจาก MySQL V2 (ใช้งานจริง — eSign เขียนทุกวัน) เข้า single DB | 005 |
| System Audit (1) | cms_system_audit |
จอ system_audit (module/target/result) — cms_user_logs เดิมบางเกินไป + NFR audit |
007 |
✏️ เปลี่ยน / ปรับ (ALTER — 7 ตารางเดิม)¶
| ตารางเดิม (reuse) | คอลัมน์ที่เพิ่ม | ความต่าง | REQ |
|---|---|---|---|
cms_training_register |
stage, pre_member_no, selection_result |
สมัครอบรม 2 รอบ + บัญชีชั่วคราว + ผลคัดเลือก | 013 |
cms_user_role |
kind, base_role_id, note |
role เฉพาะกิจ (ระบบ/เฉพาะกิจ) + clone permission |
007 |
cms_people_center |
consecutive_fails, is_model_org, model_org_year |
นับประเมินไม่ผ่าน (≥2→ยุติ) + องค์กรต้นแบบ | 010/016 |
cms_master_assessment_category |
weight, indicators |
ถ่วงน้ำหนัก 4 ด้าน (20/20/25/35) | 004 |
cms_news |
publish_state, scheduled_at, attachment_ext, category |
draft→publish authoring | 008 |
cms_people_center_announcement |
publish_state, scheduled_at, announcement_type |
draft→publish | 008 |
cms_mediation |
all_parties_replied_date |
วันที่ทุกฝ่ายตอบกลับครบ (บังคับ) | 005 |
cms_mediation_books |
signed_by_all, sign_method, esign_at, manual_sign_json |
ข้อตกลง eSign (thaid/manual) | 005 |
cms_users |
(เลิกใช้ password/LDAP) |
ผู้ใช้ทุกคน Login ผ่าน SSO (Keycloak+ThaiD) → cms_users = thin mirror, อ่าน role จาก JWT, ไม่เก็บ password/lockout |
007/Auth |
🔀 รวม MySQL → single DB (21 ตาราง)¶
นโยบาย single DB ให้หมด — MySQL mediation@.87 ทุกตารางมีปลายทางใน MEDIATE:
- migrate data จริง (🟢):
meetings→cms_online_meeting·meetingAttendances→cms_meeting_attendance·signatures+signs→cms_meeting_signature·loginLogs→cms_user_logs·images→ไฟล์+*_ext·users→reconcilecms_users/cms_member(ระวัง idcard ซ้ำ vs 3,185 รายเดิม) — identity ย้ายไป SSO (เลิกpassword/dnLDAP) - migrate น้อย/lookup (🟡):
meeting_memos/memo_users→cms_meeting_report·webex_auths→cms_webex_auth·meetingCategories/mediationSettings→cms_setting - stub/ว่าง — สร้าง schema ใหม่ตาม SRS ไม่ต้องยกข้อมูล (⚪):
exams/questions→cms_exam*·courses/trainings/registers/trainingAttendances→cms_training_*(R) ·meetingReports/meetingReportContents/internalMeetings→cms_meeting_report/cms_online_meeting
ตารางเต็ม + วิธี: implementation §5.1 · เสร็จแล้วปิด MySQL → backend ชี้ MEDIATE อย่างเดียว
🔁 ใช้ต่อ (reuse — ไม่แก้, 95 ตาราง MSSQL เดิม)¶
โดเมนหลักทั้งหมดใช้ต่อ: cms_mediation(+booking/docs/books/witness/mediator/pdf/compensation),
cms_mediator_*(applicant/registra/appointment/cert/ending/request_edit/portfolio), cms_member,
cms_people_center*(participant/assessment/result/report/highlight/meeting/...), cms_training_*,
cms_compensation_*, cms_profile_ktbcorp*, cms_master_*, cms_institute_*, cms_complaint,
cms_notify, cms_setting, cms_users/cms_user_permission/cms_menu(_group)/cms_user_logs, cms_geo_*
— RBAC matrix (cms_user_permission × cms_menu) มีอยู่แล้ว (REQ-007 = แค่ ALTER cms_user_role)
❌ เอาออก / รอตัดสินใจ¶
cms_mediation_copy1,cms_mediator_applicant_copy1— สำเนา/ขยะจาก migration → แนะนำ drop หลังยืนยันไม่มี dependency (REQ-014 cleanup)cms_master_expertise/expertises— SRS v4 ระบุ "ตัด" ความเชี่ยวชาญ แต่ mockup ยังมี → คงตารางไว้ (ไม่ลบ) กันข้อมูลเดิมหาย, เลิก map ใน flow ใหม่ — รอลูกค้ายืนยัน (OPEN-EXPERTISE)- MySQL
mediation(ทั้งฐาน) — ย้ายเข้าMEDIATEแล้ว decommission (เป้าหมาย single DB) - LDAP (legacy) + local password —
ldapController→AD.15(last login มิ.ย. 2025,users.dnแค่ 17/121 — แทบตาย) + local login (comment ออกแล้ว) → ตัดทิ้ง · V2 มีssoController(SSO) active อยู่แล้ว → V3 = SSO ล้วน (Keycloak federate AD + ThaiD) (AUTH-SSO)
หมายเหตุการ rollout¶
- เป็น create ตารางใหม่ + ALTER (DEFAULT ปลอดภัย, idempotent ด้วย
IF COL_LENGTH) — ไม่กระทบ 95 ตารางเดิม - เพิ่ม PK ปลายทางก่อนเปิด FK ที่ชี้ legacy (
cms_people_center/cms_training_register/cms_mediation/cms_users/cms_geo_province) — ของเดิมอาจไม่มี PK constraint (OPEN-FK-LEGACY) - Seed:
cms_wf_approval_level(7 ระดับ),cms_wf_request_type(7),cms_wf_definition+cms_wf_step,cms_assessment_committee_role(4),cms_trainer_eval_category/subject(5/11) - งาน migration V1+V2 + data reconcile = Scope Change (นอก TOR 7.14) → แนะนำ Phased (ดู s4_combine_summary)
- ตรวจ collation string ให้ตรง
PSDBPRDDB; ของเดิม varchar+Thai collation, ตาราง NEW ใช้ nvarchar