S6 — ระบบช่วยเหลือเยียวยาผู้เสียหายและจำเลยในคดีอาญา (OCIPA)¶
Victim and Defendant Compensation System (OCIPA)¶
⚠️ ระดับความเสี่ยง: สูงมาก (HIGH RISK)
ตารางสรุปข้อมูลเบื้องต้น¶
| หัวข้อ | รายละเอียด |
|---|---|
| อ้างอิง TOR | ข้อ 7.16 |
| หน่วยงานรับผิดชอบ | สำนักช่วยเหลือทางการเงินแก่ผู้เสียหายและจำเลยในคดีอาญา (สชง.) |
| ลักษณะการพัฒนา | ระบบปรับปรุงและเพิ่มประสิทธิภาพ (Improvement & Maintenance) |
| สถานะโครงการ | |
| ระดับความซับซ้อน | ระดับสูงมาก (🔴 High Risk / Critical) |
| เทคโนโลยี (Tech Stack) | C# .NET, IIS, MSSQL |
| การควบคุมเวอร์ชัน | จัดเก็บเป็นไฟล์ (No Version Control) |
| สถานะการดำเนินงาน | ระบบใช้งานจริง (Production) และอยู่ระหว่างวางแผนปรับปรุง |
ข้อมูลเอกสารอ้างอิง (SRS)¶
| หัวข้อ | รายละเอียด |
|---|---|
| ชื่อเอกสาร | Software Requirement Specification (SRS) v3.0.0 |
| วันที่ออกฉบับ | กันยายน 2565 (2022) |
| ผู้พัฒนาเดิม | บริษัท Megazzy (www.megazzy.co.th) |
| URL ระบบจริง | ocipav1.rlpd.go.th (IP 10.136.27.44) |
| URL ระบบทดสอบ | ocipauat.rlpd.go.th (IP 10.136.27.144) |
| โครงสร้างระบบ | ASP.NET MVC (Classic) บน IIS 10.0 |
| ความปลอดภัย | HTTPS (TLS 1.2), Sectigo Wildcard SSL (หมดอายุ ก.ค. 2026) |
ข้อตรวจพบเร่งด่วน: ระบบ UAT มีการตั้งค่า HTTP Redirect ผิดพลาด โดยชี้ไปที่ Hostname ของระบบ Production ทำให้ไม่สามารถทดสอบแยกส่วนได้ (ต้องแก้ไข IIS Redirect Rule)
สถาปัตยกรรมการ Deploy (Deployment Architecture)¶
สำรวจเมื่อ: 1 เมษายน 2569 (2026-04-01) — ข้อมูลจากการ Probe ผ่าน VPN (ไม่มี OS-level access)
แผนผังสถาปัตยกรรม¶
graph TB
subgraph Internet["Internet / VPN"]
USER["ผู้ใช้งาน"]
end
subgraph PROXY["Reverse Proxy / Virtual IP"]
VIP["10.136.27.248<br/>DNS: ocipav1.rlpd.go.th<br/>DNS: ocipauat.rlpd.go.th<br/>(Proxy/NAT ส่งต่อไป .44/.144)"]
end
subgraph PROD["Production Server — 10.136.27.44"]
IIS_PROD["IIS 10.0<br/>Windows Server"]
subgraph APP_PROD["ASP.NET MVC Application"]
SIGNIN["/signin — Login + CAPTCHA"]
HOME["/Home — Dashboard"]
CASE["/Case — จัดการเคส"]
COMPLAINT["/Complaint — รับเรื่อง"]
DXC_CB["/dxc — DXC Callback"]
LINKAGE["/linkageservice/auth"]
STATIC["/Content, /Scripts, /assets"]
CAPTCHA["/DefaultCaptcha/Generate"]
end
IIS_PROD --> APP_PROD
end
subgraph UAT["UAT Server — 10.136.27.144"]
IIS_UAT["IIS 10.0<br/>Windows Server<br/>⚠️ SSL expired (ส.ค. 2567)"]
end
subgraph DB_UNKNOWN["Database Server — ⚠️ ยังระบุไม่ได้"]
OCIPA_DB["MSSQL Server<br/>ตำแหน่ง: 10.136.27.41 (สันนิษฐาน)<br/>หรือ localhost บน .44<br/>(Port 1433 ปิดจากภายนอก)"]
end
subgraph EXT["External Services"]
DXC["DXC SSO<br/>sso.dxc.go.th<br/>(ตรวจประวัติอาชญากรรม)"]
GFMIS["GFMIS<br/>(เบิกจ่ายงบประมาณ)"]
end
USER -->|"HTTPS :443"| VIP
VIP --> IIS_PROD
VIP --> IIS_UAT
IIS_PROD -->|"SQL Connection<br/>(ไม่เปิด Port 1433<br/>จากภายนอก)"| OCIPA_DB
APP_PROD -->|"OAuth2/OIDC"| DXC
APP_PROD -->|"เบิกจ่าย"| GFMIS
รายละเอียด IIS Deployment¶
| รายการ | Production (10.136.27.44) | UAT (10.136.27.144) |
|---|---|---|
| Web Server | Microsoft IIS 10.0 | Microsoft IIS 10.0 |
| Application Framework | ASP.NET MVC (Classic) | ASP.NET MVC (Classic) |
| Server Header | RLPD (กำหนดเอง — ซ่อน IIS version) |
RLPD |
| Protocol | HTTP/2 over TLS | HTTP/2 over TLS |
| SSL Certificate | Sectigo Wildcard (*.rlpd.go.th), หมดอายุ ก.ค. 2569 |
|
| Port 80 (HTTP) | 404 (ไม่มี HTTP binding ใน IIS) | 404 |
| Port 443 (HTTPS) | ||
| Port 3389 (RDP) | Open — ไม่มี credentials | Open — ไม่มี credentials |
| Port 5985 (WinRM) | Open — Auth rejected | Open — Auth rejected |
| Port 9081 | ||
| Port 1433 (SQL) | ||
| DNS Resolution (ภายใน) | 10.136.27.248 | 10.136.27.248 |
ข้อสังเกต: DNS ภายในเครือข่ายชี้ทั้ง Production และ UAT ไปที่ 10.136.27.248 แทนที่จะเป็น .44/.144 โดยตรง บ่งชี้ว่ามี Reverse Proxy หรือ Virtual IP อยู่ด้านหน้า
Frontend Technology Stack (จากการวิเคราะห์ HTTP Response)¶
| ส่วนประกอบ | เทคโนโลยี | เวอร์ชัน/หมายเหตุ |
|---|---|---|
| Server-side | ASP.NET MVC (Classic) | ยืนยันจาก Bundle pattern, Anti-forgery Token, Cookie pattern |
| CSS/UI Theme | AdminLTE | พร้อม Custom base.css |
| JavaScript | jQuery | Bundled (/bundles/jquery) |
| UI Framework | Bootstrap | bootstrap.bundle.min.js |
| Template Engine | Handlebars.js | v4.5.3 (Client-side rendering) |
| Date Handling | Moment.js | ใช้ทั้ง Thai/English date format |
| Number Formatting | Numeral.js | สำหรับตัวเลขการเงิน |
| Form Validation | jQuery Validation Engine | Thai language support |
| Pagination | Pagination.js | Client-side pagination |
| CAPTCHA | DefaultCaptcha (Built-in) | /DefaultCaptcha/Generate |
| Bundling | ASP.NET Bundling | /Content/css?v=..., /bundles/common?v=... |
URL Routes ที่ค้นพบ¶
| Route | HTTP Status | หมายเหตุ |
|---|---|---|
/ |
302 → /signin |
Redirect ไปหน้า Login |
/signin |
200 | หน้า Login พร้อม CAPTCHA + Anti-forgery Token |
/Home |
302 → /signin |
Dashboard (ต้อง Login) |
/Case |
302 → /signin |
จัดการเคส (ต้อง Login) |
/Complaint |
302 → /signin |
รับเรื่องร้องทุกข์ (ต้อง Login) |
/dxc |
302 | DXC OAuth2 Callback |
/DefaultCaptcha/Generate |
200 | สร้างรูป CAPTCHA |
/Content/, /Scripts/ |
301 | Static files (CSS, JS) |
/robots.txt |
200 | Disallow: / (ปิดการ Index ทั้งหมด) |
/Error |
500 | Error page (เปิดเผย server: Microsoft-IIS/10.0) |
/trace.axd |
403 | ASP.NET Trace ถูกปิด (เปิดเผย IIS version) |
การเชื่อมต่อ DXC (Criminal Record Check)¶
OCIPA เชื่อมต่อกับระบบ DXC ของกระทรวงยุติธรรมเพื่อตรวจสอบประวัติอาชญากรรม:
| รายการ | รายละเอียด |
|---|---|
| Client ID | rlpd-ocipa |
| SSO Endpoint | https://sso.dxc.go.th/auth/realms/DXC/protocol/openid-connect/auth |
| Redirect URI (Prod) | https://ocipav1.rlpd.go.th/dxc |
| Auth URI (Prod) | https://ocipav1.rlpd.go.th/linkageservice/auth |
| Scope | offline_access dxc-data email profile nin |
| Protocol | OAuth2/OIDC (PKCE with S256) |
Security Headers¶
| Header | Value | สถานะ |
|---|---|---|
X-Frame-Options |
SAMEORIGIN | |
X-XSS-Protection |
1; mode=block | |
X-Content-Type-Options |
nosniff | |
Cache-Control |
private | |
Content-Security-Policy |
(ไม่พบ) | |
Strict-Transport-Security |
(ไม่พบ) |
Cookies¶
| Cookie | Flags | วัตถุประสงค์ |
|---|---|---|
dv |
Secure; HttpOnly; SameSite=Lax |
Session ID |
hw |
Secure; HttpOnly |
Authentication / Anti-forgery |
ประเด็นที่ยังต้องสำรวจเพิ่มเติม (Open from Probing)¶
[ประเด็นเปิด — OS Access] ไม่มี credentials ระดับ OS สำหรับ OCIPA Server (10.136.27.44 และ 10.136.27.144) ต้องขอจากกรมฯ หรือผู้พัฒนาเดิม (Megazzy) เพื่อตรวจสอบ IIS Sites, Application Pools, Connection Strings และ .NET Runtime Version
[ประเด็นเปิด — Database] ตำแหน่ง Database Server ของ OCIPA ยังระบุไม่ได้ — ไม่พบ Port 1433 เปิดบน .44, .144 หรือ .248 สันนิษฐานว่าอาจอยู่บน 10.136.27.41 (พบ SQL Port เปิด แต่เข้าถึงไม่ได้) หรือเป็น localhost binding บน .44
[ประเด็นเปิด — Reverse Proxy] IP 10.136.27.248 ทำหน้าที่อะไร? DNS ภายในชี้ทั้ง Production และ UAT domain ไปที่ IP นี้ — เป็น Reverse Proxy, Load Balancer, หรือ Virtual IP?
[ประเด็นเปิด — Port 9081] Port 9081 ระบุไว้ใน Credential file แต่ปิดอยู่ทั้ง Production และ UAT — เคยใช้สำหรับอะไร?
สถานะปัจจุบัน (Current State)¶
ระบบ OCIPA เป็นระบบวิกฤต (Mission Critical) ที่ใช้ในการบริหารจัดการเงินเยียวยาผู้เสียหายและจำเลยในคดีอาญาตามกฎหมาย ปัจจุบันระบบเปิดใช้งานแล้วแต่พบปัญหาทางเทคนิคและข้อจำกัดในการใช้งานหลายประการ
ประเด็นปัญหาสำคัญ: - หนี้ทางเทคนิค (Technical Debt): ซอร์สโค้ดไม่มีการใช้ระบบ Version Control (เช่น Git) ทำให้เสี่ยงต่อข้อมูลสูญหายหรือการเขียนทับ - ปัญหาการคอมไพล์ (Build Issues): ซอร์สโค้ดบางโมดูลไม่สามารถคอมไพล์ได้เนื่องจากการอ้างอิงไลบรารีที่ขาดหายไป - ข้อจำกัดของลำดับงาน (Workflow Rigid): เวิร์กโฟลว์มีความซับซ้อนสูง (6 รูปแบบหลัก) แต่ขาดความยืดหยุ่นในการปรับแก้สถานะ
ขอบเขตความต้องการตาม TOR¶
ตามรายละเอียดในข้อกำหนด TOR ข้อ 7.16 การปรับปรุงระบบ OCIPA ต้องครอบคลุมดังนี้: - เพิ่มประสิทธิภาพการช่วยเหลือเยียวยาผู้เสียหายและจำเลยให้รวดเร็วและทั่วถึง - รองรับการยื่นคำขอรับเงินชดเชยผ่านช่องทางออนไลน์ (Online Submission) - พัฒนาระบบติดตามสถานะแบบสีสัญญาณ (Color-coded Tracking: Green/Yellow/Red) - บูรณาการระบบ OTP สำหรับการยืนยันตัวตนผู้ยื่นคำขอ - เชื่อมต่อข้อมูลกับระบบ GFMIS สำหรับกระบวนการเบิกจ่ายเงินงบประมาณ - พัฒนาระบบรายงานสถิติและวิเคราะห์ข้อมูลเชิงลึกรายจังหวัด
ขั้นตอนการทำงานหลัก (General Workflow)¶
กระบวนการทำงานเริ่มตั้งแต่การรับเรื่องจนถึงการจ่ายเงิน มีทั้งหมด 10 ขั้นตอนหลัก:
graph TD
A[1. ยื่นคำขอชดเชย] --> B[2. ตรวจสอบข้อมูลเบื้องต้น]
B --> C[3. ตรวจสอบเอกสาร/ข้อเท็จจริง]
C --> D[4. ส่งเรื่องคณะอนุกรรมการ]
D --> E[5. พิจารณาโดยคณะอนุกรรมการ]
E --> F[6. ส่งเรื่องคณะกรรมการชุดใหญ่]
F --> G[7. พิจารณาตัดสิน/อนุมัติ]
G --> H[8. คำนวณเงินชดเชย]
H --> I[9. เบิกจ่ายผ่าน GFMIS]
I --> J[10. ปิดเคสและจัดเก็บเอกสาร]
เวิร์กโฟลว์ย่อยตามประเภทกรณี: 1. ศูนย์รับเรื่อง (Case Reception) — 6 ขั้นตอน 2. รับเรื่องร้องทุกข์ (Complaint Reception) 3. ช่วยเหลือผู้เสียหายในคดีอาญา (Victim Compensation) — 29 ขั้นตอน 4. ช่วยเหลือผู้เสียหาย (กรณีอุทธรณ์) (Appeal Case) — 29 ขั้นตอน 5. ช่วยเหลือจำเลยในคดีอาญา (Defendant Compensation) — 26 ขั้นตอน 6. ช่วยเหลือผู้ต้องหา (Suspect Compensation)
ปัญหาที่ตรวจพบและต้องแก้ไข (Identified Issues)¶
🔴 ปัญหาระดับวิกฤต (Critical Issues)¶
- ข้อจำกัดในการย้อนสถานะ (Workflow Backtrack): เมื่อสถานะถูกอัปเดตไปแล้ว ไม่สามารถย้อนกลับผ่าน UI ได้ หากเกิดข้อผิดพลาดต้องให้ Admin แก้ไขฐานข้อมูลโดยตรงเท่านั้น
- ปัญหาประสิทธิภาพการค้นหา (Search Timeout): การค้นหาข้อมูลปริมาณมากมักเกิดอาการหน้าจอค้าง (Timeout) เนื่องจากขาดการแบ่งหน้า (Pagination) และการจัดการ Connection Pooling
- การส่งออกรายงาน (Export Failure): ไม่สามารถส่งออกรายงานขนาดใหญ่ได้ ระบบมักจะส่งกลับเป็นไฟล์ว่างหรือเกิด Error
- ข้อจำกัดเรื่องเอกสารแนบ (Attachment Constraints): ไม่สามารถเพิ่มหรือแก้ไขเอกสารแนบย้อนหลังได้หลังจากผ่านขั้นตอนไปแล้ว ทำให้เวิร์กโฟลว์หยุดชะงัก
- ความซับซ้อนของระบบ (Scope Creep): มีระบบย่อยที่ไม่เกี่ยวข้องกับงานชดเชยถูกนำมาฝังไว้ใน OCIPA ทำให้ดูแลรักษายาก
🟡 ปัญหาด้านคุณภาพซอฟต์แวร์ (Software Quality)¶
- Source Code Build Failure: ต้องการการตรวจสอบและแก้ไข dependencies ทั้งหมดเพื่อให้สามารถคอมไพล์ระบบได้ 100%
- Version Control Absence: ต้องย้ายโค้ดเข้าสู่ระบบ Git เพื่อสร้างประวัติการแก้ไขและรองรับการทำงานร่วมกัน
จุดเชื่อมต่อระบบ (System Integration)¶
| แหล่งข้อมูล / ระบบที่เกี่ยวข้อง | ชื่อระบบ | ทิศทาง | ประเภทข้อมูล | หมายเหตุ |
|---|---|---|---|---|
| ระบบพอร์ทัลหลัก | S9 Web Portal | ขาเข้า (Inbound) | สิทธิ์การเข้าถึง / ข้อมูล OTP | ใช้สำหรับการยืนยันตัวตนและการเข้าถึงจากภายนอก |
| ระบบให้คำปรึกษาฯ | S1 Legal Consultation | ขาออก (Outbound) | ข้อมูลคำขอออนไลน์ | ส่งข้อมูลคำขอชดเชยไปให้ S1 เพื่อประกอบการให้คำปรึกษา |
| ระบบข้อมูลกลาง (MSC) | Master System | ขาเข้า (Inbound) | ข้อมูลบุคคล/ประวัติคดี | ดึงข้อมูลพื้นฐานจากฐานข้อมูลกลางกระทรวงยุติธรรม |
| ระบบการเงินภาครัฐ | GFMIS | ขาออก (Outbound) | รายการเบิกจ่ายงบประมาณ | ใช้ในการอนุมัติจ่ายเงินผ่านธนาคาร KTB/BBL |
ประเด็นที่ต้องการคำชี้แจง (Open Issues)¶
[ประเด็นเปิด] ซอร์สโค้ดส่วนใดบ้างที่ยังคอมไพล์ไม่ผ่าน และมีรายการไลบรารีที่ขาดหายไปหรือไม่?
[ประเด็นเปิด] รายการระบบย่อย (Sub-systems) ที่ "จอด" อยู่ใน OCIPA มีอะไรบ้างที่ควรแยกออกไปเพื่อลดความซับซ้อน?
[ประเด็นเปิด] แผนผังการเปลี่ยนสถานะ (Status Transition Matrix) ของทั้ง 6 เวิร์กโฟลว์มีความชัดเจนเพียงใดในเอกสาร SRS?
[ประเด็นเปิด] มีนโยบายการสำรองข้อมูล (Backup) และแผนกู้คืนระบบ (Disaster Recovery) ในปัจจุบันอย่างไร?
[ประเด็นเปิด] ขอบเขตการเชื่อมต่อกับระบบ GFMIS มีข้อจำกัดทางเทคนิคหรือความปลอดภัยที่ต้องระวังหรือไม่?
หมายเหตุทางเทคนิค (Technical Notes)¶
แผนการปรับปรุงในระยะที่ 2 (Phase 2 Roadmap)¶
- การปรับเสถียรภาพ (Stabilization):
- จัดทำระบบ Version Control (Git) และนำโค้ดเข้าสู่ระบบทันที
- แก้ไขปัญหา Build Error และสร้างมาตรฐานการคอมไพล์ (CI/CD Pipeline)
-
ปรับปรุงการตั้งค่า IIS ในระบบ UAT ให้ถูกต้อง
-
การแก้ไขปัญหาเวิร์กโฟลว์และ UI:
- พัฒนาระบบ "Admin Backtrack" เพื่อให้ผู้มีอำนาจสามารถย้อนสถานะเคสได้ผ่าน UI อย่างปลอดภัย
- เพิ่มระบบ Pagination และ Search Optimization เพื่อป้องกันปัญหา Timeout
-
ปรับปรุงโมดูลรายงานให้รองรับการ Streaming ข้อมูลขนาดใหญ่
-
การบริหารจัดการเอกสาร:
- เพิ่มฟังก์ชันการจัดการเวอร์ชันเอกสาร (Document Versioning)
-
อนุญาตให้มีการแก้ไขหรือเพิ่มเอกสารแนบย้อนหลังภายใต้การควบคุมสิทธิ์
-
สถาปัตยกรรมระบบ (Architecture):
- Independence of S1: ระบบ S1 ต้องสามารถทำงานได้แม้ OCIPA จะหยุดทำงาน (Decoupled Architecture)
- การซิงค์ข้อมูลระหว่าง S6 และ S1 จะใช้รูปแบบ Asynchronous หรือผ่าน API ที่มีการทำ Caching ข้อมูลไว้