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

S6 — ระบบช่วยเหลือเยียวยาผู้เสียหายและจำเลยในคดีอาญา (OCIPA)

Victim and Defendant Compensation System (OCIPA)

⚠️ ระดับความเสี่ยง: สูงมาก (HIGH RISK)

ตารางสรุปข้อมูลเบื้องต้น

หัวข้อ รายละเอียด
อ้างอิง TOR ข้อ 7.16
หน่วยงานรับผิดชอบ สำนักช่วยเหลือทางการเงินแก่ผู้เสียหายและจำเลยในคดีอาญา (สชง.)
ลักษณะการพัฒนา ระบบปรับปรุงและเพิ่มประสิทธิภาพ (Improvement & Maintenance)
สถานะโครงการ 🟠 ปรับปรุงระบบเดิม (Existing System) — ระบบมีอยู่ก่อน Phase 1 และไม่ได้อยู่ในขอบเขต TOR Phase 1 เป็นระบบเดิม (พัฒนาโดย Megazzy, SRS v3.0.0 ปี 2565) ที่นำมาปรับปรุงใหม่ใน Phase 2
ระดับความซับซ้อน ระดับสูงมาก (🔴 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 ❌ Self-signed, หมดอายุ ส.ค. 2567
Port 80 (HTTP) 404 (ไม่มี HTTP binding ใน IIS) 404
Port 443 (HTTPS) ✅ Open — ให้บริการระบบ OCIPA ✅ Open
Port 3389 (RDP) Open — ไม่มี credentials Open — ไม่มี credentials
Port 5985 (WinRM) Open — Auth rejected Open — Auth rejected
Port 9081 ❌ Closed ❌ Closed
Port 1433 (SQL) ❌ Closed (ไม่มี SQL จากภายนอก) ❌ Closed
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 ✅ ป้องกัน Clickjacking
X-XSS-Protection 1; mode=block ✅ ป้องกัน XSS
X-Content-Type-Options nosniff ✅ ป้องกัน MIME sniffing
Cache-Control private ✅ ไม่ cache สาธารณะ
Content-Security-Policy (ไม่พบ) ⚠ ควรเพิ่ม
Strict-Transport-Security (ไม่พบ) ⚠ ควรเพิ่ม HSTS

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)

  1. ข้อจำกัดในการย้อนสถานะ (Workflow Backtrack): เมื่อสถานะถูกอัปเดตไปแล้ว ไม่สามารถย้อนกลับผ่าน UI ได้ หากเกิดข้อผิดพลาดต้องให้ Admin แก้ไขฐานข้อมูลโดยตรงเท่านั้น
  2. ปัญหาประสิทธิภาพการค้นหา (Search Timeout): การค้นหาข้อมูลปริมาณมากมักเกิดอาการหน้าจอค้าง (Timeout) เนื่องจากขาดการแบ่งหน้า (Pagination) และการจัดการ Connection Pooling
  3. การส่งออกรายงาน (Export Failure): ไม่สามารถส่งออกรายงานขนาดใหญ่ได้ ระบบมักจะส่งกลับเป็นไฟล์ว่างหรือเกิด Error
  4. ข้อจำกัดเรื่องเอกสารแนบ (Attachment Constraints): ไม่สามารถเพิ่มหรือแก้ไขเอกสารแนบย้อนหลังได้หลังจากผ่านขั้นตอนไปแล้ว ทำให้เวิร์กโฟลว์หยุดชะงัก
  5. ความซับซ้อนของระบบ (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)

  1. การปรับเสถียรภาพ (Stabilization):
  2. จัดทำระบบ Version Control (Git) และนำโค้ดเข้าสู่ระบบทันที
  3. แก้ไขปัญหา Build Error และสร้างมาตรฐานการคอมไพล์ (CI/CD Pipeline)
  4. ปรับปรุงการตั้งค่า IIS ในระบบ UAT ให้ถูกต้อง

  5. การแก้ไขปัญหาเวิร์กโฟลว์และ UI:

  6. พัฒนาระบบ "Admin Backtrack" เพื่อให้ผู้มีอำนาจสามารถย้อนสถานะเคสได้ผ่าน UI อย่างปลอดภัย
  7. เพิ่มระบบ Pagination และ Search Optimization เพื่อป้องกันปัญหา Timeout
  8. ปรับปรุงโมดูลรายงานให้รองรับการ Streaming ข้อมูลขนาดใหญ่

  9. การบริหารจัดการเอกสาร:

  10. เพิ่มฟังก์ชันการจัดการเวอร์ชันเอกสาร (Document Versioning)
  11. อนุญาตให้มีการแก้ไขหรือเพิ่มเอกสารแนบย้อนหลังภายใต้การควบคุมสิทธิ์

  12. สถาปัตยกรรมระบบ (Architecture):

  13. Independence of S1: ระบบ S1 ต้องสามารถทำงานได้แม้ OCIPA จะหยุดทำงาน (Decoupled Architecture)
  14. การซิงค์ข้อมูลระหว่าง S6 และ S1 จะใช้รูปแบบ Asynchronous หรือผ่าน API ที่มีการทำ Caching ข้อมูลไว้