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

สรุปโครงการระยะที่ 1 (Phase 1 Summary)

แหล่งข้อมูล: สกัดจากเอกสารส่งมอบ 24 ไฟล์ PDF ครบทั้ง 4 งวด

ผู้รับเหมา: บริษัท เอ็ม เอฟ อี ซี จำกัด (มหาชน) — MFEC Public Company Limited

วันลงนามสัญญา: 17 กุมภาพันธ์ 2568 (2025)

ระยะเวลาโครงการ: 270 วัน (สิ้นสุด 14 พฤศจิกายน 2568)


ภาพรวมโครงการ

โครงการพัฒนาและปรับปรุงระบบสารสนเทศกรมคุ้มครองสิทธิและเสรีภาพ ระยะที่ 1 ดำเนินการจัดซื้อจัดจ้างแบบ e-bidding ครอบคลุม TOR ข้อ 7.9–7.15 และ 7.20–7.21 รวม 7 ระบบสารสนเทศ + ระบบ AD/SSO

วัตถุประสงค์

  1. พัฒนาแพลตฟอร์มบริการดิจิทัลที่มีประสิทธิภาพและปลอดภัย
  2. ให้ประชาชนเข้าถึงบริการกรมฯ ได้สะดวก รวดเร็ว ครบถ้วน
  3. จัดการข้อมูลอย่างเป็นระบบ เชื่อมโยงข้อมูลเพื่อวิเคราะห์สถานการณ์สิทธิมนุษยชนในประเทศไทย

ระบบที่ส่งมอบ (7 ระบบ + SSO)

