ข้ามไปที่เนื้อหา

S4 — eMediation — ER Diagram (Target DELTA)

TARGET DESIGN — เฉพาะตาราง NEW + จุดเชื่อมกับตารางเดิม

แสดงเฉพาะ 23 ตาราง NEW + เส้นเชื่อมไปตาราง REUSE (กล่อง R) ที่เกี่ยวข้อง · โครงเต็ม 95 ตารางเดิมดูที่ live ERD ../../s4_mediation/er_diagram.md · FK ภายในกลุ่ม NEW ประกาศจริงใน schema.sql §C (เส้นทึบ) · FK ที่ชี้ตาราง legacy = logical (verify PK ก่อน enable — เส้นประในใจ) · audit septet ละไว้เพื่อความชัด

Legend: (R) reuse ของเดิม · (M) modify เพิ่มคอลัมน์ · ตารางไม่ติด tag = NEW

Workflow Engine [REQ-MED-007]

erDiagram
    cms_wf_request_type   ||--o{ cms_wf_definition      : "wf_request_type_id"
    cms_wf_definition     ||--o{ cms_wf_step            : "wf_definition_id"
    cms_wf_definition     ||--o{ cms_wf_instance        : "wf_definition_id"
    cms_wf_request_type   ||--o{ cms_wf_instance        : "wf_request_type_id"
    cms_wf_instance       ||--o{ cms_wf_instance_step   : "wf_instance_id"
    cms_wf_instance       ||--o{ cms_wf_task            : "wf_instance_id"
    cms_wf_instance       ||--o{ cms_wf_audit           : "wf_instance_id"
    cms_geo_province      ||--o{ cms_wf_instance        : "province_id (R)"
    cms_users             ||--o{ cms_wf_instance        : "submitted_by (R)"
    cms_users             ||--o{ cms_wf_delegation      : "from/acts_for (R)"

cms_wf_instance.subject_table/subject_id = polymorphic ชี้ต้นเรื่องได้ทุกตาราง (cms_people_center/cms_compensation_main/cms_mediation/cms_center_process_cost ...) — ไม่มี FK จึงผูกด้วย app · cms_wf_approval_level = master 7 ระดับ (อ้างด้วย approver_value/level ไม่ผูก FK) · cms_wf_audit append-only

Assessment Committee [REQ-MED-004]

erDiagram
    cms_people_center            ||--o{ cms_assessment_committee        : "people_center_id (R)"
    cms_assessment_committee     ||--o{ cms_assessment_committee_member : "assessment_committee_id"
    cms_assessment_committee_role||--o{ cms_assessment_committee_member : "role_key"
    cms_wf_instance              ||--o| cms_assessment_committee        : "wf_instance_id (สายแต่งตั้ง)"
    cms_people_center            ||--o{ cms_people_center_assessment    : "people_center_id (R)"
    cms_master_assessment_category ||--o{ cms_people_center_assessment_detail : "(R, +weight M)"

คณะกรรมการ = เฉพาะกิจรายศูนย์ × ปี · ผลคะแนนยังเก็บที่ cms_people_center_assessment(_detail) เดิม (R) — committee เป็นชั้น "ใครให้คะแนน" ที่เพิ่มเข้ามา

Exam / Question Bank + Trainer Eval [REQ-MED-001]

erDiagram
    cms_training_topic     ||--o{ cms_exam              : "training_topic_id (R)"
    cms_exam               ||--o{ cms_exam_attempt      : "exam_id"
    cms_training_register  ||--o{ cms_exam_attempt      : "training_register_id (R)"
    cms_exam_question      }o--o{ cms_exam              : "สุ่มตาม category/count (app)"
    cms_trainer_eval_category ||--o{ cms_trainer_eval_subject : "trainer_eval_category_id"
    cms_training_topic     ||--o{ cms_training_management_rate : "(R) เก็บคะแนนวิทยากร"

cms_exam_questioncms_exam = many-to-many เชิงตรรกะ (สุ่มข้อตาม category + question_count ตอนสร้างชุดสอบ — ไม่ทำ junction, ใช้ app) · cms_trainer_eval_subject = 11 วิชาใน 5 หมวด ; คะแนนจริงไปที่ cms_training_management_rate (R)

Document Template · Process Cost · Award · Integration [REQ-MED-011/015/016/008]

erDiagram
    cms_master_document_type ||--o{ cms_document_template       : "master_document_type_id (R)"
    cms_people_center        ||--o{ cms_center_process_cost     : "people_center_id (R)"
    cms_mediation            ||--o{ cms_center_process_cost     : "mediation_id (R)"
    cms_center_process_cost  ||--o{ cms_center_process_cost_item: "center_process_cost_id"
    cms_wf_instance          ||--o| cms_center_process_cost     : "wf_instance_id"
    cms_people_center        ||--o{ cms_center_award            : "people_center_id (R)"
    cms_award_criteria        }o--o{ cms_center_award           : "fiscal_year (เกณฑ์รายปี)"

cms_integration_setting = ตารางเดี่ยว (ไม่มี FK) — toggle ราย integration · cms_document_template ผูกประเภทเอกสารเดิม + เก็บ variables_json สำหรับ placeholder

Online Mediation / Webex + eKYC + eSign [REQ-MED-005] (migrate จาก V2 MySQL)

erDiagram
    cms_mediation          ||--o{ cms_online_meeting      : "mediation_id (R)"
    cms_online_meeting     ||--o{ cms_meeting_attendance  : "online_meeting_id"
    cms_online_meeting     ||--o{ cms_meeting_signature   : "online_meeting_id"
    cms_meeting_attendance ||--o{ cms_meeting_signature   : "meeting_attendance_id"
    cms_online_meeting     ||--o{ cms_meeting_report      : "online_meeting_id"

cms_webex_auth = token เดี่ยว (ไม่มี FK) · subsystem นี้ค้นพบจาก source V2 (meetings/meetingAttendances/signatures/webex_auths/meetingReports — MySQL Sequelize) → ย้ายเข้า MEDIATE ตอนรวมฐานเดียว · ตรวจ overlap กับ cms_mediation_booking_online (R) เดิมก่อน

สรุป FK ตาราง NEW (เส้นที่ประกาศจริงใน schema.sql §C)

ตาราง NEW FK → ปลายทาง
cms_wf_definition cms_wf_request_type
cms_wf_step cms_wf_definition
cms_wf_instance cms_wf_definition, cms_wf_request_type
cms_wf_instance_step cms_wf_instance
cms_wf_task cms_wf_instance
cms_wf_audit cms_wf_instance
cms_assessment_committee cms_wf_instance · (→ cms_people_center legacy: verify)
cms_assessment_committee_member cms_assessment_committee
cms_exam_attempt cms_exam · (→ cms_training_register legacy: verify)
cms_trainer_eval_subject cms_trainer_eval_category
cms_center_process_cost cms_wf_instance · (→ cms_people_center/cms_mediation legacy: verify)
cms_center_process_cost_item cms_center_process_cost
cms_center_award (→ cms_people_center legacy: verify)
cms_meeting_attendance cms_online_meeting
cms_meeting_signature cms_online_meeting, cms_meeting_attendance
cms_meeting_report cms_online_meeting

ของเดิม MEDIATE มี 0 FK — ตาราง NEW = จุดเริ่มใส่ referential integrity

FK ภายในกลุ่ม NEW เปิดได้ทันที (ปลายทางเป็นตาราง NEW มี PK ครบ) · FK ที่ชี้ legacy ต้องตรวจว่า ตารางปลายทางมี PRIMARY KEY constraint จริงก่อน (cms_people_center/cms_training_register/cms_mediation /cms_geo_province/cms_users) — ถ้าไม่มี ให้เพิ่ม PK ปลายทาง หรือคง FK เป็น logical (ตรวจที่ app)