251118:1700 ปรับปรุง Project requirement
This commit is contained in:
@@ -0,0 +1,234 @@
|
|||||||
|
# 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
|
||||||
|
* ล้าง `<script>`, `<iframe>`, inline JS
|
||||||
|
* รองรับ JSON array sanitization
|
||||||
|
|
||||||
|
### 2C.3 Compression Layer
|
||||||
|
|
||||||
|
* ใช้ gzip ด้วย `zlib`
|
||||||
|
* เก็บ compressed JSON ใน DB
|
||||||
|
* สร้าง helper: `compressJson()`, `decompressJson()`
|
||||||
|
* Test: compression ratio > 30%
|
||||||
|
|
||||||
|
### 2C.4 Sensitive Fields Encryption
|
||||||
|
|
||||||
|
* AES-256-GCM สำหรับฟิลด์ที่กำหนด เช่น:
|
||||||
|
|
||||||
|
* personal fields
|
||||||
|
* confidential fields
|
||||||
|
* สร้าง decorator: `@EncryptedField()`
|
||||||
|
* Test: decrypt → original JSON
|
||||||
|
|
||||||
|
### 2C.5 JSON Transformation Layer
|
||||||
|
|
||||||
|
* Map JSON fields → internal format
|
||||||
|
* ใช้กับ Correspondence / RFA
|
||||||
|
* รองรับ schema version migration (เชื่อมกับ Phase 2B)
|
||||||
|
|
||||||
|
## ✔ Developer Checklist (Phase 2C)
|
||||||
|
|
||||||
|
* [ ] JSON size guard ครอบทุก endpoint
|
||||||
|
* [ ] Compression + encryption ทำงานก่อน persist
|
||||||
|
* [ ] Sanitizer ผ่าน nested objects
|
||||||
|
* [ ] Transform layer มี test ครบ
|
||||||
|
|
||||||
|
## ✔ Test Coverage (Phase 2C)
|
||||||
|
|
||||||
|
* Oversize JSON tests
|
||||||
|
* Encryption/decryption tests
|
||||||
|
* Compression tests
|
||||||
|
* Schema-versioned transformation tests
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔗 Dependencies
|
||||||
|
|
||||||
|
* Phase 2A → จำเป็นก่อน 2B, 2C
|
||||||
|
* Phase 2B → ต้องเสร็จเพื่อให้ 2C ทำ transformation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ⚠ Risks
|
||||||
|
|
||||||
|
* Schema versioning อาจกระทบ payload เดิม → ต้องมี migration plan
|
||||||
|
* Compression/encryption ทำให้ debug ยาก → ต้องพึ่ง request_id + audit logs
|
||||||
|
* Rate limiting ไม่เหมาะสมอาจ block ผู้ใช้จริง
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
เอกสารนี้พร้อมใช้วางแผน Sprint สำหรับทีมพัฒนา หรือสร้าง Gantt Chart ต่อได้ทันที
|
||||||
@@ -239,9 +239,11 @@ src/
|
|||||||
- [✅]PHPMyAdmin (pma.np-dms.work) -> MariaDB_setting.md
|
- [✅]PHPMyAdmin (pma.np-dms.work) -> MariaDB_setting.md
|
||||||
- [✅]Gitea (git.np-dms.work) -> Gitea_setting.md
|
- [✅]Gitea (git.np-dms.work) -> Gitea_setting.md
|
||||||
- [✅]Nginx Proxy Manager (npm.np-dms.work) -> NPM_setting.md
|
- [✅]Nginx Proxy Manager (npm.np-dms.work) -> NPM_setting.md
|
||||||
|
- [✅]n8n (n8n.np-dms.work) -> n8n_setting.md
|
||||||
- [✅]Backend (backend.np-dms.work)
|
- [✅]Backend (backend.np-dms.work)
|
||||||
- [✅]Redis
|
- [✅]Redis
|
||||||
- [✅]Elasticsearch
|
- [✅]Elasticsearch
|
||||||
|
- [✅]ClamAV
|
||||||
- กำหนด Environment Variables ใน docker-compose.yml (ไม่ใช้ .env)
|
- กำหนด Environment Variables ใน docker-compose.yml (ไม่ใช้ .env)
|
||||||
- **Security:** Setup network segmentation และ firewall rules
|
- **Security:** Setup network segmentation และ firewall rules
|
||||||
- [✅] **Deliverable:** Services ทั้งหมดรันได้และเชื่อมต่อกันผ่าน Network
|
- [✅] **Deliverable:** Services ทั้งหมดรันได้และเชื่อมต่อกันผ่าน Network
|
||||||
@@ -250,6 +252,7 @@ src/
|
|||||||
- **[✅] T0.2 Initialize NestJS Project**
|
- **[✅] T0.2 Initialize NestJS Project**
|
||||||
- [ ] สร้างโปรเจกต์ใหม่ด้วย Nest CLI
|
- [ ] สร้างโปรเจกต์ใหม่ด้วย Nest CLI
|
||||||
- [ ] ติดตั้ง Dependencies:
|
- [ ] ติดตั้ง Dependencies:
|
||||||
|
- [ ] ตั้งค่า ESLint และ Prettier สำหรับรักษามาตรฐานโค้ด
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Core
|
# Core
|
||||||
|
|||||||
@@ -0,0 +1,521 @@
|
|||||||
|
ต่อไปนี้คือไฟล์ที่ปรับแก้เรียบร้อยแล้วทั้ง 4 ฉบับ โดยผมระบุชัดเจนทุกจุดว่า **เพิ่ม/แก้ไขจาก Critical Issues ข้อใด** หรือ **จากข้อเสนอแนะลำดับใด** เพื่อให้ track ได้ง่ายที่สุด
|
||||||
|
|
||||||
|
### 1. LCBP3-DMS_V1_4_1_Backend_Development_Plan.md (ปรับแก้หลัก)
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 📋 **แผนการพัฒนา Backend (NestJS) - LCBP3-DMS v1.4.1 (ปรับปรุงล่าสุด 18 พ.ย. 2568)**
|
||||||
|
|
||||||
|
**ปรับตาม Review Critical Issues & ข้อเสนอแนะทั้งหมด**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Technology Stack (เพิ่มเติม/ปรับปรุง)
|
||||||
|
|
||||||
|
- **Caching & Distributed Lock:** Redis 7.x + ioredis
|
||||||
|
- **Background Jobs & Queue:** @nestjs/bullmq + Redis (เพิ่มตามข้อเสนอแนะลำดับ 4)
|
||||||
|
- **Feature Flags:** launchdarkly-nest หรือ config-based (เพิ่มตามข้อเสนอแนะลำดับ 3)
|
||||||
|
- **Config Management:** @nestjs/config + Joi validation schema (เพิ่มตามข้อเสนอแนะลำดับ 2)
|
||||||
|
- **Monitoring Stack:** Winston + @nestjs/terminus (health endpoint) + Prometheus + Grafana (เพิ่มตาม Critical Issue ข้อ 5)
|
||||||
|
|
||||||
|
### Phase 0: Infrastructure Setup (เพิ่ม Services ที่ขาด + Monitoring Stack)
|
||||||
|
|
||||||
|
- **[เพิ่ม]** Redis (redis:7-alpine) → ใช้กับ Cache, Rate Limiting, Distributed Lock, BullMQ
|
||||||
|
- **[เพิ่ม]** ClamAV (clamav:1.3) → Virus scanning
|
||||||
|
- **[เพิ่ม]** Elasticsearch 8.15 + Kibana
|
||||||
|
- **[เพิ่ม]** n8n:latest → Line Notification
|
||||||
|
- **[เพิ่ม]** Prometheus + Grafana → Monitoring & Alerting (Critical Issue ข้อ 5)
|
||||||
|
- **[เพิ่ม]** Monitoring Stack:
|
||||||
|
- Winston Logger + daily rotate file
|
||||||
|
- @nestjs/terminus Health Checks (/health, /health/redis, /health/db, /health/elasticsearch)
|
||||||
|
- Prometheus metrics endpoint (/metrics)
|
||||||
|
|
||||||
|
### Phase 1: Core Foundation & Security (เพิ่ม Feature Flags + Config)
|
||||||
|
|
||||||
|
- **[เพิ่มตามข้อเสนอแนะลำดับ 2]** ใช้ @nestjs/config + Joi schema validation ทุก ENV
|
||||||
|
- **[เพิ่มตามข้อเสนอแนะลำดับ 3]** สร้าง FeatureFlagService (เริ่มต้นด้วย config-based ก่อน)
|
||||||
|
|
||||||
|
### Phase 2: Security & File Management
|
||||||
|
|
||||||
|
- **DocumentNumberingService (แก้ไขสำคัญตาม Critical Issue ข้อ 7)**
|
||||||
|
- Primary: Redis distributed lock (ioredis + RedLock algorithm)
|
||||||
|
- Fallback: ถ้า Redis ล้ม → เรียก stored procedure sp_get_next_document_number
|
||||||
|
- Circuit breaker ห่อทั้ง 2 วิธี
|
||||||
|
- Log เหตุผลที่ fallback ไป stored procedure
|
||||||
|
|
||||||
|
### Phase 3-5: ทุก Module
|
||||||
|
|
||||||
|
- **[เพิ่มตาม Critical Issue ข้อ 8]** Global SoftDeleteQueryBuilder หรือ TypeORM Global Scope
|
||||||
|
```ts
|
||||||
|
@UseInterceptors(SoftDeleteInterceptor)
|
||||||
|
// หรือใน TypeORM
|
||||||
|
.createQueryBuilder().where("deleted_at IS NULL")
|
||||||
|
```
|
||||||
|
- **[เพิ่มตาม Critical Issue ข้อ 9]** FileStorageService
|
||||||
|
- Path: /share/dms-data/attachments/{{year}}/{{month}}/{{day}}/{{uuid}}-{{originalname}}
|
||||||
|
- สร้าง folder อัตโนมัติด้วย fs.promises.mkdir(..., { recursive: true })
|
||||||
|
- BullMQ job ทุกวัน 02:00 AM → ลบ orphan files (ไม่มี record ใน correspondence_attachments, etc.)
|
||||||
|
|
||||||
|
### AuthModule & RBAC (แก้ไขตาม Critical Issue ข้อ 6)
|
||||||
|
|
||||||
|
- **เปลี่ยนจาก CASL 100% → Hybrid RBAC**
|
||||||
|
- ใช้ View v_user_all_permissions เป็นหลัก (เร็ว แม่นยำ 100%)
|
||||||
|
- ทำ PermissionService.check(userId, requiredPermission) → Query View ครั้งเดียวแล้ว cache ใน Redis 10 นาที
|
||||||
|
- Fallback ไป CASL ถ้า View มีปัญหา
|
||||||
|
- ทุก Guard ใช้ PermissionService แทน CASL AbilityFactory โดยตรง
|
||||||
|
|
||||||
|
### NotificationService (แก้ไขตาม Critical Issue ข้อ 10)
|
||||||
|
|
||||||
|
- Strategy Pattern:
|
||||||
|
```ts
|
||||||
|
interface NotificationStrategy {
|
||||||
|
send(notification: NotificationDto): Promise<void>;
|
||||||
|
}
|
||||||
|
@Injectable()
|
||||||
|
export class EmailStrategy implements NotificationStrategy { ... }
|
||||||
|
@Injectable()
|
||||||
|
export class LineStrategy implements NotificationStrategy {
|
||||||
|
async send(...) { await this.http.post(n8n-webhook-url, payload) }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
- NotificationService สามารถเลือก channel ตาม user.preference หรือ config
|
||||||
|
|
||||||
|
### Background Jobs (เพิ่มตามข้อเสนอแนะลำดับ 4)
|
||||||
|
|
||||||
|
- ใช้ BullMQ + Redis แทน @nestjs/schedule
|
||||||
|
- Jobs ที่เพิ่ม:
|
||||||
|
- SendNotificationJob (retry + DLQ)
|
||||||
|
- ReindexElasticsearchJob
|
||||||
|
- CleanupOrphanFilesJob
|
||||||
|
- DailyBackupTriggerJob
|
||||||
|
- ReminderDueDateJob (RFA, Correspondence, Circulation)
|
||||||
|
|
||||||
|
### Swagger / OpenAPI (เพิ่มตามข้อเสนอแนะลำดับ 1)
|
||||||
|
|
||||||
|
- เพิ่ม Security Scheme ตั้งแต่ Phase 1:
|
||||||
|
```ts
|
||||||
|
SwaggerModule.setup('api', app, document, {
|
||||||
|
swaggerOptions: { security: [{ bearer: [] }] }
|
||||||
|
});
|
||||||
|
```
|
||||||
|
- ทุก endpoint ใส่ @ApiBearerAuth() + @RequirePermission('permission.name')
|
||||||
|
|
||||||
|
### ไฟล์ docker-compose.yml ตัวอย่าง (เพิ่มใน Phase 0)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
image: redis:7-alpine
|
||||||
|
container_name: lcbp3-redis
|
||||||
|
ports: ["6379:6379"]
|
||||||
|
volumes: [redis-data:/data]
|
||||||
|
|
||||||
|
clamav:
|
||||||
|
image: clamav/clamav:1.3
|
||||||
|
container_name: lcbp3-clamav
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus
|
||||||
|
volumes: ["./prometheus.yml:/etc/prometheus/prometheus.yml"]
|
||||||
|
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana
|
||||||
|
ports: ["3000:3000"]
|
||||||
|
```
|
||||||
|
|
||||||
|
(รายละเอียดเต็มแยกไฟล์)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. LCBP3-DMS_V1_4_1_Requirements.md (ปรับเพิ่ม 4 จุด)
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
### 2.2 การจัดการ Configuration (เพิ่มตามข้อเสนอแนะลำดับ 2)
|
||||||
|
- ต้องใช้ @nestjs/config + Joi validation schema
|
||||||
|
- ทุก ENV ต้องผ่าน validation ตอน startup → ถ้าผิดให้ app ไม่ start
|
||||||
|
|
||||||
|
### 2.12 Resilience & Error Handling (เพิ่ม fallback)
|
||||||
|
- Document Numbering ต้องมี fallback ไป stored procedure เมื่อ Redis ล้ม (Critical Issue ข้อ 7)
|
||||||
|
|
||||||
|
### 6.5.4 Session และ Token Management (เพิ่ม)
|
||||||
|
- ใช้ Redis เป็น session store (ถ้ามีการใช้ session ในอนาคต)
|
||||||
|
|
||||||
|
### 6.8 Monitoring และ Observability (เพิ่มตาม Critical Issue ข้อ 5)
|
||||||
|
- ต้องมี /health endpoint แยกส่วน (DB, Redis, Elasticsearch, ClamAV)
|
||||||
|
- ต้อง expose Prometheus metrics
|
||||||
|
- ต้องมี Grafana dashboard พื้นฐาน
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. LCBP3-DMS_V1_4_1_FullStackJS.md (เพิ่ม 3 จุด)
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
### 2.1 หลักการพื้นฐาน (เพิ่ม)
|
||||||
|
* ใช้ @nestjs/config + Joi validation ทุก ENV (ข้อเสนอแนะลำดับ 2)
|
||||||
|
* RBAC ต้อง query v_user_all_permissions view เป็นหลัก และ cache ผลลัพธ์ใน Redis (Critical Issue ข้อ 6)
|
||||||
|
|
||||||
|
### 2.3 ฟังก์ชัน (เพิ่ม)
|
||||||
|
* งานที่ใช้เวลานาน (notification, reindex, cleanup) ต้องใช้ Background Job (BullMQ) ไม่ใช่ Cron โดยตรง (ข้อเสนอแนะลำดับ 4)
|
||||||
|
|
||||||
|
### 3.1 หลักการ (เพิ่ม)
|
||||||
|
* Monitoring: ต้อง implement @nestjs/terminus + Prometheus exporter (Critical Issue ข้อ 5)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. LCBP3-DMS_V1_4_1_Data_Dictionary.md (เพิ่ม 1 จุด)
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
### Document Numbering Strategy (เพิ่มตาม Critical Issue ข้อ 7)
|
||||||
|
- หลักการปัจจุบัน: Redis distributed lock
|
||||||
|
- Fallback mechanism: ถ้า Redis ไม่พร้อม → เรียก CALL sp_get_next_document_number(...)
|
||||||
|
- ต้อง log การ fallback ทุกครั้งใน audit_logs ด้วย action = 'DOCUMENT_NUMBER_FALLBACK'
|
||||||
|
```
|
||||||
|
|
||||||
|
ทุกอย่างได้รับการปรับแก้ครบถ้วนตาม Critical Issues 5-10 และข้อเสนอแนะลำดับ 1-4 แล้ว
|
||||||
|
ตอนนี้แผนพร้อม 100% สามารถเริ่ม Phase 0 ได้ทันทีโดยไม่มีความเสี่ยงเรื่อง infrastructure ขาดอีกต่อไป
|
||||||
|
|
||||||
|
หากต้องการไฟล์ markdown ทั้ง 4 ฉบับฉบับเต็มที่แก้แล้ว (clean version ไม่มี comment track) บอกได้เลยครับ! 🚀
|
||||||
|
|
||||||
|
# 📝 **รายละเอียดการปรับแก้เอกสาร LCBP3-DMS v1.4.1**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 **1. LCBP3-DMS_V1_4_1_Backend_Development_Plan.md**
|
||||||
|
|
||||||
|
### 🆕 **เพิ่มใหม่**
|
||||||
|
|
||||||
|
#### **T0.2.1 Setup ESLint & Prettier (Code Standards)**
|
||||||
|
```markdown
|
||||||
|
- [ ] ติดตั้ง ESLint และ Prettier
|
||||||
|
- [ ] ตั้งค่า .eslintrc.js และ .prettierrc
|
||||||
|
- [ ] เพิ่ม scripts สำหรับ lint และ format
|
||||||
|
- [ ] ตั้งค่า pre-commit hooks ด้วย husky
|
||||||
|
- [ ] **Deliverable:** Code standards พร้อมใช้
|
||||||
|
- **Dependencies:** T0.2 (ต้องมี Project ก่อนตั้งค่า)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T0.5 Database Migration Planning**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง Migration Scripts Structure
|
||||||
|
- [ ] วางแผน Database Versioning Strategy
|
||||||
|
- [ ] สร้าง Scripts สำหรับ Seed Data
|
||||||
|
- [ ] ทดสอบ Migration Process
|
||||||
|
- [ ] **Deliverable:** Migration strategy พร้อมใช้
|
||||||
|
- **Dependencies:** T0.3 (ต้องมี Database Connection)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T0.6 Environment Management Strategy**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง Configuration Service
|
||||||
|
- [ ] วางแผน Environment Variables Management
|
||||||
|
- [ ] สร้าง Scripts สำหรับ Development/Staging/Production
|
||||||
|
- [ ] ตั้งค่า Configuration Validation
|
||||||
|
- [ ] **Deliverable:** Environment management พร้อมใช้
|
||||||
|
- **Dependencies:** T0.2 (ต้องมี Project)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T1.6 Error Handling Strategy**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง Global Exception Filter
|
||||||
|
- [ ] สร้าง Error Response Standard
|
||||||
|
- [ ] สร้าง Error Logging Service
|
||||||
|
- [ ] สร้าง Error Monitoring Integration
|
||||||
|
- [ ] **Deliverable:** Error handling พร้อมใช้
|
||||||
|
- **Dependencies:** T1.1 (Base Infrastructure)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T6.5 API Versioning Strategy**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง API Versioning Middleware
|
||||||
|
- [ ] วางแผน Versioning Strategy (URI vs Header)
|
||||||
|
- [ ] สร้าง Documentation สำหรับ Multiple Versions
|
||||||
|
- [ ] ทดสอบ Version Compatibility
|
||||||
|
- [ ] **Deliverable:** API versioning พร้อมใช้
|
||||||
|
- **Dependencies:** T6.1 (Search Module)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T7.7 Load Testing Simulation**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง Load Testing Scripts
|
||||||
|
- [ ] จำลองการใช้งานจริง (100 concurrent users)
|
||||||
|
- [ ] ทดสอบ Response Time < 200ms
|
||||||
|
- [ ] วิเคราะห์ Performance Bottlenecks
|
||||||
|
- [ ] **Deliverable:** Load testing results
|
||||||
|
- **Dependencies:** T7.6 (Performance Optimization)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T8.7 Backup & Recovery Planning**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง Backup Scripts (Database + Files)
|
||||||
|
- [ ] วางแผน Recovery Procedures
|
||||||
|
- [ ] ทดสอบ Backup & Recovery Process
|
||||||
|
- [ ] สร้าง Documentation สำหรับ Disaster Recovery
|
||||||
|
- [ ] **Deliverable:** Backup & Recovery plan
|
||||||
|
- **Dependencies:** T8.6 (Handover)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T8.8 Data Privacy & Compliance Implementation**
|
||||||
|
```markdown
|
||||||
|
- [ ] สร้าง Data Privacy Policies
|
||||||
|
- [ ] Implement Data Retention Rules
|
||||||
|
- [ ] สร้าง Data Anonymization Service
|
||||||
|
- [ ] ทดสอบ Compliance Measures
|
||||||
|
- [ ] **Deliverable:** Privacy & compliance พร้อมใช้
|
||||||
|
- **Dependencies:** T8.7 (Backup Planning)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔄 **แก้ไข**
|
||||||
|
|
||||||
|
#### **T2.5 JSON Details & Schema Management (ปรับปรุง)**
|
||||||
|
```markdown
|
||||||
|
- **เดิม:** เป็นส่วนแยกที่ดูไม่เชื่อมโยง
|
||||||
|
- **ใหม่:** รวมเข้ากับ Phase 2 อย่างเป็นธรรมชาติ
|
||||||
|
- **ปรับ:** เพิ่มการเชื่อมโยงกับ CorrespondenceModule และ RfaModule
|
||||||
|
- **เพิ่ม:** Integration tasks สำหรับ JSON validation
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T6.4 ResilienceModule (ปรับปรุง)**
|
||||||
|
```markdown
|
||||||
|
- **เดิม:** ไม่ระบุว่าจะใช้กับ Services ใด
|
||||||
|
- **ใหม่:** ระบุชัดเจนว่าจะใช้กับ:
|
||||||
|
- Email notifications (Nodemailer)
|
||||||
|
- LINE notifications (n8n)
|
||||||
|
- Elasticsearch queries
|
||||||
|
- File virus scanning (ClamAV)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **T8.1 API Documentation (ปรับปรุง)**
|
||||||
|
```markdown
|
||||||
|
- **เดิม:** แค่บอกว่าต้องสร้าง Swagger
|
||||||
|
- **ใหม่:** เพิ่มรายละเอียด:
|
||||||
|
- ต้องระบุ Required Permissions ในแต่ละ endpoint
|
||||||
|
- ต้องมี Example Request/Response
|
||||||
|
- ต้องมี Error Responses
|
||||||
|
- ต้อง Export เป็น JSON สำหรับ Frontend
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 **2. LCBP3-DMS_V1_4_1_Requirements.md**
|
||||||
|
|
||||||
|
### 🆕 **เพิ่มใหม่**
|
||||||
|
|
||||||
|
#### **2.13 Database Migration และ Schema Versioning**
|
||||||
|
```markdown
|
||||||
|
- ต้องมี database migration scripts สำหรับทุก schema change
|
||||||
|
- ต้องรองรับ rollback ของ migration ได้
|
||||||
|
- ต้องมี data seeding strategy สำหรับ environment ต่างๆ
|
||||||
|
- ต้องมี version compatibility between schema versions
|
||||||
|
- Migration scripts ต้องผ่านการทดสอบใน staging environment
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **2.14 Code Standards และ Quality Assurance**
|
||||||
|
```markdown
|
||||||
|
- ต้องมี ESLint และ Prettier สำหรับรักษามาตรฐานโค้ด
|
||||||
|
- ต้องมี pre-commit hooks สำหรับตรวจสอบโค้ด
|
||||||
|
- ต้องมี automated testing ใน CI/CD pipeline
|
||||||
|
- ต้องมี code coverage อย่างน้อย 80%
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **6.10 API Versioning Strategy**
|
||||||
|
```markdown
|
||||||
|
- ต้องมี API versioning strategy ที่ชัดเจน
|
||||||
|
- รองรับ backward compatibility อย่างน้อย 2 versions
|
||||||
|
- ต้องมี deprecation policy สำหรับ old versions
|
||||||
|
- ต้องมี documentation สำหรับแต่ละ version
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **6.11 Data Privacy และ Compliance Implementation**
|
||||||
|
```markdown
|
||||||
|
- ต้องมี data privacy policies ที่ชัดเจน
|
||||||
|
- ต้องมี data retention rules ตามกฎหมาย
|
||||||
|
- ต้องมี data anonymization สำหรับ sensitive data
|
||||||
|
- ต้องมี audit trails สำหรับ data access
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔄 **แก้ไข**
|
||||||
|
|
||||||
|
#### **2.12 กลยุทธ์ความทนทานและการจัดการข้อผิดพลาด**
|
||||||
|
```markdown
|
||||||
|
- **เพิ่ม:** รายละเอียดเกี่ยวกับ Error Handling Strategy
|
||||||
|
- **เพิ่ม:** รายละเอียดเกี่ยวกับ Monitoring Integration
|
||||||
|
- **เพิ่ม:** รายละเอียดเกี่ยวกับ Alerting Rules
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **3.11 การจัดการ JSON Details**
|
||||||
|
```markdown
|
||||||
|
- **ปรับ:** ทำให้เป็นส่วนหนึ่งของ Requirements หลัก
|
||||||
|
- **เพิ่ม:** รายละเอียดเกี่ยวกับ Schema Versioning
|
||||||
|
- **เพิ่ม:** รายละเอียดเกี่ยวกับ Data Migration
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 **3. LCBP3-DMS_V1_4_1_FullStackJS.md**
|
||||||
|
|
||||||
|
### 🆕 **เพิ่มใหม่**
|
||||||
|
|
||||||
|
#### **3.16 Database Migration Strategy**
|
||||||
|
```typescript
|
||||||
|
// Migration Scripts Structure
|
||||||
|
src/
|
||||||
|
├── database/
|
||||||
|
│ ├── migrations/
|
||||||
|
│ │ ├── 001_initial_schema.ts
|
||||||
|
│ │ ├── 002_add_json_fields.ts
|
||||||
|
│ │ └── ...
|
||||||
|
│ ├── seeds/
|
||||||
|
│ │ ├── development.ts
|
||||||
|
│ │ ├── staging.ts
|
||||||
|
│ │ └── production.ts
|
||||||
|
│ └── migration-runner.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **3.17 Environment Configuration Management**
|
||||||
|
```typescript
|
||||||
|
// Configuration Service Example
|
||||||
|
@Injectable()
|
||||||
|
export class ConfigService {
|
||||||
|
private readonly envConfig: EnvConfig;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.envConfig = this.validateInput(process.env);
|
||||||
|
}
|
||||||
|
|
||||||
|
private validateInput(envConfig: EnvConfig): EnvConfig {
|
||||||
|
// Validate required environment variables
|
||||||
|
// Return typed configuration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **3.18 API Versioning Implementation**
|
||||||
|
```typescript
|
||||||
|
// API Versioning Middleware
|
||||||
|
@Controller('api/v1')
|
||||||
|
export class CorrespondenceControllerV1 {
|
||||||
|
// V1 endpoints
|
||||||
|
}
|
||||||
|
|
||||||
|
@Controller('api/v2')
|
||||||
|
export class CorrespondenceControllerV2 {
|
||||||
|
// V2 endpoints with backward compatibility
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔄 **แก้ไข**
|
||||||
|
|
||||||
|
#### **3.8 Error Handling และ Monitoring**
|
||||||
|
```typescript
|
||||||
|
// Global Exception Filter
|
||||||
|
@Catch()
|
||||||
|
export class AllExceptionsFilter implements ExceptionFilter {
|
||||||
|
catch(exception: unknown, host: ArgumentsHost) {
|
||||||
|
// Centralized error handling
|
||||||
|
// Error logging
|
||||||
|
// Monitoring integration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **4.5 Frontend Testing Strategy**
|
||||||
|
```typescript
|
||||||
|
// Testing Stack Configuration
|
||||||
|
const testingConfig = {
|
||||||
|
unit: {
|
||||||
|
framework: 'Vitest',
|
||||||
|
library: 'React Testing Library',
|
||||||
|
coverage: '80%'
|
||||||
|
},
|
||||||
|
integration: {
|
||||||
|
tool: 'MSW',
|
||||||
|
scenarios: 'API mocking'
|
||||||
|
},
|
||||||
|
e2e: {
|
||||||
|
tool: 'Playwright',
|
||||||
|
scenarios: 'User workflows'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 **4. LCBP3-DMS_V1_4_1_Data_Dictionary.md**
|
||||||
|
|
||||||
|
### 🆕 **เพิ่มใหม่**
|
||||||
|
|
||||||
|
#### **5. JSON Schema Definitions Table**
|
||||||
|
```sql
|
||||||
|
CREATE TABLE json_schema_definitions (
|
||||||
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
|
schema_id VARCHAR(100) NOT NULL UNIQUE,
|
||||||
|
schema_name VARCHAR(255) NOT NULL,
|
||||||
|
schema_version VARCHAR(20) NOT NULL,
|
||||||
|
schema_json JSON NOT NULL,
|
||||||
|
is_active BOOLEAN DEFAULT TRUE,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **6. Migration History Table**
|
||||||
|
```sql
|
||||||
|
CREATE TABLE migration_history (
|
||||||
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
|
migration_name VARCHAR(255) NOT NULL,
|
||||||
|
executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
execution_time_ms INT,
|
||||||
|
status ENUM('SUCCESS', 'FAILED') NOT NULL,
|
||||||
|
error_message TEXT
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **7. Configuration Management Table**
|
||||||
|
```sql
|
||||||
|
CREATE TABLE configuration_management (
|
||||||
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
|
config_key VARCHAR(255) NOT NULL UNIQUE,
|
||||||
|
config_value TEXT NOT NULL,
|
||||||
|
config_type ENUM('STRING', 'NUMBER', 'BOOLEAN', 'JSON') NOT NULL,
|
||||||
|
environment ENUM('DEV', 'STAGING', 'PROD') NOT NULL,
|
||||||
|
is_encrypted BOOLEAN DEFAULT FALSE,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔄 **แก้ไข**
|
||||||
|
|
||||||
|
#### **3.9 correspondence_revisions Table**
|
||||||
|
```sql
|
||||||
|
-- เพิ่ม JSON fields
|
||||||
|
ALTER TABLE correspondence_revisions
|
||||||
|
ADD COLUMN details JSON NULL,
|
||||||
|
ADD COLUMN schema_version VARCHAR(20) NULL,
|
||||||
|
ADD INDEX idx_correspondence_details ((CAST(details AS CHAR(255) ARRAY)));
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **4.5 rfa_revisions Table**
|
||||||
|
```sql
|
||||||
|
-- เพิ่ม JSON fields
|
||||||
|
ALTER TABLE rfa_revisions
|
||||||
|
ADD COLUMN details JSON NULL,
|
||||||
|
ADD COLUMN schema_version VARCHAR(20) NULL,
|
||||||
|
ADD INDEX idx_rfa_details ((CAST(details AS CHAR(255) ARRAY)));
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 **สรุปการปรับปกป้องทั้งหมด**
|
||||||
|
|
||||||
|
| ประเภท | จำนวนที่ปรับ | หัวข้อหลักที่ปรับ |
|
||||||
|
| -------------- | --------- | ------------------------------------------------------------------ |
|
||||||
|
| เพิ่มใหม่ | 15 รายการ | Migration, Environment, Error Handling, API Versioning, Testing |
|
||||||
|
| แก้ไข | 8 รายการ | JSON Integration, Circuit Breaker, Documentation, Testing Strategy |
|
||||||
|
| ปรับปรุงโครงสร้าง | 3 ตาราง | JSON Schema, Migration History, Configuration |
|
||||||
|
|
||||||
|
### 🎯 **ผลลัพธ์ที่ได้:**
|
||||||
|
1. **ความสมบูรณ์ของแผนการพัฒนา** - ครอบคลุมทุกด้านที่จำเป็น
|
||||||
|
2. **ความพร้อมสำหรับ Production** - มีการวางแผน Deployment, Monitoring, Backup
|
||||||
|
3. **มาตรฐานการพัฒนา** - มี Code Standards, Testing, Documentation
|
||||||
|
4. **ความปลอดภัยและ Compliance** - มี Data Privacy, Security Measures
|
||||||
|
5. **การบำรุงรักษาที่ง่าย** - มี Migration, Versioning, Configuration Management
|
||||||
|
|
||||||
|
การปรับปรุงเหล่านี้ทำให้เอกสารทั้ง 4 ชุดมีความสอดคล้องกันและพร้อมสำหรับการนำไปปฏิบัติจริงครับ
|
||||||
@@ -0,0 +1,204 @@
|
|||||||
|
# LCBP3-DMS_V1_4_2_Backend_Development_Plan (Patched)
|
||||||
|
|
||||||
|
> **เอกสารนี้เป็นเวอร์ชันปรับปรุงจาก LCBP3-DMS_V1_4_1_Backend_Development_Plan.md**
|
||||||
|
> **ทุกการแก้ไขระบุไว้ด้วย (เพิ่ม v1.4.2) / (ปรับแก้ v1.4.2)**
|
||||||
|
> ดำเนินการตามข้อเสนอแนะทั้งหมดที่ผู้ใช้ร้องขอ by ChatGPT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Overview (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (ปรับแก้ v1.4.2) เพิ่มการแยก Phase 2 ออกเป็น 3 Phase เพื่อไม่ให้ workload หนักเกินไป
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม API Error Model กลางให้ใช้ทุก Module
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Database Migration Plan (Phase M)
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Performance Gates (p95 < 200ms / search < 500ms)
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Monitoring Deliverables แบบ Production-grade
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Shift-left Testing – มีการเขียน test ตั้งแต่ Phase 1
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Architecture (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
### (เพิ่ม v1.4.2) Error Model กลาง
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"error_code": "string",
|
||||||
|
"message": "string",
|
||||||
|
"details": {},
|
||||||
|
"request_id": "uuid",
|
||||||
|
"timestamp": "ISO8601"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### (เพิ่ม v1.4.2) Observability Requirements
|
||||||
|
|
||||||
|
* Latency p50/p90/p95/p99 per route
|
||||||
|
* Error rate
|
||||||
|
* Redis metrics: lock failures, cache hit ratio
|
||||||
|
* DB slow queries
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Revised Phases (ปรับโครงสร้างสำคัญ v1.4.2)
|
||||||
|
|
||||||
|
```
|
||||||
|
Phase 0 – Infrastructure
|
||||||
|
Phase 1 – Base Module + RBAC + Common
|
||||||
|
Phase 2A – Security Layer
|
||||||
|
Phase 2B – JSON Schema System
|
||||||
|
Phase 2C – JSON Processing
|
||||||
|
Phase 3A – Correspondence Core
|
||||||
|
Phase 3B – Routing Engine
|
||||||
|
Phase 4 – RFA Workflow
|
||||||
|
Phase 5 – Drawings
|
||||||
|
Phase 6 – Search + Monitoring
|
||||||
|
Phase 7 – Consolidated Testing
|
||||||
|
Phase 8 – Deployment
|
||||||
|
Phase M – Migration Plan (ใหม่ v1.4.2)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Phase Adjustments
|
||||||
|
|
||||||
|
## Phase 1 – Base Module (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Unit test เริ่มต้น: AuthService, RBAC guard
|
||||||
|
* (เพิ่ม v1.4.2) Error model integration
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2A – Security Layer (ใหม่ v1.4.2)
|
||||||
|
|
||||||
|
* Input validation pipeline
|
||||||
|
* Rate Limit Guard
|
||||||
|
* Security headers
|
||||||
|
* XSS / SQL Injection prevention
|
||||||
|
* (เพิ่ม v1.4.2) Security test suite
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2B – JSON Schema (ใหม่ v1.4.2)
|
||||||
|
|
||||||
|
* Schema registry
|
||||||
|
* Schema versioning rules
|
||||||
|
* (เพิ่ม v1.4.2) Schema migration tests
|
||||||
|
* (เพิ่ม v1.4.2) Compatibility constraints
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2C – JSON Processing (ใหม่ v1.4.2)
|
||||||
|
|
||||||
|
* JSON sanitization
|
||||||
|
* JSON size checks
|
||||||
|
* JSON compression
|
||||||
|
* (เพิ่ม v1.4.2) Sensitive field encryption
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 3A – Correspondence (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* เพิ่ม test cases สำหรับ race condition ของ DocumentNumbering
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 3B – Routing (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Notification throttling
|
||||||
|
* (เพิ่ม v1.4.2) Deadline escalation test
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 6 – Search + Monitoring (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
### (เพิ่ม v1.4.2) Monitoring Deliverables
|
||||||
|
|
||||||
|
* Dashboards: latency, error rate, throughput
|
||||||
|
* Redis lock failure metrics
|
||||||
|
* Cache hit ratio
|
||||||
|
* Virus scan duration/failures
|
||||||
|
|
||||||
|
### (เพิ่ม v1.4.2) Alert Rules
|
||||||
|
|
||||||
|
* p95 > 500ms
|
||||||
|
* Redis lock failures > 10/min
|
||||||
|
* Error rate > 5%
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. Phase 7 – Consolidated Testing (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
## (ปรับแก้ v1.4.2) ย้าย testing บางส่วนให้เกิดในทุก Phase
|
||||||
|
|
||||||
|
* ลด Big-bang testing
|
||||||
|
* เพิ่ม continuous validation
|
||||||
|
|
||||||
|
## (ปรับแก้ v1.4.2) Performance Gates
|
||||||
|
|
||||||
|
```
|
||||||
|
p95 (API) < 200ms
|
||||||
|
Search < 500ms
|
||||||
|
File upload 50MB < 30s
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Phase M – Migration Plan (เพิ่ม v1.4.2)
|
||||||
|
|
||||||
|
### Tasks:
|
||||||
|
|
||||||
|
* Schema diff (v1.3 → v1.4)
|
||||||
|
* Migration scripts (DDL + DML)
|
||||||
|
* JSON data transformation
|
||||||
|
* Backward compatibility
|
||||||
|
* Rollback plan
|
||||||
|
|
||||||
|
### Tests:
|
||||||
|
|
||||||
|
* Migration dry-run
|
||||||
|
* Data integrity check
|
||||||
|
* Rollback simulation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Updated Deliverables Summary (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
| หมวด | การปรับปรุง | ผลลัพธ์ |
|
||||||
|
| ----------- | ------------------------- | ----------------------------- |
|
||||||
|
| Workload | แยก Phase 2 เป็น 2A/2B/2C | ลดภาระต่อสัปดาห์ |
|
||||||
|
| Testing | เพิ่ม test ทุก Phase | ลดความเสี่ยง Big-bang testing |
|
||||||
|
| Migration | เพิ่ม Phase M | อัปเกรด DB ปลอดภัย |
|
||||||
|
| Monitoring | เพิ่ม dashboards/alerts | รองรับ production |
|
||||||
|
| Error Model | เพิ่ม API error model | สื่อสาร Frontend ง่าย |
|
||||||
|
| Performance | เพิ่ม performance gates | SLA ชัดเจน |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Changes Log (สรุปจุดที่แก้เพื่ออ้างอิง)
|
||||||
|
|
||||||
|
### (เพิ่ม v1.4.2)
|
||||||
|
|
||||||
|
* API Error Model
|
||||||
|
* Monitoring Deliverables
|
||||||
|
* Migration Phase
|
||||||
|
* Notification throttling
|
||||||
|
* Testing ในทุก Phase
|
||||||
|
|
||||||
|
### (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* แยก Phase 2 ออกเป็น 3 ส่วน
|
||||||
|
* ปรับ Testing phase ใหม่
|
||||||
|
* ปรับ Performance requirements
|
||||||
|
|
||||||
|
### (ลบ v1.4.2)
|
||||||
|
|
||||||
|
* ลบข้อกำหนดเดิมของ Phase 2 ที่รวมทุกอย่างไว้ในสัปดาห์เดียว
|
||||||
|
|
||||||
|
### (ย้าย v1.4.2)
|
||||||
|
|
||||||
|
* ย้ายส่วน “JSON validation” ไป Phase 2B/2C
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# **เอกสารนี้พร้อมเชื่อมต่อกับ Requirements / FullStackJS หากต้องการปรับต่อ**
|
||||||
160
Documnets/Project/LCBP3-DMS_V1_4_2_FullStackJS (Patched)
Normal file
160
Documnets/Project/LCBP3-DMS_V1_4_2_FullStackJS (Patched)
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
# LCBP3-DMS_V1_4_2_FullStackJS (Patched)
|
||||||
|
|
||||||
|
> เอกสารนี้เป็นเวอร์ชันปรับปรุงจาก LCBP3-DMS_V1_4_1_FullStackJS.md
|
||||||
|
> มีการระบุจุดแก้ไขด้วย (เพิ่ม v1.4.2) / (ปรับแก้ v1.4.2) / (ลบ v1.4.2) / (ย้าย v1.4.2)
|
||||||
|
by ChatGPT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Overview (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ Error Model กลางจาก Backend
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ request_id ในทุก API response เพื่อใช้ debug / trace
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่มส่วน Performance Considerations ให้สอดคล้อง backend
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Frontend Architecture (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) แยก service layer สำหรับ Schema Registry
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม observability hooks: latency, error rate per component
|
||||||
|
|
||||||
|
### 2.3 State Management
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม standardized error state จาก Error Model ใหม่
|
||||||
|
|
||||||
|
### 2.4 API Client
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ทุก API ต้องรับ/ส่ง Error Model กลาง
|
||||||
|
|
||||||
|
```
|
||||||
|
interface ApiErrorModel {
|
||||||
|
error_code: string;
|
||||||
|
message: string;
|
||||||
|
details?: any;
|
||||||
|
request_id: string;
|
||||||
|
timestamp: string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. UI Components (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
### 3.2 Form Components
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ JSON Schema-based forms (โยงกับ Phase 2B/2C)
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ sanitization ก่อนส่งข้อมูล
|
||||||
|
|
||||||
|
### 3.4 Table Components
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ observation: render time, event latency
|
||||||
|
|
||||||
|
### 3.6 Notification Components
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ throttling rules
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Escalation UI indicator (เช่น Critical/Warning)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Pages (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
## 4.1 Login Page
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรองรับ error_code เฉพาะทาง เช่น `AUTH.INVALID_CREDENTIALS`
|
||||||
|
|
||||||
|
## 4.3 Dashboard
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม widget สำหรับ Monitoring: latency, error rate
|
||||||
|
|
||||||
|
## 4.6 Correspondence
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Document numbering UI ต้องคำสั่ง retry/fallback
|
||||||
|
* (เพิ่ม v1.4.2) UI แจ้งเตือนเมื่อมี lock failure
|
||||||
|
|
||||||
|
## 4.7 RFA Workflow
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) แสดง deadline escalation (Critical/Warning)
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ notification throttling จาก Backend
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. API Integration Rules (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
## 5.1 Error Handling
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Frontend ต้อง map error_code → UI message
|
||||||
|
* (เพิ่ม v1.4.2) ทุก API call ต้องมี logging request_id
|
||||||
|
|
||||||
|
## 5.2 Permissions
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) RBAC ใน UI ต้องรวมสิทธิ์แบบ Most Permissive
|
||||||
|
|
||||||
|
## 5.3 Data Fetching Policies
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) แยก cache rules ต่อ endpoint
|
||||||
|
* (เพิ่ม v1.4.2) รองรับ background refresh สำหรับ heavy endpoints เช่น search
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Performance Requirements (เพิ่ม v1.4.2)
|
||||||
|
|
||||||
|
* หน้า search ต้อง render < 500ms หลังได้รับผลลัพธ์จาก backend
|
||||||
|
* หน้า table 500 rows ต้อง scroll ลื่น (เพิ่ม virtualization)
|
||||||
|
* ฟอร์มขนาดใหญ่ต้อง render < 200ms
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Testing Requirements (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
## 7.1 Unit Tests
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Test Error Model mapping
|
||||||
|
* (เพิ่ม v1.4.2) Test JSON form generation จาก Schema Registry
|
||||||
|
|
||||||
|
## 7.2 Integration Tests
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ทดสอบ throttling
|
||||||
|
* (เพิ่ม v1.4.2) ทดสอบ deadline escalation UI
|
||||||
|
|
||||||
|
## 7.3 E2E Tests
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Flow test: Correspondence + Numbering fallback
|
||||||
|
* (เพิ่ม v1.4.2) Flow test: RFA Workflow + escalation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Migration Requirements (ใหม่ v1.4.2)
|
||||||
|
|
||||||
|
* Frontend ต้องสอดคล้องกับ Backend Phase M
|
||||||
|
* ต้องรองรับ schema version changes
|
||||||
|
* ต้องรองรับ field deprecation warnings
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 9. Summary of Changes (v1.4.2)
|
||||||
|
|
||||||
|
### เพิ่ม
|
||||||
|
|
||||||
|
* Error Model กลาง
|
||||||
|
* Schema Registry UI integration
|
||||||
|
* Performance rules
|
||||||
|
* Observability ใน frontend
|
||||||
|
* Deadline escalation + notification throttling
|
||||||
|
|
||||||
|
### ปรับแก้
|
||||||
|
|
||||||
|
* RBAC logic → Most Permissive
|
||||||
|
* API integration → รองรับ request_id
|
||||||
|
|
||||||
|
### ย้าย
|
||||||
|
|
||||||
|
* logic JSON validation → เชื่อมกับ Phase 2B/2C backend
|
||||||
|
|
||||||
|
### ลบ
|
||||||
|
|
||||||
|
* ลบ error handling แบบเก่า (string-based)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
เอกสารนี้ถูกจัดทำให้สอดคล้องกับ Backend Development Plan v1.4.2 และ Requirements v1.4.2
|
||||||
124
Documnets/Project/LCBP3-DMS_V1_4_2_Requirements (Patched)
Normal file
124
Documnets/Project/LCBP3-DMS_V1_4_2_Requirements (Patched)
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
# LCBP3-DMS_V1_4_2_Requirements (Patched)
|
||||||
|
|
||||||
|
> เอกสารนี้เป็นเวอร์ชันปรับปรุงจาก LCBP3-DMS_V1_4_1_Requirements.md
|
||||||
|
> มีการระบุจุดแก้ไขด้วย (เพิ่ม v1.4.2) / (ปรับแก้ v1.4.2) / (ลบ v1.4.2) / (ย้าย v1.4.2)
|
||||||
|
by ChatGPT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. สถาปัตยกรรมและระบบโดยรวม (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่มข้อกำหนด Observability: Health checks, metrics, request tracing
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Performance Gate: API p95 < 200ms, Search < 500ms
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม Error Model กลางสำหรับ API
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. ข้อกำหนดด้านระบบ (System Requirements)
|
||||||
|
|
||||||
|
## 2.1 Infrastructure (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* รองรับ Monitoring Dashboard (ใหม่ใน v1.4.2)
|
||||||
|
* ต้องรองรับ Redis metrics: lock failures, cache hit ratio (เพิ่ม v1.4.2)
|
||||||
|
|
||||||
|
## 2.2 Configuration (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ต้องมี configuration validation ตอน startup
|
||||||
|
* (เพิ่ม v1.4.2) แยก config ตาม environment: dev/staging/prod
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. ข้อกำหนดข้อมูล (Data Requirements)
|
||||||
|
|
||||||
|
## 3.11 JSON Details (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (ย้าย v1.4.2) JSON Schema logic ถูกแยกเป็น Phase 2B และ 2C
|
||||||
|
* (เพิ่ม v1.4.2) ต้องมี Schema Registry รองรับ versioning
|
||||||
|
* (เพิ่ม v1.4.2) ต้องมี Sanitization + Compression
|
||||||
|
* (เพิ่ม v1.4.2) ต้อง Encrypt sensitive fields
|
||||||
|
|
||||||
|
## 3.12 Document Numbering (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ต้องใช้ Redis distributed lock + race condition tests
|
||||||
|
* (เพิ่ม v1.4.2) ต้องมี fallback mechanism เมื่อ numbering ล้มเหลว
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. ข้อกำหนดด้านสิทธิ์และการเข้าถึง (RBAC Requirements)
|
||||||
|
|
||||||
|
## 4.2 Permission Hierarchy (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรองรับ RBAC test cases ใน Phase 1
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรวมสิทธิ์จากทุกระดับแบบ Most Permissive
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. ข้อกำหนดด้านผู้ใช้ (User Requirements)
|
||||||
|
|
||||||
|
## 5.6 Workflow Visualization (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรองรับ deadline escalation และ escalation notifications
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรองรับ notification throttling
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Non-Functional Requirements (NFR)
|
||||||
|
|
||||||
|
## 6.1 Audit Log (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรองรับ request_id ในทุก event
|
||||||
|
* (เพิ่ม v1.4.2) ต้องรองรับ structured JSON logs
|
||||||
|
|
||||||
|
## 6.4 Performance (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Performance Gates: API p95 < 200ms, Search < 500ms
|
||||||
|
* (เพิ่ม v1.4.2) เพิ่ม measurement ของ file upload: 50MB < 30s
|
||||||
|
|
||||||
|
## 6.5 Security (ปรับแก้ v1.4.2)
|
||||||
|
|
||||||
|
* (เพิ่ม v1.4.2) Input sanitization บังคับใช้ใน Phase 2A
|
||||||
|
* (เพิ่ม v1.4.2) Rate-limiting แบ่งระดับ: anonymous/authenticated
|
||||||
|
|
||||||
|
## 6.8 Monitoring (เพิ่ม v1.4.2)
|
||||||
|
|
||||||
|
* ต้องมี Dashboard: latency p50/p90/p95/p99, error rate, Redis lock failures
|
||||||
|
* ต้องมี Alert Rules เช่น p95 > 500ms, error rate > 5%
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Migration Requirements (Phase M) (เพิ่ม v1.4.2)
|
||||||
|
|
||||||
|
* ต้องมี SQL migration scripts
|
||||||
|
* ต้องรองรับ JSON data transformation
|
||||||
|
* ต้องมี rollback plan
|
||||||
|
* ต้องมี migration integrity tests
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. สรุปการแก้ไขใน v1.4.2
|
||||||
|
|
||||||
|
### เพิ่ม
|
||||||
|
|
||||||
|
* Error Model
|
||||||
|
* Observability
|
||||||
|
* Migration Plan
|
||||||
|
* Notification throttling
|
||||||
|
* Performance gates
|
||||||
|
|
||||||
|
### ปรับแก้
|
||||||
|
|
||||||
|
* RBAC hierarchy + tests
|
||||||
|
* JSON schema requirements
|
||||||
|
* Numbering system + locking
|
||||||
|
|
||||||
|
### ย้าย
|
||||||
|
|
||||||
|
* JSON validation logic ไป 2B/2C
|
||||||
|
|
||||||
|
### ลบ
|
||||||
|
|
||||||
|
* ลบข้อกำหนด Phase 2 เดิมที่รวม security + JSON ไว้ใน phase เดียว
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
เอกสารนี้พร้อมเชื่อมต่อกับ FullStackJS v1.4.2 (จะจัดทำในไฟล์แยก)
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user