# ระบบ TOR ประเภท Tech Stack
1 Web Portal 7.9 พัฒนาใหม่ React.js + Tailwind CSS + AntD
2 Service Center (ระบบบริหารงานรับเรื่อง) 7.10 พัฒนาใหม่ React.js + Node.js + Express
3 Complaint Management (ระบบจัดการเรื่องราวร้องทุกข์) 7.11 พัฒนาใหม่ React.js + Node.js + Express
4 Anti-Torture/Disappearance (พ.ร.บ. ป้องกันการทรมานฯ 2565) 7.12 พัฒนาใหม่ React.js + Node.js + Express
5 Witness Protection (คุ้มครองพยานในคดีอาญา) 7.13 ปรับปรุง ASP.NET Core 9.0 (C#)
6 Dispute Mediation (ไกล่เกลี่ยข้อพิพาท) 7.14 ปรับปรุง PHP CodeIgniter + Vue.js + Node.js
7 e-Learning (จัดการองค์ความรู้/พัฒนาบุคลากร) 7.15 ปรับปรุง (ปรับปรุง WCAG)
Keycloak SSO + Active Directory 7.20–7.21 จัดหา Keycloak (OIDC/OAuth2) + LDAP

ระบบเพิ่มเติมที่ค้นพบจากการสำรวจ Server จริง (30 มี.ค. 2569)

# ระบบ ไม่มีในเอกสาร Tech Stack หมายเหตุ
8 TangRat Mini-App (พ.ร.บ. ทรมานฯ — ช่องทางประชาชน) ใช่ React.js + Node.js เชื่อมต่อ DGA/GDX API, Citizen Portal
MSSQL 2022 (Container) ใช่ mcr.microsoft.com/mssql/server:2022-latest Developer Edition, ไม่มี persistent volume

💡 TangRat เป็น mini-app สำหรับประชาชนยื่นเรื่องร้องเรียนตาม พ.ร.บ. ป้องกันการทรมานฯ ผ่าน DGA Citizen Portal (egov.go.th) ไม่ปรากฏในเอกสารส่งมอบ Phase 1 แต่พบ running บน server จริง


สถานะ Server จริง (สำรวจ 30 มี.ค. 2569)

รายการ ข้อมูลจากการสำรวจ
Server 10.136.27.124 (hostname: rlpd7systemsuat)
OS Ubuntu 24.04.3 LTS (Kernel 6.8.0-100)
Hardware 4 vCPU, 8 GB RAM (Nutanix KVM)
Disk 98 GB (64 GB used, 69%)
Docker Containers 11 (8 running, 3 stopped)
Nginx Host-level reverse proxy (4 virtual hosts)
MSSQL 2022 Developer in Docker (port 1433)
Public Domains webportaluat.rlpd.go.th, emediation.rlpd.go.th, emediations.rlpd.go.th, learningportal.rlpd.go.th

Servers ใหม่ที่ค้นพบ (ไม่อยู่ใน credential file เดิม)

IP บทบาท Database ใช้โดย
10.136.27.127:5432 PostgreSQL rlpd_keycloak Keycloak SSO backend
10.136.27.43:1433 SQL Server mediate2020-NEW Mediation BO (external)
10.136.27.228 SQL Server (เก่า) RLPD_WITNESS WPIS (ยกเลิกแล้ว)
202.170.120.179 SQL Server (เก่า) RLPD_DB WPIS (ยกเลิกแล้ว)

รายละเอียดเพิ่มเติม: Server Inventory


สถาปัตยกรรม Phase 1

Technology Stack

Layer เทคโนโลยี
Frontend React.js + Tailwind CSS + Ant Design (AntD)
Backend (ระบบหลัก 1–4) Node.js + TypeScript + Express.js
Backend (Witness Protection) ASP.NET Core 9.0 (C#)
Backend (Mediation — Mediator) PHP + CodeIgniter
Backend (Mediation — Officer) Vue.js + Node.js
Database Microsoft SQL Server (shared single DB)
File Storage MinIO (S3-compatible)
Identity/SSO Keycloak — Realm: rlpd — OIDC/OAuth2
Directory Active Directory (LDAP federation via Keycloak)
External Auth ThaID (Digital ID — QR code scan)
Containerization Docker + Docker Compose
Reverse Proxy Nginx
OS Ubuntu 24.04.3 LTS (จากการสำรวจจริง)
BI/Reporting Tableau (existing license) + .xlsx/.csv export

Deployment Architecture

graph TB
    subgraph Internet
        CITIZEN["ประชาชน<br/>(ThaID)"]
        STAFF["เจ้าหน้าที่<br/>(AD/ThaID)"]
    end

    subgraph VM["UAT VM — 10.136.27.124<br/>Ubuntu Linux · Docker"]
        NGINX["Nginx<br/>Reverse Proxy<br/>:80/:443"]

        subgraph DOCKER["Docker Containers (rlpd-7sys-network)"]
            FRONTEND["Frontend<br/>React.js<br/>:3000"]
            BACKEND["Backend API<br/>Node.js/Express<br/>:8088"]
            MINIO["MinIO<br/>File Storage<br/>:9000/:9001"]
            WITNESS["rlpd-wpis<br/>ASP.NET Core 9.0<br/>:5000"]
            MED_PHP["rlpd-mediation<br/>PHP/CodeIgniter<br/>:9008"]
            MED_VUE["rlpd-mediation-vue<br/>Vue.js<br/>:9009"]
            MED_API["rlpd-mediation-nodejs<br/>Node.js API<br/>:4000"]
        end
    end

    subgraph EXTERNAL["External Services (Private Network)"]
        KEYCLOAK["Keycloak SSO<br/>sso.rlpd.go.th<br/>Realm: rlpd"]
        AD["Active Directory<br/>(LDAP)"]
        MSSQL[("SQL Server<br/>(Shared DB)")]
        THAID["ThaID<br/>(DOPA)"]
    end

    CITIZEN --> NGINX
    STAFF --> NGINX
    NGINX --> FRONTEND
    NGINX --> WITNESS
    NGINX --> MED_PHP
    NGINX --> MED_VUE
    FRONTEND --> BACKEND
    BACKEND --> MSSQL
    BACKEND --> MINIO
    BACKEND --> KEYCLOAK
    WITNESS --> MSSQL
    MED_API --> MSSQL
    KEYCLOAK --> AD
    KEYCLOAK --> THAID

Docker Services

Service Container Port Network
Frontend (React) rlpd-frontend 3000 rlpd-7sys-network
Backend API (Express) rlpd-backend 8088 rlpd-7sys-network
MinIO rlpd-minio 9000/9001 rlpd-7sys-network
Witness Protection rlpd-witness-app 5000 standalone
Mediation (Mediator) rlpd-mediation 9008 rlpd-7sys-network
Mediation (Officer) rlpd-mediation-vue 9009 rlpd-7sys-network
Mediation API rlpd-mediation-nodejs 4000 rlpd-7sys-network
Nginx nginx 80/443 host

Hardware Requirements (Minimum)

รายการ ขั้นต่ำ แนะนำ
CPU 4 cores 8 cores
RAM 8 GB 16 GB
Storage OS 50 GB + MinIO 100 GB 200 GB+
Network 100 Mbps+

Authentication & SSO Architecture

ประชาชน → Web Portal → ThaID (QR Scan) → Keycloak (OIDC) → Access Token (JWT) ↓ เจ้าหน้าที่ → Web Portal → Username/Password → Keycloak → LDAP → Active Directory ↓ ทุกระบบ (SSO — ไม่ต้อง login ซ้ำ)

Keycloak Configuration

รายการ ค่า
URL https://sso.rlpd.go.th/
Realm rlpd
Roles Admin, SubAdmin, User
Protocol OpenID Connect (OIDC) / OAuth 2.0
User Capacity 200+ concurrent users
AD Integration LDAP Federation
External Identity ThaID (National ID, Thai first/last name)

User Roles (3 ระดับ)

Role การเข้าถึง การยืนยันตัวตน
User (ประชาชน) ยื่นคำร้อง + ติดตามสถานะ ThaID เท่านั้น
Staff (เจ้าหน้าที่) เข้าถึงระบบตามสิทธิ์ (1–6 ระบบ) ThaID หรือ AD Username/Password
Admin (ผู้ดูแลระบบ) จัดการผู้ใช้ผ่าน Keycloak AD Username/Password

การเชื่อมโยงระหว่างระบบ (Integration Architecture)

graph LR
    PORTAL["Web Portal<br/>(จุดเข้าถึงรวม)"]
    SC["Service Center<br/>(รับเรื่อง)"]
    GM["Complaint Mgmt<br/>(ร้องทุกข์)"]
    AT["Anti-Torture<br/>(พ.ร.บ. ทรมานฯ)"]
    WP["Witness Protection<br/>(คุ้มครองพยาน)"]
    DM["Dispute Mediation<br/>(ไกล่เกลี่ย)"]
    EL["e-Learning"]

    PORTAL --> SC
    PORTAL --> GM
    PORTAL --> AT
    PORTAL --> WP
    PORTAL --> DM
    PORTAL --> EL

    SC -->|"ส่งต่อคำร้อง"| GM
    SC -->|"ส่งต่อคำร้อง"| AT
    SC -->|"ส่งต่อคำร้อง"| WP

หลักการสำคัญ: Service Center เป็น จุดรับเรื่องเดียว (Single Entry Point) — ทุกระบบรับคำร้องที่ส่งต่อจาก Service Center ไม่รับโดยตรง


Workflow & Role Hierarchy (แต่ละระบบ)

Complaint Management (ร้องทุกข์) — 5 Roles

สารบรรณกอง → ผอ.กอง → สารบรรณกลุ่ม → หัวหน้ากลุ่ม → เจ้าของสำนวน

Anti-Torture Act (พ.ร.บ. ทรมานฯ)

มาตรา 28 — 3 Roles: ผอ. → สปท. → สนว.

มาตรา 29 — 2 Roles: ผอ. → เจ้าหน้าที่

Witness Protection (คุ้มครองพยาน) — 6 Roles

สารบรรณกอง → ผอ.กอง → หัวหน้ากลุ่ม → เจ้าของสำนวน (นิติกร) → รองอธิบดี → อธิบดี

  • ต้องยืนยัน OTP ทางอีเมลก่อนเข้าระบบ (ชั้นความปลอดภัยเพิ่มเติม)
  • ข้อมูลเก่าแสดงแบบ read-only, ข้อมูลใหม่แยกต่างหาก

Dispute Mediation (ไกล่เกลี่ย) — Compensation Flow

ผู้ไกล่เกลี่ย (ยื่นเบิก) → เจ้าหน้าที่กรม (ตรวจสอบ) → หัวหน้ากรม → ผอ.กรม → รอง → อธิบดี


เอกสารการออกแบบ (Design Documents)

Use Cases ที่กำหนดไว้

ระบบ Use Cases รหัส
Portal System 10 use cases UC01–UC10
Service Center 9 use cases UC11–UC19
Complaint Management 13 use cases UC20–UC32
Anti-Torture (Art. 28) 11 use cases UC33–UC43
Anti-Torture (Art. 29) 8 use cases UC44–UC51
Dispute Mediation 7 use cases UC52–UC58
รวม 58 use cases

ER Diagrams & Data Dictionary

หมายเหตุ: ER Diagrams และ Data Dictionary อยู่ใน Detail Design PDF (งวด 2, เอกสารที่ 4) หน้า 127–236 ในรูปแบบ รูปภาพ ไม่สามารถสกัดเป็น text ได้ — ต้อง render เป็นรูปภาพเพื่ออ่าน

Non-Functional Requirements

หมวด ข้อกำหนด
Security HTTPS, Input Validation, bcrypt/Argon2 password hashing, SQL Injection/XSS/CSRF protection, JWT, Activity logging
Accessibility WCAG 2.1 Level AA (e-Learning ได้ WCAG 2.2 AA จาก NSTDA)
Responsive Desktop, Tablet, Smartphone
Languages ไทย + อังกฤษ
Browser ไม่รองรับ Internet Explorer
Password Policy 8–16 chars, uppercase+lowercase+digit, ไม่ใช้คำว่า 'password', ไม่เหมือน username

งวดการส่งมอบ (Milestone Deliverables)

งวด 1 — ภายใน 45 วัน (ส่งมอบ เม.ย. 2568)

# เอกสาร เวอร์ชัน
1 แผนการดำเนินงาน v1.2
2 สรุปรวบรวมความต้องการ (7 ระบบ) v1.0.0
3 รายชื่อบุคลากร 6 คน + CV v1.0.1
4 เอกสารจัดหาซอฟต์แวร์ (Keycloak) v1.0.0

งวด 2 — ภายใน 95 วัน (ส่งมอบ พ.ค. 2568)

# เอกสาร หน้า เนื้อหาสำคัญ
1 รายงานติดตั้ง AD/SSO (Keycloak) 16 ยืนยัน OIDC + LDAP Federation
2 Conceptual Design 13 Architecture overview, User roles, Tech stack
3 Functional Design 181 UI wireframes, BRD ทุกระบบ, Screen designs
4 Detail Design 236 58 Use Cases, Activity/Flow diagrams, ER Diagrams (image)

งวด 3 — ภายใน 240 วัน (ส่งมอบ ต.ค. 2568)

# เอกสาร เนื้อหาสำคัญ
1 ผังการติดตั้งระบบ Docker architecture, Service table, Nginx config
2 รายงานผลติดตั้ง Verification screenshots ทุกระบบ
3 คู่มือการติดตั้ง Docker Compose commands, .env setup, directory structure
4 ผลทดสอบ SIT Test case templates ทุกระบบ/ทุก role
5 ผลทดสอบ UAT Test case templates ทุกระบบ/ทุก role
6 แผนฝึกอบรม 9 รอบ, 9 วัน, ทุกระบบ
7 เอกสารพัฒนา/ส่งมอบ TOR mapping ข้อ 7.1–7.21
8 คู่มือผู้ใช้ (5 เล่ม) e-Learning, Keycloak Admin, Web Portal, Service Center, Witness Protection

งวด 4 — ภายใน 270 วัน (ส่งมอบ พ.ย. 2568)

# เอกสาร เนื้อหาสำคัญ
1 รายงานผลปรับปรุงระบบ 7 ระบบเสร็จสมบูรณ์ + 3 รายการเลื่อนไป MA
2 รายชื่อผู้ฝึกอบรม 3 รอบ/3 วัน, 62 คน
3 รายงานสรุปผลดำเนินการ สรุปทั้งโครงการ + WCAG recommendations

ทีมพัฒนา Phase 1 (MFEC)

# ชื่อ บทบาท ความเชี่ยวชาญ
1 นายเสถียร เพ็งที Project Manager 7 ปี, CompTIA Project+
2 นายศักรินร์ แก้วสถิตย์วงศ์ Software Engineer Team Lead 8 ปี, MSc Network Security, .NET/C#/React/Node.js
3 นายธนปุระเชษฐ์ ประภากรวิริยะ Senior Software Engineer 3 ปี, B.Eng. Software Eng. Thammasat, React/Node.js
4 นายจิณณวัตร แก้วเขียว Developer 3 ปี, NestJS/MongoDB/PostgreSQL/Flutter
5 นายชาคริต ขำธานี System Architect 5 ปี, System design + coordination
6 นายเจษฎา สุขพืชกิจ Project Coordinator 13 ปี, MCSA/MCSE, Hypervisor/Backup/Big Data

Architecture Principles จากประสบการณ์ทีม

  • Domain-Driven Design (DDD) — Bounded Contexts, Ubiquitous Language
  • Layered Architecture — 6 layers: Presentation, Application, Domain, Data, Integration, Infrastructure
  • Modular Design — Independent functional modules
  • Multi-Tenancy — Tenant ID isolation, Shared/Separate Schema options
  • RBAC — Role-Based Access Control across all systems

ผลการฝึกอบรม

รอบ วันที่ ระบบ ผู้เข้าร่วม คะแนนเฉลี่ย ระดับ
1 10 พ.ย. 2568 IT Staff (ทุกระบบ) 12 4.5/5 พึงพอใจมาก
2 เช้า 11 พ.ย. 2568 Anti-Torture System 18 4.5/5 พึงพอใจมาก
2 บ่าย 11 พ.ย. 2568 Complaint Management 18 3.5/5 ปานกลาง
3 เช้า 12 พ.ย. 2568 Dispute Mediation 15 3.4/5 ปานกลาง
3 บ่าย 12 พ.ย. 2568 Witness Protection 17 4.3/5 พึงพอใจมาก

Witness Protection ได้คะแนนพึงพอใจสูง (4.3/5) สอดคล้องกับข้อมูลว่าเป็นระบบที่พัฒนาเสร็จเร็วที่สุดใน Phase 1


รายการค้างส่ง / เลื่อนไป MA Period

# ระบบ รายการ ผลกระทบ
1 Complaint Management ปรับปรุง flow เจ้าของสำนวนทั้งหมด โครงสร้างเปลี่ยนมาก
2 Witness Protection ปรับปรุง flow การขอเบิกค่าดำรงชีพ โครงสร้างเปลี่ยนมาก
3 Anti-Torture System (1) เพิ่มระบบติดตามเวลา (2) เพิ่มขั้นตอนอุทธรณ์ โครงสร้างเปลี่ยนมาก

⚠ รายการเหล่านี้เลื่อนจาก Phase 1 เข้าสู่ช่วง MA — ต้องตรวจสอบว่าทำเสร็จหรือยัง ก่อนเริ่ม Phase 2


ข้อค้นพบที่ไม่พบใน Phase 1

รายการ สถานะ
VA Scan / Penetration Test ไม่พบหลักฐานว่าทำ (แม้ TOR 7.19 กำหนดไว้)
OWASP Top 10 Assessment ไม่พบผลลัพธ์
Source Code Repository ไม่ระบุว่าใช้ Git ที่ไหน
CI/CD Pipeline ไม่มีเอกสาร
Monitoring/Alerting ไม่มีเอกสาร

ความเชื่อมโยง Phase 1 → Phase 2

TOR Number Mapping

Phase 1 และ Phase 2 ใช้ TOR คนละฉบับ มี numbering ต่างกัน:

ระบบ Phase 1 TOR Phase 2 TOR Phase 2 ID
ให้คำปรึกษากฎหมาย 7.11 S1 (ใหม่)
PJOS ยุติธรรมเชิงรุก 7.12 S2 (ใหม่)
รายงานผล/หลักสูตร 7.13 S3 (ใหม่)
ไกล่เกลี่ยข้อพิพาท 7.14 7.14 S4 (ปรับปรุง)
ค่าตอบแทนทนายความ 134/1 7.15 S5 (ปรับปรุง)
OCIPA เยียวยาผู้เสียหาย 7.16 S6 (ปรับปรุง)
คุ้มครองพยาน 7.13 7.17 S7 (ปรับปรุง)
เว็บไซต์กรมฯ 7.18 S8 (ปรับปรุง)
Web Portal 7.9 7.19 S9 (ปรับปรุง)
Service Center 7.10 (Phase 1 only)
Complaint Management 7.11 (Phase 1 only)
Anti-Torture Act 7.12 (Phase 1 only)
e-Learning 7.15 (Phase 1 only)
AD / SSO (Keycloak) 7.20–7.21 (Phase 1 only)

ระบบที่ Phase 2 ต้องต่อยอดจาก Phase 1

ระบบ Phase 2 ต้องต่อยอดจาก หมายเหตุ
S4 Mediation Phase 1 Dispute Mediation (PHP/Vue/Node) ปรับปรุง — มี 2 เวอร์ชัน (v1 ปี 2563 + v2 ปี 2565 + Phase 1)
S7 Witness Protection Phase 1 Witness Protection (ASP.NET Core 9.0) ปรับปรุง — มี flow ค้างจาก MA
S9 Web Portal Phase 1 Web Portal (React.js) ปรับปรุง — เป็นจุดเข้าถึงรวมทุกระบบ

Tech Stack Conflict: Phase 1 vs Current Production (S8)

⚠ ข้อค้นพบสำคัญ: Phase 1 ใช้ stack ที่แตกต่างอย่างสิ้นเชิงจากระบบ S8 ที่กำลังรันอยู่บน Production

Component Phase 1 (ระบบใหม่) S8 Production (ระบบเดิม)
Frontend React.js + Tailwind + AntD ASP.NET Core (Razor/MVC)
Backend Node.js + Express.js .NET 4.0 / .NET Core 3.1
Deployment Docker on Ubuntu Linux IIS on Windows Server 2016
File Storage MinIO (S3) File system (E:\WebSite)
Reverse Proxy Nginx IIS bindings
SSO Keycloak (OIDC) ไม่มี (login แยกแต่ละระบบ)
Server 10.136.27.124 (UAT) 10.136.27.57 (WEBFRONT)

Phase 2 ต้องตัดสินใจ: migrate S8 เข้าสู่ stack ใหม่ หรือ พัฒนาระบบใหม่บน stack เก่า?


WCAG Compliance Summary

ระดับ ระบบที่ผ่าน ทดสอบโดย
WCAG 2.1 Level AA Web Portal, Service Center, Complaint Mgmt, Anti-Torture Self-assessment
WCAG 2.2 Level AA e-Learning NSTDA (สวทช.)
WCAG 2.2 Level AAA มี Recommendations สำหรับ Phase 2

Recommendations สำหรับ WCAG 2.2 AAA (จากเอกสาร Phase 1)

  1. Perceivable: Contrast ratio ≥ 7:1, Audio description + captions ทุกสื่อ
  2. Operable: Keyboard navigation 100%, Focus indicator ชัดเจน, ปุ่มขนาดเหมาะสม, ปรับเวลาสอบได้
  3. Understandable: ภาษาเรียบง่าย, คำแนะนำก่อนกรอกแบบฟอร์ม, ยืนยันก่อนส่ง
  4. Robust: HTML/ARIA compliant, Status message สำหรับ assistive tech
  5. Management: สร้าง Accessible Design Guide, ฝึกอบรมนักพัฒนา, ทดสอบกับผู้พิการจริง

อ้างอิงไฟล์ต้นฉบับ

งวด 1

  • 01 เอกสารแผนการดำเนินงานงวดงานที่ 1 (1) Ver1.2.pdf
  • 02 เอกสารสรุปรวบรวมความต้องการ_งวดที่ 1 V1.0.0.pdf
  • 03 รายชื่อบุคลากร รายละเอียดเกี่ยวกับผลงาน.pdf
  • 04 เอกสารการจัดหาซอฟต์แวร์หรือระบบ ตามรายก.pdf

งวด 2

  • (1) รายงานผลการติดตั้งซอฟต์แวร์หรือระบบตา.pdf
  • (2) รายงานการออกแบบภาพรวม (Conceptual Design).pdf
  • (3) รายงานรายละเอียดฟังก์ชัน (Functional Design).pdf
  • (4) รายงานรายละเอียด (Detail Design) การพัฒนาและปรับปรุงระบบ.pdf

งวด 3

  • 01-เอกสารผังการติดตั้งระบบ.pdf08-5-เอกสารคู่มือใช้งานระบบคุ้มครองพยานในคดีอาญา.pdf (12 ไฟล์)

งวด 4

  • รายงานผลการดำเนินการการปรับปรุงระบบ และก.pdf
  • รายชื่อผู้เข้าร่วมฝึกอบรมการใช้งานระบบ แ(1).pdf
  • เอกสารสรุปรายงานผลการดำเนินการที่เกี่ยว 2.pdf