# LCBP3-DMS — Task Breakdown สำหรับ Phase 2A–2C (v1.4.2) เอกสารนี้เป็นรายละเอียด Task Breakdown เชิงลึกของ Phase 2A, 2B, 2C ที่ถูกแยกออกตามสถาปัตยกรรม v1.4.2 โครงสร้างประกอบด้วย: * Objectives * Deliverables * Task Breakdown (ละเอียดเป็นลำดับงาน) * Developer Checklist * Test Coverage * Dependencies & Risks --- # 🟦 Phase 2A — Security Layer **Objective:** วาง Security Foundation ให้ระบบทั้งหมดใช้ร่วมกัน: Validation Pipeline, Security Headers, Rate Limiting, Request Guards ## ✔ Deliverables * Global ValidationPipe * Sanitization Layer * Rate Limit Rules (anonymous/authenticated) * Security Headers (Helmet) * XSS / SQL Injection safeguards * Security Tests ## 🛠 Task Breakdown ### 2A.1 Validation Pipeline * ตั้งค่า Global ValidationPipe * เปิด whitelist, forbidNonWhitelisted * เพิ่ม custom exception mapping → ErrorModel * เชื่อม RequestIdInterceptor ### 2A.2 Input Sanitization Layer * ติดตั้ง sanitize-html หรือ DOMPurify server-side * เพิ่ม sanitization middleware สำหรับ: * query params * body JSON * form inputs * เพิ่ม unit test: sanitized input → safe output ### 2A.3 Security Headers (Helmet) * เปิดใช้งาน Helmet ทั้งระบบ * ปรับ policy: `contentSecurityPolicy`, `xssFilter`, `noSniff` * เพิ่ม config per environment ### 2A.4 Rate Limiting * Rate limit แบบ 2 ชั้น: * anonymous (เช่น 30 req/min) * authenticated (100 req/min) * สร้าง Redis key pattern: `ratelimit:{ip}` * สร้าง RateLimitGuard + decorator * ทดสอบ burst traffic (locust หรือ autocannon) ### 2A.5 SQL Injection / XSS Protection * เปิด TypeORM parameterized queries * Sanitizer ตรวจจับ script tags * เขียน test ที่ inject payload จำลอง ### 2A.6 Logging + Error Model Integration * ผูก SecurityException → Error Model * เพิ่ม request_id logging ## ✔ Developer Checklist (Phase 2A) * [ ] ทุก controller มี ValidationPipe ครอบ * [ ] Sanitization ทำงานในทุก input source * [ ] Error ทั้งหมดออกตาม Error Model กลาง * [ ] RateLimitGuard ทำงานผ่าน Redis * [ ] มี security test อย่างน้อย 10 ชุด ## ✔ Test Coverage (Phase 2A) * Input injection tests * Rate limit tests * Validation rejects undefined fields * ErrorModel mapping --- # 🟪 Phase 2B — JSON Schema System **Objective:** จัดการ JSON Schema แบบ versioned, ตรวจสอบ payload, บังคับใช้ format ก่อนเก็บ DB ## ✔ Deliverables * Schema Registry * Schema Versioning * Schema Validation Service * Compatibility Rules * Schema Migration Tests ## 🛠 Task Breakdown ### 2B.1 Schema Registry * Entity: `json_schemas`, `json_schema_versions` * Endpoint: `POST /json-schemas` * ฟิลด์สำคัญ: schema_id, version, schema_json * สร้าง SchemaStore class ### 2B.2 Schema Versioning * Version rule: semantic versioning (major.minor.patch) * Migration notes per version * นโยบาย: Breaking change → major bump * API: `GET /json-schemas/:id?version=` ### 2B.3 Schema Validation Service * ใช้ AJV หรือ Fastest-Validator * preload schema เมื่อ boot server * mapping validation error → Error Model * เพิ่ม test: invalid schema / missing fields / wrong types ### 2B.4 Compatibility Rules * ตรวจสอบ backward compatibility: * field removal → major version * enum shrink → major version * เพิ่ม script ตรวจ schema diff ### 2B.5 Schema Migration Tests * ทดสอบ schema upgrade (v1 → v2) * ทดสอบ payload ที่ใช้ version เก่า ## ✔ Developer Checklist (Phase 2B) * [ ] ทุก JSON field อ้างอิง schema version * [ ] ทุก schema ผ่าน validation * [ ] Schema diff pass * [ ] Schema test ครอบครบทุก field ## ✔ Test Coverage (Phase 2B) * Schema version switch tests * Incompatible payload rejection * Schema registry CRUD --- # 🟧 Phase 2C — JSON Processing **Objective:** จัดการ JSON payload: sanitization, compression, encryption, size limits ## ✔ Deliverables * JSON size validator * JSON sanitizer * JSON compressor (gzip/deflate) * Sensitive fields encryption * JSON transformation layer ## 🛠 Task Breakdown ### 2C.1 JSON Size Controls * ตั้ง global limit (เช่น 2MB ต่อฟิลด์) * เพิ่ม JSONSizeGuard * เขียน test: oversize JSON → error_code: `JSON.TOO_LARGE` ### 2C.2 JSON Sanitization (ลึกกว่า Phase 2A) * ล้าง nested fields * ล้าง `