S4 — ผลการสำรวจทางเทคนิค (Technical Reconnaissance)
วันที่สำรวจ: 6 เมษายน 2569
วัตถุประสงค์: ตรวจสอบสถานะเซิร์ฟเวอร์ ฐานข้อมูล และประเมินความยากง่ายในการรวมระบบ V1 + V2
สรุปภาพรวมเซิร์ฟเวอร์ที่เกี่ยวข้อง
graph TB
subgraph PROD["Production Servers"]
V1["V1 — 10.136.27.41<br/>Windows · Apache/XAMPP<br/>PHP 7.2 + CodeIgniter<br/>emediation.rlpd.go.th"]
V2["V2 — 10.136.27.87<br/>Ubuntu 20.04 · Apache + PM2<br/>Node.js 14 + Vue.js<br/>emediations.rlpd.go.th"]
end
subgraph UAT["UAT Server"]
UATVM["UAT — 10.136.27.124<br/>Ubuntu 24.04 · Docker<br/>V1(PHP:9008) + V2(Vue:9009 + Node:4000)"]
end
subgraph DB["Database Tier"]
PRODDB["Production DB — 10.136.27.149:3412<br/>SQL Server 2022<br/>PSDBPRDDB · Schema: MEDIATE<br/>95 tables · 12,378 cases"]
LEGACYDB["Legacy DB — 10.136.27.43:1433<br/>SQL Server 2017<br/>mediate2020: 55,343 cases<br/>mediate2020-NEW: 10,886 cases"]
end
V1 -->|"MEDIATE schema"| PRODDB
V2 -->|"mediate2020-NEW"| LEGACYDB
UATVM -->|"Container MSSQL :1433"| UATVM
V1 — เครื่องแม่ข่าย Production (10.136.27.41)
| รายการ |
รายละเอียด |
| ชื่อเครื่อง |
(ไม่ระบุ) |
| IP |
10.136.27.41 |
| OS |
Windows Server (XAMPP) |
| Web Server |
Apache/2.4.63 (Win64) + OpenSSL/3.3.2 + PHP/7.2.34 |
| Framework |
PHP + CodeIgniter (cookie: flowcart_mediate_ci_session) |
| App Version |
v9.0 |
| Domain |
emediation.rlpd.go.th |
| Protocol |
HTTPS (Redirect HTTP→HTTPS) |
| เปิดให้บริการ |
Port 80, 443, 3389 (RDP), 1433 (MSSQL) |
| พอร์ตปิด |
22, 3306, 8080, 9008 |
| DB Connection |
MEDIATE schema → 10.136.27.149:3412 (PSDBPRDDB) |
| Local MSSQL |
Port 1433 เปิด แต่ credentials ที่มีเข้าไม่ได้ |
Web Application Endpoints
| Path |
Status |
หมายเหตุ |
/home |
200 |
หน้าแรก (Public) |
/mediation/request |
200 |
ยื่นคำร้องไกล่เกลี่ย (Public) |
/mediation/tracking |
200 |
ติดตามสถานะ (Public) |
/training |
200 |
หลักสูตรอบรม (Public) |
/login |
500 |
ต้อง Login (ผิด route) |
/admin, /officer, /mediator |
500 |
ต้อง Login |
/people_center/register |
— |
ลงทะเบียนศูนย์ไกล่เกลี่ย |
/mediator/register |
— |
สมัครผู้ไกล่เกลี่ย |
ฟีเจอร์หลักที่พบจากหน้าเว็บ
- ยื่นคำร้องขอไกล่เกลี่ย (Online Request)
- ติดตามสถานะคำร้อง (Case Tracking)
- ลงทะเบียนศูนย์ไกล่เกลี่ยประจำท้องที่ (People Center Registration)
- สมัครเป็นผู้ไกล่เกลี่ย (Mediator Registration)
- อบรมหลักสูตร / เช็คสถานะ (Training Management)
V2 — เครื่องแม่ข่าย Production (10.136.27.87)
| รายการ |
รายละเอียด |
| ชื่อเครื่อง (Hostname) |
e-medication-phase2 |
| IP |
10.136.27.87 |
| OS |
Ubuntu 20.04.5 LTS, Kernel 5.4.0-216 |
| Disk |
1,006 GB total, 195 GB used (21%) |
| RAM |
16 GB total, 2.7 GB used |
| Web Server |
Apache/2.4.41 (Ubuntu) |
| Runtime |
Node.js v14.20.0, PM2 v5.2.0 |
| Domain |
emediations.rlpd.go.th |
| เปิดให้บริการ |
Port 22 (SSH), 80, 443, 4000 (API) |
| พอร์ตปิด |
3000, 8080, 8443, 9008, 9009 |
| MySQL |
localhost:3306 (internal, access restricted) |
โครงสร้างแอปพลิเคชันบนเครื่อง
/opt/nodejs/
├── mediation-backend2025/ ← ★ ACTIVE (Phase 1 by MFEC/Webify)
│ ├── .git → github.com/webify-th/rlpd-7sys-mediation-nodejs.git
│ ├─��� package.json (Express 4.18 + Sequelize + MSSQL + MySQL2 + LDAP + JWT)
│ ├── routes/ (11 files: auth, model, mssql, ldap, mail, sms, webex, msc, appman, file)
│ ├── controllers/ (17 files - มี mssqlController หลายเวอร์ชันตามวันที่)
│ └── models/ (21 files: user, meeting, training, signature, ...)
│
├── mediation-frontend2025/ ← Phase 1 Vue.js frontend (CoreUI Pro)
│ ├── src/
│ └── online_bkk_20260104/ (backup)
│
├── mediation-backend/ ← Original V2 backend ("docextreme-backend")
│ ├��─ .git → github.com/pravarntle/Mediation-New-Backend.git
│ └── package.json (Express 4.17 + MSSQL 9 + MySQL2)
│
├── mediation-frontend/ ← Original V2 frontend
│ └── (Vue.js)
│
├── mediation-new-backend/ ← Iteration of V2 backend
│ └── .git → github.com/pravarntle/Mediation-New-Backend.git
│
└── backend/ ← (older backend)
กระบวนการทำงาน (Active Process)
| Process |
PID |
ข้อมูล |
| PM2 (root) |
1062 |
God Daemon — จัดการ process |
| mediation-backend2025 |
4188339 |
node /opt/nodejs/mediation-backend2025/bin/www2 (ใช้ CPU 1%, RAM 643MB) |
| Apache |
941 |
Serving static files on :80/:443 |
Environment (.env ของ backend2025)
| Key |
Value |
หมายเหตุ |
| PORT |
4000 |
Express API port |
| API_SSO_URL |
https://webportal.rlpd.go.th |
SSO integration |
| BACKEND_BASE_URL |
https://api-emediations.rlpd.go.th/ |
Self-reference |
ข้อสังเกต
- Backend2025 มี dependency ทั้ง
mssql (SQL Server) และ mysql2 (MySQL) — ใช้ทั้งสองฐานข้อมูล
- มี
mssqlController ที่มีหลายเวอร์ชันตามวันที่ (copy-based versioning, ไม่ใช้ Git branch)
- Alfresco ECM integration (document management) —
ecm.osdev.co.th:8082
- Webex integration สำหรับ Online Mediation
| รายการ |
รายละเอียด |
| Hostname |
rlpd7systemsuat |
| OS |
Ubuntu 24.04.3 LTS |
| Disk |
98 GB total, 67 GB used (72%)  |
| RAM |
7.7 GB total, 3.6 GB used |
Docker Containers ที่เกี่ยวข้องกับ S4
| Container |
Image |
Port |
บทบาท |
mediation2 |
rlpd-mediation-2 (PHP/CI) |
9008 |
V1 Mediator Portal (emediation) |
rlpd-mediation-vue-frontend |
rlpd-7sys-mediation-vue |
9009 |
Phase 1 Officer Backend Office |
rlpd-mediation-bo-backend |
rlpd-7sys-mediation-nodejs |
4000 |
Phase 1 API Backend |
Nginx Routing
| Domain |
Proxy Target |
ระบบ |
emediation.rlpd.go.th |
localhost:9008 |
V1 PHP (Mediator-facing) |
emediations.rlpd.go.th → /online/ |
localhost:9009 |
V2/Phase1 Vue.js (Officer BO) |
emediations.rlpd.go.th → /api-data/, /auth/, /sql-query/, etc. |
localhost:4000 |
Phase 1 Node.js API |
```yaml
DB Config
DB_HOSTNAME=10.136.27.124 # ← ชี้ไป Container MSSQL ของ UAT
DB_NAME=mediate2020-NEW # ← ใช้ DB mediate2020-NEW
DB_DRIVER=sqlsrv
```
ข้อสังเกตสำคัญ
V1 PHP บน UAT ชี้ไปที่ mediate2020-NEW ไม่ใช่ MEDIATE schema — แสดงว่าบน UAT ทั้ง V1 และ V2 ใช้ฐานข้อมูลเดียวกัน
ฐานข้อมูล — การวิเคราะห์เชิงลึก
| รายการ |
ข้อมูล |
| SQL Server Version |
2022 (RTM) — 16.0.1000.6 |
| Database |
PSDBPRDDB (Single Database สำหรับทุกระบบ) |
| Schema ทั้งหมด |
31 schemas |
| MEDIATE tables |
95 tables |
| mediate2020 tables |
1 table (cms_news — 2 rows) |
| MEDIATEV2025 tables |
0 tables (Phase 1 ไม่ได้สร้าง schema ใหม่) |
| Stored Procedures |
0 ในทุก mediation schema |
| Foreign Keys |
0 ใน MEDIATE schema |
| Table |
Rows |
หมายเหตุ |
| cms_people_center_assessment_result |
237,695 |
ผลประเมินศูนย์ไกล่เกลี่ย (ใหญ่สุด) |
| cms_user_logs |
52,675 |
Log การใช้งาน |
| cms_training_management_checkin |
35,317 |
การลงทะเบียนอบรม |
| cms_people_center_participant |
29,545 |
สมาชิกศูนย์ไกล่เกลี่ย |
| cms_mediator_applicant_item |
21,134 |
รายละเอียดผู้สมัครไกล่เกลี่ย |
| cms_mediation |
12,378 |
เรื่องไกล่เกลี่ย (core cases) |
| cms_mediator_appointment |
11,275 |
นัดหมายผู้ไกล่เกลี่ย |
| cms_mediator_applicant |
7,768 |
ผู้สมัครไกล่เกลี่ย |
| cms_users |
3,185 |
ผู้ใช้งาน |
| cms_institute_mediation |
2,940 |
ศูนย์ไกล่เกลี่ย |
| รายการ |
ข้อมูล |
| SQL Server Version |
2017 (RTM) — 14.0.1000.169 |
| Databases ทั้งหมด |
24 databases (รวมทุกระบบเก่า) |
| mediate2020 tables |
79 tables |
| mediate2020-NEW tables |
~81 tables (clone ที่มีข้อมูลอัปเดตกว่า) |
| Table |
Rows (mediate2020) |
Rows (mediate2020-NEW) |
Rows (MEDIATE on .149) |
| cms_people_center_assessment_result |
150,917 |
215,570 |
237,695 |
| cms_mediation |
55,343 |
10,886 |
12,378 |
| cms_user_logs |
38,213 |
48,922 |
52,675 |
| cms_mediator_applicant |
7,384 |
7,705 |
7,768 |
| cms_users |
2,950 |
3,177 |
3,185 |
| cms_institute_mediation |
2,842 |
2,939 |
2,940 |
| cms_mediation_booking |
736 |
1,822 |
— |
ข้อมูลวิเคราะห์เชิงลึก
mediate2020.cms_mediation มี 55,343 rows ซึ่งมากกว่า Production MEDIATE (12,378 rows) อย่างมาก
mediate2020-NEW.cms_mediation มีเพียง 10,886 rows — น่าจะเป็นข้อมูลที่ถูก migrate/copy มาบางส่วน
mediate2020-NEW มี row counts ใกล้เคียงกับ MEDIATE schema มากกว่า → น่าจะเป็น clone ของ production
- ข้อมูลเรื่องไกล่เกลี่ยเก่า (55K records ใน mediate2020) อาจเป็นข้อมูลสะสมจากก่อนที่จะย้ายมาใช้ schema ใหม่
| เปรียบเทียบ |
MEDIATE (Prod .149) |
mediate2020 (Legacy .43) |
| จำนวนคอลัมน์ |
~107 columns |
~107 columns |
| Primary Key |
mediation_id (int) |
mediation_id (int) |
| โครงสร้าง |
เหมือนกัน |
เหมือนกัน |
| คอลัมน์ idcard |
varchar(20) |
varchar(13) |
| Binary columns |
certificate, evidence, doc_money (varbinary) |
ไม่มี (เพิ่มมาทีหลัง) |
cms_users
| เปรียบเทียบ |
MEDIATE |
mediate2020 |
| จำนวนคอลัมน์ |
29 |
29 |
| โครงสร้าง |
เหมือนกัน |
เหมือนกัน |
| position |
nvarchar(240) |
varchar(50) |
cms_compensation_* (8 tables) — เพิ่มมาจาก Phase 1 (ระบบเบิกจ่าย)
cms_comment_certificate — ใบรับรองผู้ไกล่เกลี่ย
cms_profile_ktbcorp* (4 tables) — ข้อมูลธนาคาร KTB
cms_training_management_* (2 tables) — เพิ่มเติม
cms_mediation_copy1, cms_mediator_applicant_copy1 — backup copies
การประเมินความยากง่ายในการรวม V1 + V2
ระดับความยาก: ปานกลาง-สูง (6/10) 
ปัจจัยที่ทำให้ง่ายขึ้น (Favorable)
- ฐานข้อมูลเดียวกัน — ทั้ง V1 และ V2 ใช้ MSSQL, schema เกือบเหมือนกัน 100%
- ชื่อตาราง/คอลัมน์ตรงกัน —
cms_mediation มี 107 columns เหมือนกันทั้งสองฝั่ง
- ไม่มี Stored Procedures — Business logic อยู่ในโค้ดแอปพลิเคชัน ไม่ได้ผูกกับ DB
- ไม่มี Foreign Keys — ไม่ต้องกังวลเรื่อง referential integrity ตอน migrate
- มี codebase ที่พร้อมใช้ — Phase 1 backend (mediation-backend2025) เป็น Node.js ที่ connect MSSQL ได้แล้ว
- UAT มีทุกอย่างรันอยู่ — สามารถทดสอบได้ทันที
ปัจจัยที่ทำให้ยากขึ้น (Challenging)
- Tech Stack ต่างกัน — V1 = PHP/CodeIgniter, V2/Phase1 = Node.js/Express/Vue.js → ต้องเลือก stack เดียว
- ข้อมูล mediate2020 มี 55K records vs Production 12K — ต้องวิเคราะห์ว่าเป็น superset หรือแยกกัน
- 5+ codebases บนเครื่อง V2 —
backend, mediation-backend, mediation-backend2025, mediation-new-backend, mediation-frontend, mediation-frontend2025 → code fragmentation
- นักพัฒนาต่างทีม — Phase 1 by Webify (webify-th), V2 original by pravarntle → คนละ coding style
- Copy-based versioning —
mssqlController.js มีหลายสำเนาตามวันที่ (-20250907, -20251229, -20260326) แทนที่จะใช้ Git branch
- V1 อยู่บน Windows — ถ้าจะย้ายต้อง containerize PHP app
- Binary data ในตาราง — certificate, evidence, doc_money เป็น varbinary ใน MEDIATE (Production) แต่ไม่มีใน mediate2020 เดิม
- Alfresco ECM dependency — Phase 1 backend2025 เชื่อมกับ Alfresco (external) สำหรับจัดการเอกสาร
แนวทางที่แนะนำ
graph LR
A["Phase 2 ระบบรวม"] --> B["Backend: Node.js<br/>(ต่อยอดจาก backend2025)"]
A --> C["Frontend: Vue.js<br/>(ต่อยอดจาก frontend2025)"]
A --> D["DB: MEDIATE schema<br/>บน PSDBPRDDB (.149:3412)"]
B --> E["Migrate V1 PHP logic<br/>→ Node.js controllers"]
B --> F["Merge data จาก mediate2020<br/>→ MEDIATE schema"]
C --> G["รวม UI ทั้ง V1+V2<br/>เป็นจุดเข้าเดียว"]
ขั้นตอนที่แนะนำ
-
Data Reconciliation (สัปดาห์ 1-2)
- วิเคราะห์ mediate2020 (55K records) เทียบกับ MEDIATE (12K records)
- ระบุข้อมูลซ้ำ / ข้อมูลที่ต้อง migrate
- วาง migration script
-
Feature Mapping (สัปดาห์ 1-2)
- Map ทุกเมนู/ฟีเจอร์ของ V1 PHP กับ V2 Vue.js
- ระบุฟีเจอร์ที่ซ้ำกัน / มีเฉพาะใน V1 / มีเฉพาะใน V2
- ระบุ gap กับ TOR 7.14
-
Build on Phase 1 Foundation (สัปดาห์ 3+)
- ใช้
mediation-backend2025 (Node.js) เป็น backend หลัก
- ใช้
mediation-frontend2025 (Vue.js/CoreUI) เป็น frontend หลัก
- เพิ่ม features จาก V1 ที่ขาดหาย
- ชี้ DB ไปที่ MEDIATE schema บน Production (.149)
-
Data Migration (ก่อน UAT)
- Merge ข้อมูลจาก mediate2020 เข้า MEDIATE schema
- Handle binary columns (certificate, evidence)
- Validate data integrity
ข้อมูลเพิ่มเติมจากทีม Phase 1
จาก Phase 1 Team (6 เมษายน 2569):
- V1 = 10.136.27.41 → Server Production ระบบไกล่เกลี่ย V1 (PHP)
- V2 = 10.136.27.87 → Server Production ระบบไกล่เกลี่ย V2 (Node+Vue)
- 10.136.27.124 = VM UAT รวมทุกระบบตอน dev Phase 1 (Docker containers)
- .41 กับ .87 เป็น server production ของระบบไกล่เกลี่ยจริงที่ใช้อยู่
Appendix: Legacy DB (10.136.27.43) — ฐานข้อมูลทั้งหมด
| Database |
สถานะ |
หมายเหตุ |
| mediate2020 |
ONLINE |
V2 mediation database (55K cases) |
| mediate2020-NEW |
ONLINE |
Clone/snapshot (10K cases, ใช้โดย UAT) |
| RLPD01 |
ONLINE |
ระบบ RLPD เก่า |
| RLPD02 / RLPD02uat |
ONLINE |
ระบบ RLPD เก่า v2 |
| rlpd2021 |
ONLINE |
ระบบ RLPD ปี 2564 |
| db_rlpd_ocipa / rlpd_ocipa |
ONLINE |
OCIPA (S6) เก่า |
| rlpd_134 / rlpd_134_test |
ONLINE |
ค่าตอบแทนทนาย 134 (S5) เก่า |
| rlpd_elearning |
ONLINE |
E-Learning |
| rlpd_esaraban |
ONLINE |
สารบรรณอิเล็กทรอนิกส์ |
| rlpd_scn103 |
ONLINE |
SCN103 |
| import_data |
ONLINE |
ข้อมูลนำเข้า |
| test_1, test_2, TEST-NEW-2 |
ONLINE |
ฐานข้อมูลทดสอบ |