INSERT INTO organization_roles (id, role_name) VALUES (1, 'OWNER'), (2, 'DESIGNER'), (3, 'CONSULTANT'), (4, 'CONTRACTOR'), (5, 'THIRD PARTY'), (6, 'GUEST'); INSERT INTO organizations ( id, organization_code, organization_name, role_id ) VALUES (1, 'กทท.', 'การท่าเรือแห่งประเทศไทย', 1), ( 10, 'สคฉ.3', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3', 1 ), ( 11, 'สคฉ.3-01', 'ตรวจรับพัสดุ ที่ปรึกษาควบคุมงาน', 1 ), (12, 'สคฉ.3-02', 'ตรวจรับพัสดุ งานทางทะเล', 1), ( 13, 'สคฉ.3-03', 'ตรวจรับพัสดุ อาคารและระบบสาธารณูปโภค', 1 ), ( 14, 'สคฉ.3-04', 'ตรวจรับพัสดุ ตรวจสอบผลกระทบสิ่งแวดล้อม', 1 ), ( 15, 'สคฉ.3-05', 'ตรวจรับพัสดุ เยียวยาการประมง', 1 ), ( 16, 'สคฉ.3-06', 'ตรวจรับพัสดุ งานก่อสร้าง ส่วนที่ 3', 1 ), ( 17, 'สคฉ.3-07', 'ตรวจรับพัสดุ งานก่อสร้าง ส่วนที่ 4', 1 ), ( 18, 'สคฉ.3-xx', 'ตรวจรับพัสดุ ที่ปรึกษาออกแบบ ส่วนที่ 4', 1 ), (21, 'TEAM', 'Designer Consulting Ltd.', 2), (22, 'คคง.', 'Construction Supervision Ltd.', 3), (41, 'ผรม.1', 'Contractor งานทางทะเล', 4), (42, 'ผรม.2', 'Contractor งานก่อสร้าง', 4), ( 43, 'ผรม.3', 'Contractor งานก่อสร้าง ส่วนที่ 3', 4 ), ( 44, 'ผรม.4', 'Contractor งานก่อสร้าง ส่วนที่ 4', 4 ), (31, 'EN', 'Third Party Environment', 5), (32, 'CAR', 'Third Party Fishery Care', 5); -- Seed project INSERT INTO projects (project_code, project_name) VALUES ( 'LCBP3', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)' ), ( 'LCBP3-C1', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล' ), ( 'LCBP3-C2', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 2) งานก่อสร้างอาคาร ท่าเทียบเรือ ระบบถนน และระบบสาธารณูปโภค' ), ( 'LCBP3-C3', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 3) งานก่อสร้าง' ), ( 'LCBP3-C4', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง' ), ( 'LCBP3-EN', 'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง' ); -- Seed contract -- ใช้ Subquery เพื่อดึง project_id มาเชื่อมโยง ทำให้ไม่ต้องมานั่งจัดการ ID ด้วยตัวเอง INSERT INTO contracts ( contract_code, contract_name, project_id, is_active ) VALUES ( 'LCBP3-DS', 'งานจ้างที่ปรีกษาออกแบบ โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)', ( SELECT id FROM projects WHERE project_code = 'LCBP3' ), TRUE ), ( 'LCBP3-PS', 'งานจ้างที่ปรีกษาควบคุมงาน โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)', ( SELECT id FROM projects WHERE project_code = 'LCBP3' ), TRUE ), ( 'LCBP3-C1', 'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล', ( SELECT id FROM projects WHERE project_code = 'LCBP3-C1' ), TRUE ), ( 'LCBP3-C2', 'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 2) งานก่อสร้างอาคาร ท่าเทียบเรือ ระบบถนน และระบบสาธารณูปโภค', ( SELECT id FROM projects WHERE project_code = 'LCBP3-C2' ), TRUE ), ( 'LCBP3-C3', 'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 3) งานก่อสร้าง', ( SELECT id FROM projects WHERE project_code = 'LCBP3-C3' ), TRUE ), ( 'LCBP3-C4', 'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง', ( SELECT id FROM projects WHERE project_code = 'LCBP3-C4' ), TRUE ), ( 'LCBP3-EN', 'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง', ( SELECT id FROM projects WHERE project_code = 'LCBP3-EN' ), TRUE ); -- Seed user -- Initial SUPER_ADMIN user INSERT INTO users ( user_id, username, password_hash, first_name, last_name, email, line_id, primary_organization_id ) VALUES ( 1, 'superadmin', '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW', 'Super', 'Admin', 'superadmin @example.com', NULL, NULL ), ( 2, 'admin', '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW', 'Admin', 'คคง.', 'admin@example.com', NULL, 1 ), ( 3, 'editor01', '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW', 'DC', 'C1', 'editor01 @example.com', NULL, 41 ), ( 4, 'viewer01', '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW', 'Viewer', 'สคฉ.03', 'viewer01 @example.com', NULL, 10 ); -- ========================================================== -- Seed Roles (บทบาทพื้นฐาน 5 บทบาท ตาม Req 4.3) -- ========================================================== -- 1. Superadmin (Global) INSERT INTO roles (role_id, role_name, scope, description) VALUES ( 1, 'Superadmin', 'Global', 'ผู้ดูแลระบบสูงสุด: สามารถทำทุกอย่างในระบบ, จัดการองค์กร, และจัดการข้อมูลหลักระดับ Global' ), -- 2. Org Admin (Organization) ( 2, 'Org Admin', 'Organization', 'ผู้ดูแลองค์กร: จัดการผู้ใช้ในองค์กร, จัดการบทบาท / สิทธิ์ภายในองค์กร, และดูรายงานขององค์กร' ), -- 3. Document Control (Organization) ( 3, 'Document Control', 'Organization', 'ควบคุมเอกสารขององค์กร: เพิ่ม / แก้ไข / ลบเอกสาร, และกำหนดสิทธิ์เอกสารภายในองค์กร' ), -- 4. Editor (Organization) ( 4, 'Editor', 'Organization', 'ผู้แก้ไขเอกสารขององค์กร: เพิ่ม / แก้ไขเอกสารที่ได้รับมอบหมาย' ), -- 5. Viewer (Organization) ( 5, 'Viewer', 'Organization', 'ผู้ดูเอกสารขององค์กร: ดูเอกสารที่มีสิทธิ์เข้าถึงเท่านั้น' ), -- 6. Project Manager (Project) ( 6, 'Project Manager', 'Project', 'ผู้จัดการโครงการ: จัดการสมาชิกในโครงการ, สร้าง / จัดการสัญญาในโครงการ, และดูรายงานโครงการ' ), -- 7. Contract Admin (Contract) ( 7, 'Contract Admin', 'Contract', 'ผู้ดูแลสัญญา: จัดการสมาชิกในสัญญา, สร้าง / จัดการข้อมูลหลักเฉพาะสัญญา, และอนุมัติเอกสารในสัญญา' ); -- ===================================================== -- 2. Seed Permissions (สิทธิ์การใช้งานทั้งหมด) -- สิทธิ์ระดับระบบและการจัดการหลัก (System & Master Data) -- ===================================================== -- ========================================================== -- 1. System & Global Permissions (ID 1-10) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 1, 'system.manage_all', 'ทำทุกอย่างในระบบ (Superadmin Power)', 'system', 1 ), ( 2, 'system.impersonate', 'แอบอ้างผู้ใช้อื่น (For Support/Debug)', 'system', 1 ), ( 3, 'system.maintenance_mode', 'เปิด/ปิด Maintenance Mode', 'system', 1 ), ( 4, 'system.view_logs', 'ดู System Logs', 'system', 1 ), ( 5, 'system.manage_cache', 'จัดการ Cache (Clear/Flush)', 'system', 1 ); -- ========================================================== -- 2. Organization Management (ID 11-20) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 11, 'organization.create', 'สร้างองค์กรใหม่', 'organization', 1 ), ( 12, 'organization.view', 'ดูรายการองค์กร', 'organization', 1 ), ( 13, 'organization.edit', 'แก้ไขข้อมูลองค์กร', 'organization', 1 ), ( 14, 'organization.delete', 'ลบองค์กร', 'organization', 1 ), ( 15, 'organization.manage_members', 'จัดการสมาชิกในองค์กร', 'organization', 1 ); -- ========================================================== -- 3. User & Role Management (ID 21-40) - PRIORITIZED -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 21, 'user.create', 'สร้างผู้ใช้งานใหม่', 'user', 1 ), (22, 'user.view', 'ดูข้อมูลผู้ใช้งาน', 'user', 1), ( 23, 'user.edit', 'แก้ไขข้อมูลผู้ใช้งาน', 'user', 1 ), ( 24, 'user.delete', 'ลบ/ปิดการใช้งานผู้ใช้', 'user', 1 ), ( 25, 'user.manage_assignments', 'มอบหมาย Role/Project ให้ผู้ใช้', 'user', 1 ), ( 26, 'role.create', 'สร้างบทบาท (Role) ใหม่', 'role', 1 ), (27, 'role.view', 'ดูบทบาท', 'role', 1), (28, 'role.edit', 'แก้ไขบทบาท', 'role', 1), (29, 'role.delete', 'ลบบทบาท', 'role', 1), ( 30, 'role.assign_permissions', 'มอบสิทธิ์ให้กับบทบาท', 'role', 1 ); -- ========================================================== -- 4. Master Data Management (ID 41-50) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 41, 'master_data.view', 'ดูข้อมูลหลัก (Read-Only Dropdowns)', 'master', 1 ), ( 42, 'master_data.manage', 'จัดการข้อมูลหลักทั่วไป', 'master', 1 ), ( 43, 'master_data.correspondence_type.manage', 'จัดการประเภทเอกสาร', 'master', 1 ), ( 44, 'master_data.document_status.manage', 'จัดการสถานะเอกสาร', 'master', 1 ), ( 45, 'master_data.drawing_category.manage', 'จัดการหมวดหมู่แบบ', 'master', 1 ), ( 46, 'master_data.tag.manage', 'จัดการ Tags', 'master', 1 ), ( 47, 'master_data.discipline.manage', 'จัดการสาขางาน (Disciplines)', 'master', 1 ), ( 48, 'master_data.number_format.manage', 'จัดการ Document Number Format', 'master', 1 ); -- ========================================================== -- 5. Document Management - Generic (ID 51-70) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 51, 'document.view', 'ดูเอกสาร (ทุกประเภท)', 'document', 1 ), ( 52, 'document.create', 'สร้างเอกสาร (Draft)', 'document', 1 ), ( 53, 'document.edit', 'แก้ไขเอกสาร', 'document', 1 ), (54, 'document.delete', 'ลบเอกสาร', 'document', 1), ( 55, 'document.submit', 'ส่งเอกสาร (Submitted)', 'document', 1 ), ( 56, 'document.admin_edit', 'แก้ไข/ถอน/ยกเลิกเอกสารที่ส่งแล้ว (Admin Power)', 'document', 1 ), ( 57, 'document.attach_files', 'จัดการไฟล์แนบ (Upload/Delete)', 'document', 1 ), ( 58, 'document.manage_references', 'จัดการการอ้างอิงเอกสาร', 'document', 1 ); -- ========================================================== -- 6. Correspondence Module (ID 71-80) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 71, 'correspondence.create', 'สร้างเอกสารโต้ตอบ', 'correspondence', 1 ), ( 72, 'correspondence.view', 'ดูเอกสารโต้ตอบ', 'correspondence', 1 ), ( 73, 'correspondence.edit', 'แก้ไขเอกสารโต้ตอบ', 'correspondence', 1 ), ( 74, 'correspondence.delete', 'ลบเอกสารโต้ตอบ', 'correspondence', 1 ), ( 75, 'correspondence.submit', 'ส่งเอกสารโต้ตอบ', 'correspondence', 1 ); -- ========================================================== -- 7. RFA Module (ID 81-90) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES (81, 'rfa.create', 'สร้างเอกสาร RFA', 'rfa', 1), (82, 'rfa.view', 'ดูเอกสาร RFA', 'rfa', 1), (83, 'rfa.edit', 'แก้ไขเอกสาร RFA', 'rfa', 1), (84, 'rfa.delete', 'ลบเอกสาร RFA', 'rfa', 1), ( 85, 'rfa.submit', 'ส่ง RFA เข้า Workflow', 'rfa', 1 ), ( 86, 'rfa.manage_items', 'จัดการ RFA Items (Link Drawings)', 'rfa', 1 ); -- ========================================================== -- 8. Drawing Module (ID 91-100) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 91, 'drawing.view', 'ดูข้อมูลแบบ (Shop/Contract)', 'drawing', 1 ), ( 92, 'drawing.create', 'สร้าง/แก้ไขแบบ', 'drawing', 1 ), (93, 'drawing.delete', 'ลบแบบ', 'drawing', 1), ( 94, 'drawing.manage_revisions', 'จัดการ Revisions แบบ', 'drawing', 1 ), ( 95, 'drawing.link_contract', 'เชื่อมโยง Shop Drawing กับ Contract Drawing', 'drawing', 1 ); -- ========================================================== -- 9. Circulation Module (ID 101-110) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 101, 'circulation.create', 'สร้างใบเวียน', 'circulation', 1 ), ( 102, 'circulation.view', 'ดูใบเวียน', 'circulation', 1 ), ( 103, 'circulation.respond', 'ตอบกลับใบเวียน (Main/Action)', 'circulation', 1 ), ( 104, 'circulation.acknowledge', 'รับทราบใบเวียน (Information)', 'circulation', 1 ), ( 105, 'circulation.close', 'ปิดใบเวียน', 'circulation', 1 ); -- ========================================================== -- 10. Transmittal Module (ID 111-120) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 111, 'transmittal.create', 'สร้าง Transmittal', 'transmittal', 1 ), ( 112, 'transmittal.view', 'ดู Transmittal', 'transmittal', 1 ), ( 113, 'transmittal.edit', 'แก้ไข Transmittal', 'transmittal', 1 ), ( 114, 'transmittal.delete', 'ลบ Transmittal', 'transmittal', 1 ), ( 115, 'transmittal.print', 'พิมพ์ Transmittal Letter', 'transmittal', 1 ); -- ========================================================== -- 11. Workflow Engine (ID 121-130) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 121, 'workflow.view_definitions', 'ดู Workflow Definitions', 'workflow', 1 ), ( 122, 'workflow.manage_definitions', 'จัดการ Workflow Definitions', 'workflow', 1 ), ( 123, 'workflow.action_review', 'ดำเนินการในขั้นตอนปัจจุบัน (Approve/Reject)', 'workflow', 1 ), ( 124, 'workflow.force_proceed', 'บังคับไปยังขั้นตอนถัดไป (Document Control Power)', 'workflow', 1 ), ( 125, 'workflow.revert', 'ย้อนกลับไปยังขั้นตอนก่อนหน้า (Document Control Power)', 'workflow', 1 ); -- ========================================================== -- 12. Document Numbering (ID 131-140) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 131, 'numbering.view_formats', 'ดู Number Formats', 'numbering', 1 ), ( 132, 'numbering.manage_formats', 'จัดการ Number Formats', 'numbering', 1 ), ( 133, 'numbering.view_counters', 'ดู Counters', 'numbering', 1 ), ( 134, 'numbering.reset_counter', 'Reset Counter (Dangerous Operation)', 'numbering', 1 ); -- ========================================================== -- 13. Search & Reporting (ID 141-150) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES (141, 'search.basic', 'ค้นหาพื้นฐาน', 'search', 1), ( 142, 'search.advanced', 'ใช้งานการค้นหาขั้นสูง', 'search', 1 ), ( 143, 'search.export', 'Export ผลการค้นหา', 'search', 1 ), (144, 'report.view', 'ดูรายงาน', 'report', 1), ( 145, 'report.generate', 'สร้างรายงานสรุป', 'report', 1 ), ( 146, 'report.schedule', 'กำหนดรายงานอัตโนมัติ', 'report', 1 ); -- ========================================================== -- 14. Notification & Dashboard (ID 151-160) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 151, 'notification.view', 'ดูการแจ้งเตือนของตัวเอง', 'notification', 1 ), ( 152, 'notification.manage_all', 'จัดการการแจ้งเตือนทั้งหมด (Admin)', 'notification', 1 ), ( 153, 'dashboard.view_own', 'ดู Dashboard ของตัวเอง', 'dashboard', 1 ), ( 154, 'dashboard.view_all', 'ดู Dashboard ทุกคน (Admin)', 'dashboard', 1 ), ( 155, 'dashboard.view_analytics', 'ดู Analytics & Statistics', 'dashboard', 1 ); -- ========================================================== -- 15. JSON Schema Management (ID 161-170) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 161, 'json_schema.view', 'ดู JSON Schemas', 'json_schema', 1 ), ( 162, 'json_schema.manage', 'จัดการ JSON Schemas', 'json_schema', 1 ), ( 163, 'json_schema.migrate_data', 'Migrate Data ระหว่าง Schema Versions', 'json_schema', 1 ); -- ========================================================== -- 16. Monitoring & Admin Tools (ID 171-180) -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 171, 'monitoring.view_health', 'ดู Health Check Status', 'monitoring', 1 ), ( 172, 'monitoring.view_metrics', 'ดู System Metrics', 'monitoring', 1 ), ( 173, 'monitoring.manage_maintenance', 'จัดการ Maintenance Mode', 'monitoring', 1 ), ( 174, 'audit.view_own', 'ดู Audit Logs ของตัวเอง', 'audit', 1 ), ( 175, 'audit.view_all', 'ดู Audit Logs ทั้งหมด (Admin)', 'audit', 1 ); -- ========================================================== -- 17. Project & Contract Management (ID 201-220) - DEPRIORITIZED -- ========================================================== INSERT INTO permissions ( permission_id, permission_name, description, module, is_active ) VALUES ( 201, 'project.create', 'สร้างโครงการใหม่', 'project', 1 ), ( 202, 'project.view', 'ดูรายการโครงการ', 'project', 1 ), ( 203, 'project.edit', 'แก้ไขข้อมูลโครงการ', 'project', 1 ), (204, 'project.delete', 'ลบโครงการ', 'project', 1), ( 205, 'project.manage_members', 'จัดการสมาชิกในโครงการ', 'project', 1 ), ( 211, 'contract.create', 'สร้างสัญญา', 'contract', 1 ), ( 212, 'contract.view', 'ดูข้อมูลสัญญา', 'contract', 1 ), ( 213, 'contract.edit', 'แก้ไขสัญญา', 'contract', 1 ), (214, 'contract.delete', 'ลบสัญญา', 'contract', 1), ( 215, 'contract.manage_members', 'จัดการสมาชิกในสัญญา', 'contract', 1 ); -- ========================================================== -- Seed Role-Permissions Mapping (จับคู่สิทธิ์เริ่มต้น) -- ========================================================== -- Seed data for the 'role_permissions 'table -- This table links roles to their specific permissions. -- NOTE: This assumes the role_id and permission_id FROM the previous seed data files. -- Superadmin (role_id = 1), Org Admin (role_id = 2), Document Control (role_id = 3), etc. -- ========================================================== -- SECTION 2: ROLE-PERMISSION MAPPINGS -- ========================================================== -- ========================================================== -- Role 1: Superadmin - Gets ALL Permissions -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) SELECT 1, permission_id FROM permissions WHERE is_active = 1; -- ========================================================== -- Role 2: Org Admin (Organization Scope) -- Permissions: 22 total -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) VALUES -- User Management (2, 21), -- user.create (2, 22), -- user.view (2, 23), -- user.edit (2, 24), -- user.delete (2, 25), -- user.manage_assignments -- Organization (2, 12), -- organization.view -- Master Data (2, 46), -- master_data.tag.manage -- Documents (2, 51), -- document.view -- Project/Contract (2, 202), -- project.view (2, 212), -- contract.view -- Search & Reports (2, 141), -- search.basic (2, 142), -- search.advanced (2, 144), -- report.view (2, 145), -- report.generate -- Dashboard & Notification (2, 153), -- dashboard.view_own (2, 151), -- notification.view -- Audit (2, 174); -- audit.view_own -- ========================================================== -- Role 3: Document Control (Organization Scope) -- Permissions: 50+ total -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) VALUES -- All Document Operations (3, 51), (3, 52), (3, 53), (3, 54), (3, 55), (3, 56), (3, 57), (3, 58), -- All Correspondence (3, 71), (3, 72), (3, 73), (3, 74), (3, 75), -- All RFA (3, 81), (3, 82), (3, 83), (3, 84), (3, 85), (3, 86), -- All Drawing (3, 91), (3, 92), (3, 93), (3, 94), (3, 95), -- All Circulation (3, 101), (3, 102), (3, 103), (3, 104), (3, 105), -- All Transmittal (3, 111), (3, 112), (3, 113), (3, 114), (3, 115), -- Workflow Actions (3, 123), (3, 124), (3, 125), -- Master Data (3, 41), (3, 42), (3, 43), (3, 44), (3, 45), (3, 46), (3, 47), (3, 48), -- Search & Report (3, 141), (3, 142), (3, 143), (3, 144), (3, 145), -- Dashboard (3, 153), (3, 154), -- Notification (3, 151); -- ========================================================== -- Role 4: Editor (Organization Scope) -- Permissions: 30 total -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) VALUES -- Document (4, 51), (4, 52), (4, 53), (4, 55), (4, 57), -- Correspondence (4, 71), (4, 72), (4, 73), (4, 75), -- RFA (4, 81), (4, 82), (4, 83), (4, 85), (4, 86), -- Drawing (4, 91), (4, 92), (4, 94), -- Circulation (4, 101), (4, 102), (4, 103), (4, 104), -- Transmittal (4, 111), (4, 112), (4, 113), -- Search (4, 141), (4, 142), -- Dashboard & Notification (4, 153), (4, 151); -- ========================================================== -- Role 5: Viewer (Organization Scope) -- Permissions: 15 total -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) VALUES -- View Only (5, 51), -- document.view (5, 72), -- correspondence.view (5, 82), -- rfa.view (5, 91), -- drawing.view (5, 102), -- circulation.view (5, 104), -- circulation.acknowledge (5, 112), -- transmittal.view (5, 41), -- master_data.view (5, 141), -- search.basic (5, 153), -- dashboard.view_own (5, 151); -- notification.view -- ========================================================== -- Role 6: Project Manager (Project Scope) -- Permissions: All Editor + Project Management + Reports -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) SELECT 6, permission_id FROM role_permissions WHERE role_id = 4 -- Copy all Editor permissions UNION VALUES -- Project Management (6, 201), (6, 202), (6, 203), (6, 204), (6, 205), -- Reports & Analytics (6, 144), (6, 145), (6, 155); -- ========================================================== -- Role 7: Contract Admin (Contract Scope) -- Permissions: All Editor + Contract Management + Workflow -- ========================================================== INSERT INTO role_permissions (role_id, permission_id) SELECT 7, permission_id FROM role_permissions WHERE role_id = 4 -- Copy all Editor permissions UNION VALUES -- Contract Management (7, 211), (7, 212), (7, 213), (7, 214), (7, 215), -- Workflow (7, 123), -- All Drawings (7, 91), (7, 92), (7, 93), (7, 94), (7, 95); -- Seed data for the 'user_assignments' table INSERT INTO user_assignments ( id, user_id, role_id, organization_id, project_id, contract_id, assigned_by_user_id ) VALUES (1, 1, 1, NULL, NULL, NULL, NULL), -- superadmin: Global scope (organization_id = NULL) (2, 2, 2, 1, NULL, NULL, NULL); -- admin: Organization scope -- ===================================================== -- == 4. การเชื่อมโยงโครงการกับองค์กร (project_organizations) == -- ===================================================== -- โครงการหลัก (LCBP3) จะมีองค์กรหลักๆ เข้ามาเกี่ยวข้องทั้งหมด INSERT INTO project_organizations (project_id, organization_id) SELECT ( SELECT id FROM projects WHERE project_code = 'LCBP3' ), id FROM organizations WHERE organization_code IN ( 'กทท.', 'สคฉ.3', 'TEAM', 'คคง.', 'ผรม.1', 'ผรม.2', 'ผรม.3', 'ผรม.4', 'EN', 'CAR' ); -- โครงการย่อย (LCBP3C1) จะมีเฉพาะองค์กรที่เกี่ยวข้อง INSERT INTO project_organizations (project_id, organization_id) SELECT ( SELECT id FROM projects WHERE project_code = 'LCBP3-C1' ), id FROM organizations WHERE organization_code IN ( 'กทท.', 'สคฉ.3', 'สคฉ.3 -02', 'คคง.', 'ผรม.1 ' ); -- ทำเช่นเดียวกันสำหรับโครงการอื่นๆ (ตัวอย่าง) INSERT INTO project_organizations (project_id, organization_id) SELECT ( SELECT id FROM projects WHERE project_code = 'LCBP3-C2' ), id FROM organizations WHERE organization_code IN ( 'กทท.', 'สคฉ.3', 'สคฉ.3 -03', 'คคง.', 'ผรม.2' ); -- ===================================================== -- == 5. การเชื่อมโยงสัญญากับองค์กร (contract_organizations) == -- ===================================================== -- สัญญาที่ปรึกษาออกแบบ (DSLCBP3) INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract) VALUES ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-DS' ), ( SELECT id FROM organizations WHERE organization_code = 'กทท.' ), 'Owner' ), ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-DS' ), ( SELECT id FROM organizations WHERE organization_code = 'TEAM' ), 'Designer' ); -- สัญญาที่ปรึกษาควบคุมงาน (PSLCBP3) INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract) VALUES ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-PS' ), ( SELECT id FROM organizations WHERE organization_code = 'กทท.' ), 'Owner' ), ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-PS' ), ( SELECT id FROM organizations WHERE organization_code = 'คคง.' ), 'Consultant' ); -- สัญญางานก่อสร้าง ส่วนที่ 1 (LCBP3-C1) INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract) VALUES ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-C1' ), ( SELECT id FROM organizations WHERE organization_code = 'กทท.' ), 'Owner' ), ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-C1' ), ( SELECT id FROM organizations WHERE organization_code = 'ผรม.1' ), 'Contractor' ); -- สัญญางานก่อสร้าง ส่วนที่ 2 (LCBP3-C2) INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract) VALUES ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-C2' ), ( SELECT id FROM organizations WHERE organization_code = 'กทท.' ), 'Owner' ), ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-C2' ), ( SELECT id FROM organizations WHERE organization_code = 'ผรม.2' ), 'Contractor' ); -- สัญญาตรวจสอบสิ่งแวดล้อม (LCBP3-EN) INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract) VALUES ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-EN' ), ( SELECT id FROM organizations WHERE organization_code = 'กทท.' ), 'Owner' ), ( ( SELECT id FROM contracts WHERE contract_code = 'LCBP3-EN' ), ( SELECT id FROM organizations WHERE organization_code = 'EN' ), 'Consultant' ); -- Seed correspondence_status INSERT INTO correspondence_status ( status_code, status_name, sort_order, is_active ) VALUES ('DRAFT', 'Draft', 10, 1), ('SUBOWN', 'Submitted to Owner', 21, 1), ('SUBDSN', 'Submitted to Designer', 22, 1), ('SUBCSC', 'Submitted to CSC', 23, 1), ('SUBCON', 'Submitted to Contractor', 24, 1), ('SUBOTH', 'Submitted to Others', 25, 1), ('REPOWN', 'Reply by Owner', 31, 1), ('REPDSN', 'Reply by Designer', 32, 1), ('REPCSC', 'Reply by CSC', 33, 1), ('REPCON', 'Reply by Contractor', 34, 1), ('REPOTH', 'Reply by Others', 35, 1), ('RSBOWN', 'Resubmited by Owner', 41, 1), ('RSBDSN', 'Resubmited by Designer', 42, 1), ('RSBCSC', 'Resubmited by CSC', 43, 1), ('RSBCON', 'Resubmited by Contractor', 44, 1), ('CLBOWN', 'Closed by Owner', 51, 1), ('CLBDSN', 'Closed by Designer', 52, 1), ('CLBCSC', 'Closed by CSC', 53, 1), ('CLBCON', 'Closed by Contractor', 54, 1), ('CCBOWN', 'Canceled by Owner', 91, 1), ('CCBDSN', 'Canceled by Designer', 92, 1), ('CCBCSC', 'Canceled by CSC', 93, 1), ('CCBCON', 'Canceled by Contractor', 94, 1); -- Seed correspondence_types INSERT INTO correspondence_types (type_code, type_name, sort_order, is_active) VALUES ('RFA', 'Request for Approval', 1, 1), ('RFI', 'Request for Information', 2, 1), ('TRANSMITTAL', 'Transmittal', 3, 1), ('EMAIL', 'Email', 4, 1), ('INSTRUCTION', 'Instruction', 5, 1), ('LETTER', 'Letter', 6, 1), ('MEMO', 'Memorandum', 7, 1), ('MOM', 'Minutes of Meeting', 8, 1), ('NOTICE', 'Notice', 9, 1), ('OTHER', 'Other', 10, 1); -- Seed rfa_types INSERT INTO rfa_types ( contract_id, type_code, type_name_en, type_name_th ) SELECT id, 'ADW', 'As Built Drawing', 'แบบร่างหลังการก่อสร้าง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'BC', 'Box Culvert', 'ท่อระบายน้ำรูปกล่อง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'BM', 'Benchmark', 'หมุดหลักฐาน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'CER', 'Certificates', 'ใบรับรอง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'CN', 'Canal Drainage', 'ระบบระบายน้ำในคลอง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'CON', 'Contract', 'สัญญา' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'DDS', 'Design Data Submission', 'นำส่งข้อมูลการออกแบบ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'DDW', 'Draft Drawing', 'แบบร่าง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'DRW', 'Drawings (All Types)', 'แบบก่อสร้าง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'DSN', 'Design/Calculation/Manual (All Stages)', 'ออกแบบ / คำนวณ / คู่มือ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'GEN', 'General', 'ทั่วไป' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'ICR', 'Incident Report', 'รายงานการเกิดอุบัติเหตุและการบาดเจ็บ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'INS', 'Insurances/Bond/Guarantee', 'การประกัน / พันธบัตร / การค้ำประกัน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'INR', 'Inspection/Audit/Surveillance Report', 'รายงานการตรวจสอบ / การตรวจสอบ / รายงานการเฝ้าระวัง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'ITP', 'Inspection and Test Plan', 'แผนการตรวจสอบและทดสอบ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'JSA', 'Jobs Analysis', 'รายงานการวิเคราะห์ความปลอดภัย' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'MAN', 'Manual', 'คู่มือ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'MAT', 'Materials/Equipment/Plant', 'วัสดุ / อุปกรณ์ / โรงงาน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'MOM', 'Minutes of Meeting', 'รายงานการประชุม' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'MPR', 'Monthly Progress Report', 'รายงานความคืบหน้าประจำเดือน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'MST', 'Method Statement for Construction/Installation', 'ขั้นตอนการก่อสร้าง / ติดตั้ง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'NDS', 'Non-Design Data Submission', 'นำส่งข้อมูลที่ไม่เกี่ยวข้องกับการออกแบบ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'PMA', 'Payment/Invoice/Retention/Estimate', 'การชำระเงิน / ใบแจ้งหนี้ / ประกันผลงาน / ประมาณการ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'PRD', 'Procedure', 'ระเบียบปฏิบัติ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'PRG', 'Progress of Construction', 'ความคืบหน้าของการก่อสร้าง / ภาพถ่าย / วิดีโอ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'QMS', 'Quality Document (Plan/Work Instruction)', 'เอกสารด้านคุณภาพ (แผนงาน / ข้อแนะนำในการทำงาน)' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'RPT', 'Report', 'รายงาน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SAR', 'Semi Annual Report', 'รายงานประจำหกเดือน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SCH', 'Schedule and Program', 'แผนงาน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SDW', 'Shop Drawing', 'แบบขยายรายละเอียด' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SI', 'Soil Investigation', 'การตรวจสอบดิน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SPE', 'Specification', 'ข้อกำหนด' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'TNR', 'Training Report', 'รายงานการฝึกปฏิบัติ' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'UC', 'Underground Construction', 'โครงสร้างใต้ดิน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'VEN', 'Vendor', 'ผู้ขาย' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'VRO', 'Variation Request/Instruction/Order', 'คำขอเปลี่ยนแปลง / ข้อเสนอแนะ / ข้อเรียกร้อง' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'WTY', 'Warranty', 'การประกัน' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'GEN', 'General', 'ทั่วไป' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'CON', 'Contract', 'สัญญา' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'INS', 'Insurances/Bond/Guarantee', 'การประกัน / พันธบัตร / การค้ำประกัน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SCH', 'Schedule and Program', 'แผนงาน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'PMA', 'Payment/Invoice/Retention/Estimate', 'การชำระเงิน / ใบแจ้งหนี้ / ประกันผลงาน / ประมาณการ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'VRO', 'Variation Request/Instruction/Order', 'คำขอเปลี่ยนแปลง / ข้อเสนอแนะ / ข้อเรียกร้อง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'VEN', 'Vendor', 'ผู้ขาย' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'WTY', 'Warranty', 'การประกัน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'DRW', 'Drawings (All Types)', 'แบบก่อสร้าง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'DDW', 'Draft Drawing', 'แบบร่าง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SDW', 'Shop Drawing', 'แบบขยายรายละเอียด' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ADW', 'As Built Drawing', 'แบบร่างหลังการก่อสร้าง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'DDS', 'Design Data Submission', 'นำส่งข้อมูลการออกแบบ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'DSN', 'Design/Calculation/Manual (All Stages)', 'ออกแบบ / คำนวณ / คู่มือ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'NDS', 'Non-Design Data Submission', 'นำส่งข้อมูลที่ไม่เกี่ยวข้องกับการออกแบบ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'PRD', 'Procedure', 'ระเบียบปฏิบัติ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MST', 'Method Statement for Construction/Installation', 'ขั้นตอนการก่อสร้าง / ติดตั้ง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'QMS', 'Quality Document (Plan/Work Instruction)', 'เอกสารด้านคุณภาพ (แผนงาน / ข้อแนะนำในการทำงาน)' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'INR', 'Inspection/Audit/Surveillance Report', 'รายงานการตรวจสอบ / การตรวจสอบ / รายงานการเฝ้าระวัง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ITP', 'Inspection and Test Plan', 'แผนการตรวจสอบและทดสอบ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MAT', 'Materials/Equipment/Plant', 'วัสดุ / อุปกรณ์ / โรงงาน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SPE', 'Specification', 'ข้อกำหนด' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MAN', 'Manual', 'คู่มือ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'CER', 'Certificates', 'ใบรับรอง' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SAR', 'Semi Annual Report', 'รายงานประจำหกเดือน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'JSA', 'Jobs Analysis', 'รายงานการวิเคราะห์ความปลอดภัย' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MOM', 'Minutes of Meeting', 'รายงานการประชุม' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MPR', 'Monthly Progress Report', 'รายงานความคืบหน้าประจำเดือน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ICR', 'Incident Report', 'รายงานการเกิดอุบัติเหตุและการบาดเจ็บ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'PRG', 'Progress of Construction', 'ความคืบหน้าของการก่อสร้าง / ภาพถ่าย / วิดีโอ' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'RPT', 'Report', 'รายงาน' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'TNR', 'Training Report', 'รายงานการฝึกปฏิบัติ' FROM contracts WHERE contract_code = 'LCBP3-C2'; -- Seed rfa_status_codes INSERT INTO rfa_status_codes ( status_code, status_name, description, sort_order ) VALUES ('DFT', 'Draft', 'ฉบับร่าง', 1), ('FAP', 'For Approve', 'เพื่อขออนุมัติ', 11), ('FRE', 'For Review', 'เพื่อตรวจสอบ', 12), ('FCO', 'For Construction', 'เพื่อก่อสร้าง', 20), ('ASB', 'AS - Built', 'แบบก่อสร้างจริง', 30), ('OBS', 'Obsolete', 'ไม่ใช้งาน', 80), ('CC', 'Canceled', 'ยกเลิก', 99); INSERT INTO rfa_approve_codes ( approve_code, approve_name, sort_order, is_active ) VALUES ('1A', 'Approved by Authority', 10, 1), ('1C', 'Approved by CSC', 11, 1), ('1N', 'Approved As Note', 12, 1), ('1R', 'Approved with Remarks', 13, 1), ('3C', 'Consultant Comments', 31, 1), ('3R', 'Revise and Resubmit', 32, 1), ('4X', 'Reject', 40, 1), ('5N', 'No Further Action', 50, 1); -- Seed circulation_status_codes INSERT INTO circulation_status_codes (code, description, sort_order) VALUES ('OPEN', 'Open', 1), ('IN_REVIEW', 'In Review', 2), ('COMPLETED', 'ปCompleted', 3), ('CANCELLED', 'Cancelled / Withdrawn', 9); -- ตาราง "แม่" ของ RFA (มีความสัมพันธ์ 1:N กับ rfa_revisions) -- ========================================================== -- SEED DATA 6B.md (Disciplines, RFA Types, Sub Types) -- ========================================================== -- 1. Seed ข้อมูล Disciplines (สาขางาน) -- LCBP3-C1 INSERT INTO disciplines ( contract_id, discipline_code, code_name_th, code_name_en ) SELECT id, 'GEN', 'งานบริหารโครงการ', 'General Management' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'COD', 'สัญญาและข้อโต้แย้ง', 'Contracting' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'QSB', 'สำรวจปริมาณและควบคุมงบประมาณ', 'Quantity Survey and Budget Control' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'PPG', 'บริหารแผนและความก้าวหน้า', 'Plan and Progress Management' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'PRC', 'งานจัดซื้อ', 'Procurement' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SUB', 'ผู้รับเหมาช่วง', 'Subcontractor' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'ODC', 'สำนักงาน-ควบคุมเอกสาร', 'Operation Docment Control' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'LAW', 'กฎหมาย', 'Law' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'TRF', 'จราจร', 'Traffic' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'BIM', 'BIM', 'Building information modeling' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SRV', 'งานสำรวจ', 'Survey' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SFT', 'ความปลอดภัย', 'Safety' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'BST', 'งานโครงสร้างอาคาร', 'Building Structure Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'TEM', 'งานชั่วคราว', 'Temporary Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'UTL', 'งานระบบสาธารณูปโภค', 'Utility' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'EPW', 'งานระบบไฟฟ้า', 'Electrical Power Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'ECM', 'งานระบบไฟฟ้าสื่อสาร', 'Electrical Communication Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'ENV', 'สิ่งแวดล้อม', 'Environment' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'AQV', 'คุณภาพอากาศและความสั่นสะเทือน', 'Air quality and vibration' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'WAB', 'คุณภาพน้ำและชีววิทยาทางน้ำ', 'Water quality and Aquatic biology' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'ONS', 'วิศวกรรมชายฝั่ง', 'Onshore Engineer Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'PPR', 'มวลชนสัมพันธ์และการประชาสัมพันธ์', 'Public Relations' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'OSW', 'งานก่อสร้างงานทางทะเล', 'Offshore Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'DRE', 'งานขุดและถมทะเล', 'Dredging and Reclamation' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'REV', 'งานคันหินล้อมพื้นที่ถมทะเล', 'Revetment' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'BRW', 'งานเขื่อนกันคลื่น', 'Breakwater' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SOI', 'ปรับปรุงคุณภาพดิน', 'Soil Improvement' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'BLC', 'งานปรับปรุงคลองบางละมุง', 'Bang Lamung Canal Bank Protection' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'FUP', 'งานประตูระบายน้ำและท่อลอด', 'Floodgate & Under Ground Piping Works' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'SWP', 'งานอาคารควบคุมสถานีสูบน้ำทะเล', 'Sea Water Pumping Station Control BuilDing' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'NAV', 'งานติดตั้งเครื่องหมายช่วงการเดินเรือ', 'Navigations Aids' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'GEO', 'งานด้านธรณีเทคนิค', 'Geotechnical' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'CRW', 'งานด้านโยธา - Rock Works', 'Civil-Rock work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'DVR', 'ทีมนักประดาน้ำ', 'Dive Work' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'MTS', 'งานทดสอบวัสดุและธรณีเทคนิค', 'Materials and Geotechnical Testing' FROM contracts WHERE contract_code = 'LCBP3-C1' UNION ALL SELECT id, 'OTH', 'อื่นๆ', 'Other' FROM contracts WHERE contract_code = 'LCBP3-C1'; -- LCBP3-C2 INSERT INTO disciplines ( contract_id, discipline_code, code_name_th, code_name_en ) SELECT id, 'GEN', 'งานบริหารโครงการ', 'Project Management' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'COD', 'สัญญาและข้อโต้แย้ง', 'Contracts and arguments' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'QSB', 'สำรวจปริมาณและควบคุมงบประมาณ', 'Survey the quantity and control the budget' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'PPM', 'บริหารแผนและความก้าวหน้า', 'Plan Management & Progress' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ODC', 'สำนักงาน-ควบคุมเอกสาร', 'Document Control Office' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'LAW', 'กฎหมาย', 'Law' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'TRF', 'จราจร', 'Traffic' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'BIM', 'Building Information Modeling', 'Building Information Modeling' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SRV', 'งานสำรวจ', 'Survey' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SFT', 'ความปลอดภัย', 'Safety' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'BST', 'งานโครงสร้างอาคาร', 'Building Structure' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'UTL', 'งานะบบสาธารณูปโภค', 'Public Utilities' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'EPW', 'งานระบบไฟฟ้า', 'Electrical Systems' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ECM', 'งานระบบไฟฟ้าสื่อสาร', 'Electrical Communication System' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ENV', 'สิ่งแวดล้อม', 'Environment' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'AQV', 'คุณภาพอากาศและความสั่นสะเทือน', 'Air Quality and Vibration' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'WAB', 'คุณภาพน้ำและชีววิทยาทางน้ำ', 'Water Quality and Aquatic Biology' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ONS', 'วิศวกรรมชายฝั่ง', 'Coastal Engineering' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'PPR', 'มวลชนสัมพันธ์และประชาสัมพันธ์', 'Mass Relations and Public Relations' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'OFW', 'งานก่อสร้างทางทะเล', 'Marine Construction' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'EXR', 'งานขุดและถมทะเล', 'Excavation and reclamation' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'GEO', 'งานด้านธรณีเทคนิค', 'Geotechnical work' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'CRW', 'งานด้านโยธา - Rock Works', 'Civil Works - Rock Works' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'DVW', 'ทีมนักประดาน้ำ', 'Team of Divers' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MTT', 'งานทดสอบวัสดุ', 'Materials Testing' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ARC', 'งานสถาปัตยกรรม', 'Architecture' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'STR', 'งานโครงสร้าง', 'Structural work' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'SAN', 'งานระบบสุขาภิบาล', 'Sanitation System' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'DRA', 'งานระบบระบายน้ำ', 'Drainage system work' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'TER', 'งานท่าเทียบเรือ', 'Terminal Work work' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'BUD', 'งานอาคาร', 'Building' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'ROW', 'งานถนนและสะพาน', 'Road and Bridge Work' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'MEC', 'งานเคริองกล', 'Mechanical work' FROM contracts WHERE contract_code = 'LCBP3-C2' UNION ALL SELECT id, 'OTH', 'อื่น ๆ', 'Others' FROM contracts WHERE contract_code = 'LCBP3-C2'; -- 2. Seed ข้อมูล Correspondence Sub Types (Mapping RFA Types กับ Number) -- เนื่องจาก sub_type_code ตรงกับ RFA Type Code แต่ Req ต้องการ Mapping เป็น Number -- LCBP3-C1 -- LCBP3-C1 INSERT INTO correspondence_sub_types ( contract_id, correspondence_type_id, sub_type_code, sub_type_name, sub_type_number ) SELECT c.id, ct.id, 'MAT', 'Material Approval', '11' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C1' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'SHP', 'Shop Drawing Submittal', '12' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C1' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'DWG', 'Document Approval', '13' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C1' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'MET', 'Engineering Document Submittal', '14' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C1' AND ct.type_code = 'RFA'; -- LCBP3-C2 INSERT INTO correspondence_sub_types ( contract_id, correspondence_type_id, sub_type_code, sub_type_name, sub_type_number ) SELECT c.id, ct.id, 'MAT', 'Material Approval', '21' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C2' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'SHP', 'Shop Drawing Submittal', '22' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C2' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'DWG', 'Document Approval', '23' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C2' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'MET', 'Engineering Document Submittal', '24' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C2' AND ct.type_code = 'RFA'; -- LCBP3-C3 INSERT INTO correspondence_sub_types ( contract_id, correspondence_type_id, sub_type_code, sub_type_name, sub_type_number ) SELECT c.id, ct.id, 'MAT', 'Material Approval', '31' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C3' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'SHP', 'Shop Drawing Submittal', '32' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C3' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'DWG', 'Document Approval', '33' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C3' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'MET', 'Engineering Document Submittal', '34' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C3' AND ct.type_code = 'RFA'; -- LCBP3-C4 INSERT INTO correspondence_sub_types ( contract_id, correspondence_type_id, sub_type_code, sub_type_name, sub_type_number ) SELECT c.id, ct.id, 'MAT', 'Material Approval', '41' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C4' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'SHP', 'Shop Drawing Submittal', '42' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C4' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'DWG', 'Document Approval', '43' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C4' AND ct.type_code = 'RFA' UNION ALL SELECT c.id, ct.id, 'MET', 'Engineering Document Submittal', '44' FROM contracts c, correspondence_types ct WHERE c.contract_code = 'LCBP3-C4' AND ct.type_code = 'RFA'; INSERT INTO `correspondences` ( `id`, `correspondence_number`, `correspondence_type_id`, `discipline_id`, `is_internal_communication`, `project_id`, `originator_id`, `created_at`, `created_by`, `deleted_at` ) VALUES ( 1, 'ผรม.1-คคง.-0242-2568', 6, 1, 0, 2, 41, '2025-12-06 05:25:58', 1, NULL ), ( 2, 'LCBP3-C2-RFA-ROW-RPT-0059-A', 1, 95, 0, 3, 42, '2025-12-06 05:36:52', 1, NULL ); INSERT INTO `correspondence_revisions` ( `id`, `correspondence_id`, `revision_number`, `revision_label`, `is_current`, `correspondence_status_id`, `title`, `document_date`, `issued_date`, `received_date`, `due_date`, `description`, `details`, `schema_version`, `created_at`, `created_by`, `updated_by` ) VALUES ( 1, 1, 0, NULL, 1, 4, 'นำส่งวีดิทัศน์ความก้าวหน้างานก่อสร้างงานทางทะเล (ฉบับสมบูรณ์) ประจำเดือนตุลาคม พ.ศ.2568 โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล', '2025-11-28', '2025-11-28 12:26:29', '2025-12-01 12:26:29', NULL, NULL, NULL, 1, '2025-12-06 05:30:17', 1, NULL ); INSERT INTO `rfas` ( `id`, `rfa_type_id`, `discipline_id`, `created_at`, `created_by`, `deleted_at` ) VALUES (1, 68, 75, '2025-12-06 05:40:02', 1, NULL); INSERT INTO `rfa_revisions` ( `id`, `correspondence_id`, `rfa_id`, `revision_number`, `revision_label`, `is_current`, `rfa_status_code_id`, `rfa_approve_code_id`, `title`, `document_date`, `issued_date`, `received_date`, `approved_date`, `description`, `details`, `schema_version`, `created_at`, `created_by`, `updated_by` ) VALUES ( 1, 2, 1, 1, 'A', 0, 2, NULL, 'ขออนุมัติผลการทดสอบเสาเข็มแบบ Dynamic Load Test สำหรับงานเสาเข็มตอกของอาคารสถานีไฟฟ้าย่อย 22 kV. No. 6', '2025-12-03', '2025-12-04', '2025-12-04 12:40:19', NULL, NULL, NULL, 1, '2025-12-06 05:41:25', NULL, NULL );