Files
lcbp3/docs/Markdown/LCBP3-DMS_V1_4_0_Backend_Development_Plan.md

28 KiB

📋 แผนการพัฒนา Backend (NestJS) - LCBP3-DMS v1.4.0

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

พัฒนา Backend สำหรับระบบบริหารจัดการเอกสารโครงการ (Document Management System) ที่รองรับการจัดการเอกสารที่ซับซ้อน มีระบบ Workflow การอนุมัติ และการควบคุมสิทธิ์แบบ RBAC 3 ระดับ


📐 สถาปัตยกรรมระบบ

Technology Stack

  • Framework: NestJS (TypeScript, ESM)
  • Database: MariaDB 10.11
  • ORM: TypeORM
  • Authentication: JWT + Passport
  • Authorization: CASL (RBAC)
  • File Upload: Multer
  • Search: Elasticsearch
  • Notification: Nodemailer + n8n (Line Integration)
  • Scheduling: @nestjs/schedule (Cron Jobs)
  • Documentation: Swagger

โครงสร้างโมดูล (Domain-Driven)

src/
├── common/                    # Shared Module
│   ├── auth/                 # JWT, Guards
│   ├── config/               # Configuration
│   ├── decorators/           # @RequirePermission
│   ├── entities/             # Base Entities
│   ├── exceptions/           # Global Filters
│   ├── file-storage/         # FileStorageService
│   ├── guards/               # RBAC Guard
│   ├── interceptors/         # Audit, Transform
│   └── services/             # Notification, etc.
├── modules/
│   ├── user/                 # Users, Roles, Permissions
│   ├── project/              # Projects, Contracts, Organizations
│   ├── master/               # Master Data
│   ├── correspondence/       # Correspondence Management
│   ├── rfa/                  # RFA & Workflows
│   ├── drawing/              # Shop/Contract Drawings
│   ├── circulation/          # Internal Circulation
│   ├── transmittal/          # Transmittals
│   ├── search/               # Elasticsearch
│   └── document-numbering/   # Internal Service
└── database/                 # Migrations & Seeds

🗓️ แผนการพัฒนาแบบ Phase-Based

Phase 0: Infrastructure Setup (สัปดาห์ที่ 1)

Milestone: สร้างโครงสร้างพื้นฐานและเชื่อมต่อ Services

Phase 0: Tasks

  • []T0.1 Setup QNAP Container Station

    • สร้าง Docker Network: lcbp3
    • Setup docker-compose.yml สำหรับ:
      • MariaDB (db.np-dms.work)
      • PHPMyAdmin (pma.np-dms.work)
      • Backend (backend.np-dms.work)
      • Nginx Proxy Manager (npm.np-dms.work)
    • กำหนด Environment Variables ใน docker-compose.yml (ไม่ใช้ .env)
    • Deliverable: Services ทั้งหมดรันได้และเชื่อมต่อกันผ่าน Network
  • []T0.2 Initialize NestJS Project

    • สร้างโปรเจกต์ใหม่ด้วย Nest CLI
    • ติดตั้ง Dependencies:
    npm install @nestjs/typeorm typeorm mysql2
    npm install @nestjs/config
    npm install class-validator class-transformer
    npm install @nestjs/jwt @nestjs/passport passport passport-jwt
    npm install casl
    npm install @nestjs/platform-express multer
    npm install @nestjs/swagger
    npm install helmet rate-limiter-flexible
    npm install bcrypt
    npm install --save-dev @nestjs/testing jest @types/jest @types/passport-jwt @types/multer supertest
    npm install @nestjs/cache-manager cache-manager
    npm install @nestjs/schedule
    npm install @nestjs/config
    npm install @nestjs/elasticsearch @elastic/elasticsearch
    npm install nodemailer @types/nodemailer
    npm install uuid @types/uuid
    

  - Setup โครงสร้างโฟลเดอร์ตาม Domain-Driven Architecture
  - Deliverable: Project Structure พร้อม, แสดง Swagger ที่ `/api`

- **[✅]T0.3 Setup Database Connection**

  - Import SQL Schema v1.4.0 เข้า MariaDB
  - Run Seed Data (organizations, users, roles, permissions)
  - Configure TypeORM ใน AppModule
  - ทดสอบ Connection
  - Deliverable: Database พร้อมใช้งาน, มี Seed Data

- **[✅]T0.4 Setup Git Repository**
  - สร้าง Repository ใน Gitea (git.np-dms.work)
  - Setup .gitignore, README.md
  - Commit Initial Project
  - Deliverable: Code อยู่ใน Version Control

---

## **Phase 1: Core Foundation (สัปดาห์ที่ 2-3)**

Milestone: ระบบ Authentication, Authorization และ Base Entities

### Phase 1: Tasks

- **[ ] T1.1 CommonModule - Base Infrastructure**
  - [ ] สร้าง Base Entity (id, created_at, updated_at, deleted_at)
  - [ ] สร้าง Global Exception Filter
  - [ ] สร้าง Response Transform Interceptor
  - [ ] สร้าง Audit Log Interceptor
  - [ ] สร้าง RequestContextService - สำหรับเก็บข้อมูลระหว่าง Request
  - [ ] สร้าง ConfigService - Centralized configuration management
  - [ ] สร้าง CryptoService - สำหรับ encryption/decryption
  - [ ] Deliverable: Common Services พร้อมใช้

- **[ ] T1.2 AuthModule - JWT Authentication**
  - [ ] สร้าง Entity: User
  - [ ] สร้าง AuthService:
    - [ ] `login(username, password)` → JWT Token
    - [ ] `validateUser(username, password)` → User | null
    - [ ] Password Hashing (bcrypt)
  - [ ] สร้าง JWT Strategy (Passport)
  - [ ] สร้าง JwtAuthGuard
  - [ ] สร้าง Controllers:
    - [ ] `POST /auth/login` → { access_token }
    - [ ] `POST /auth/register` (Admin only)
    - [ ] `GET /auth/profile` (Protected)
  - [ ] Deliverable: ล็อกอิน/ล็อกเอาต์ทำงานได้

- **[ ] T1.3 UserModule - User Management**
  - [ ] สร้าง Entities: User, Role, Permission, UserRole
  - [ ] สร้าง UserService CRUD
  - [ ] สร้าง RoleService CRUD
  - [ ] สร้าง PermissionService (Read-Only, จาก Seed)
  - [ ] สร้าง Controllers:
    - [ ] `GET /users` → List Users (Paginated)
    - [ ] `GET /users/:id` → User Detail
    - [ ] `POST /users` → Create User
    - [ ] `PUT /users/:id` → Update User
    - [ ] `DELETE /users/:id` → Soft Delete
    - [ ] `GET /roles` → List Roles
    - [ ] `POST /roles` → Create Role (Admin)
    - [ ] `PUT /roles/:id/permissions` → Assign Permissions
  - [ ] Deliverable: จัดการผู้ใช้และ Role ได้

- **[ ] T1.4 RBAC Guard - Authorization**
  - [ ] สร้าง `@RequirePermission()` Decorator
  - [ ] สร้าง RbacGuard ที่ตรวจสอบ:
    - [ ] Global Permissions
    - [ ] Organization Permissions
    - [ ] Project Permissions
    - [ ] Contract Permissions
  - [ ] Permission Hierarchy Logic

```bash
  // Current: 3-level hierarchy
  // Recommended: 4-level hierarchy (Global → Organization → Project → Contract)
  @Injectable()
  export class RbacGuard implements CanActivate {
    async canActivate(context: ExecutionContext): Promise<boolean> {
      const requiredPermission = this.getRequiredPermission(context);
      const user = this.getUser(context);

      // Check permissions in order: Global → Org → Project → Contract
      return await this.checkGlobalPermissions(user, requiredPermission) ||
             await this.checkOrgPermissions(user, requiredPermission) ||
             await this.checkProjectPermissions(user, requiredPermission) ||
             await this.checkContractPermissions(user, requiredPermission);
    }
  }

  • Integration กับ CASL

  • Deliverable: ระบบสิทธิ์ทำงานได้ทั้ง 4 ระดับ

  • T1.5 ProjectModule - Base Structures

    • สร้าง Entities:
      • Organization
      • Project
      • Contract
      • ProjectOrganization (Junction)
      • ContractOrganization (Junction)
      • UserAssignment Entity - สำหรับจัดการ user assignments ตาม scope
    • สร้าง Services & Controllers:
      • GET /organizations → List
      • POST /projects → Create (Superadmin)
      • GET /projects/:id/contracts → List Contracts
      • POST /projects/:id/contracts → Create Contract
      • UserAssignment - สำหรับจัดการ user assignments ตาม scope
      • ProjectOrganization - สำหรับจัดการความสัมพันธ์ project-organization
      • ContractOrganization - สำหรับจัดการความสัมพันธ์ contract-organization
    • Deliverable: จัดการโครงสร้างโปรเจกต์ได้

Phase 2: Master Data & File Management (สัปดาห์ที่ 4)

Milestone: Master Data และระบบจัดการไฟล์

Phase 2: Tasks

  • [ ] T2.1 MasterModule - Master Data Management

    • สร้าง Entities:
      • CorrespondenceType
      • CorrespondenceStatus
      • RfaType
      • RfaStatusCode
      • RfaApproveCode
      • CirculationStatusCode
      • Tag
    • สร้าง Services & Controllers (CRUD):
      • GET /master/correspondence-types
      • POST /master/tags → Create Tag
      • GET /master/tags → List Tags (Autocomplete)
    • Deliverable: Admin จัดการ Master Data ได้
  • [ ] T2.2 FileStorageService - Central File Management

    • สร้าง Attachment Entity
    • สร้าง FileStorageService: (การจัดเก็บไฟล์ในรูปแบบ centralized storage, ครอบคลุมการจัดการไฟล์แนบทั้งหมด, Security Measures)
      • uploadFile(file: Express.Multer.File) → Attachment
      • getFilePath(attachmentId) → string
      • deleteFile(attachmentId) → boolean
    • จัดเก็บไฟล์ใน /share/dms-data/uploads/{YYYY}/{MM}/
    • สร้าง Controller:
      • POST /files/upload → { attachment_id, url }
      • GET /files/:id/download → File Stream (Protected)
    • Access Control: ตรวจสอบสิทธิ์ผ่าน Junction Table
    • Deliverable: อัปโหลด/ดาวน์โหลดไฟล์ได้อย่างปลอดภัย
  • [ ] T2.3 DocumentNumberingModule - Internal Service

    • สร้าง Entities:
      • DocumentNumberFormat
      • DocumentNumberCounter
    • สร้าง DocumentNumberingService: รวม Stored Procedure (sp_get_next_document_number), Error Handling และ Retry Logic
      • generateNextNumber(projectId, orgId, typeId, year) → string
      • เรียก Stored Procedure: sp_get_next_document_number
      • Format ตาม Template: {ORG_CODE}-{TYPE_CODE}-{YEAR_SHORT}-{SEQ:4}
    • ไม่มี Controller (Internal Service เท่านั้น)
    • Deliverable: Service สร้างเลขที่เอกสารได้ถูกต้อง

Phase 3: Correspondence & RFA Core (สัปดาห์ที่ 5-6)

Milestone: ระบบเอกสารโต้ตอบและ RFA

Phase 3: Tasks

  • [ ] T3.1 CorrespondenceModule - Basic CRUD

    • สร้าง Entities:
      • Correspondence
      • CorrespondenceRevision
      • CorrespondenceRecipient
      • CorrespondenceTag
      • CorrespondenceReference
      • CorrespondenceAttachment
    • สร้าง CorrespondenceService: Complex Business Rules, State Machine สำหรับ Status Transitions
      • create(dto) → Correspondence
        • สร้าง Correspondence + Revision แรก (rev 0)
        • เรียก DocumentNumberingService
        • สร้าง Recipients (TO/CC)
        • สร้าง Tags
        • สร้าง Attachments
      • update(id, dto) → Correspondence
        • สร้าง Revision ใหม่
        • Update is_current flag
      • findAll(filters) → Paginated List
      • findById(id) → Correspondence with Current Revision
    • สร้าง Controllers:
      • POST /correspondences → Create
      • GET /correspondences → List (Filter by type, status, org)
      • GET /correspondences/:id → Detail
      • PUT /correspondences/:id → Update (Create new revision)
      • DELETE /correspondences/:id → Soft Delete (Admin only)
    • Deliverable: สร้าง/แก้ไข/ดูเอกสารได้
  • [ ] T3.2 CorrespondenceModule - Advanced Features

    • Implement Status Transitions:
      • DRAFTSUBMITTED (Document Control)
      • SUBMITTEDCLOSED (Admin)
      • SUBMITTEDCANCELLED (Admin + Reason)
    • Implement References:
      • POST /correspondences/:id/references → Link Documents
    • Implement Search (Basic):
    • GET /correspondences/search?q=...
    • Deliverable: Workflow พื้นฐานทำงานได้
  • [ ] T3.3 RfaModule - Basic CRUD

    • สร้าง Entities:
      • Rfa
      • RfaRevision
      • RfaItem (Junction to Shop Drawings)
    • สร้าง RfaService: Complex Business Rules
      • create(dto) → Rfa
        • สร้าง Correspondence + Rfa + RfaRevision
        • เชื่อม Shop Drawing Revisions (สำหรับ RFA_DWG)
      • findAll(filters) → Paginated List
      • findById(id) → Rfa with Items
    • สร้าง Controllers:
      • POST /rfas → Create
      • GET /rfas → List
      • GET /rfas/:id → Detail
    • Deliverable: สร้าง RFA และเชื่อม Shop Drawings ได้

Phase 4: Drawing Management (สัปดาห์ที่ 7)

Milestone: ระบบจัดการแบบ

Phase 4: Tasks

  • [ ] T4.1 DrawingModule - Contract Drawings

    • สร้าง Entities:
      • ContractDrawing
      • ContractDrawingVolume
      • ContractDrawingCat
      • ContractDrawingSubCat
      • ContractDrawingSubcatCatMap
      • ContractDrawingAttachment
    • สร้าง ContractDrawingService CRUD
    • สร้าง Controllers:
      • GET /drawings/contract → List
      • POST /drawings/contract → Create (Admin)
      • GET /drawings/contract/:id → Detail
    • Deliverable: จัดการ Contract Drawings ได้
  • [ ] T4.2 DrawingModule - Shop Drawings

    • สร้าง Entities:
      • ShopDrawing
      • ShopDrawingRevision
      • ShopDrawingMainCategory
      • ShopDrawingSubCategory
      • ShopDrawingRevisionContractRef
      • ShopDrawingRevisionAttachment
    • สร้าง ShopDrawingService CRUD
    • สร้าง Controllers:
      • GET /drawings/shop → List
      • POST /drawings/shop → Create
      • POST /drawings/shop/:id/revisions → Create Revision
      • GET /drawings/shop/:id → Detail with Revisions
    • Link Shop Drawing Revision → Contract Drawings
    • Deliverable: จัดการ Shop Drawings และ Revisions ได้

Phase 5: Workflow Systems (สัปดาห์ที่ 8-9)

Milestone: ระบบ Workflow ทั้งหมด

Phase 5: Tasks

  • [ ] T5.1 RfaModule - Workflow Implementation

    • สร้าง Entities:
      • RfaWorkflowTemplate
      • RfaWorkflowTemplateStep
      • RfaWorkflow (Transaction Log)
    • สร้าง RfaWorkflowService: Advanced Workflow Features
      • initiateWorkflow(rfaId, templateId) → void
        • สร้าง RfaWorkflow records ตาม Template
        • กำหนด Step 1 เป็น PENDING
      • completeStep(rfaId, stepNumber, action, comments) → void
        • Update Status → COMPLETED
        • Set Next Step → PENDING
        • Send Notifications
      • rejectStep(rfaId, stepNumber, reason) → void
        • Update Status → REJECTED
        • Send back to Originator
    • สร้าง Controllers:
      • POST /rfas/:id/workflow/start → Start Workflow
      • POST /rfas/:id/workflow/steps/:stepNumber/complete → Complete Step
      • GET /rfas/:id/workflow → Get Workflow Status
    • Deliverable: RFA Workflow ทำงานได้
  • [ ] T5.2 CirculationModule - Internal Routing

    • สร้าง Entities:
      • Circulation
      • CirculationTemplate
      • CirculationTemplateAssignee
      • CirculationRouting (Transaction Log)
      • CirculationAttachment
    • สร้าง CirculationService:
      • create(correspondenceId, dto) → Circulation
        • สร้าง Circulation (1:1 กับ Correspondence)
        • สร้าง Routing ตาม Template
      • assignUser(circulationId, stepNumber, userId) → void
      • completeStep(circulationId, stepNumber, comments) → void
      • close(circulationId) → void (เมื่อตอบกลับองค์กรผู้ส่งแล้ว)
    • สร้าง Controllers:
      • POST /circulations → Create
      • GET /circulations/:id → Detail
      • POST /circulations/:id/steps/:stepNumber/complete → Complete
      • POST /circulations/:id/close → Close
    • Deliverable: ใบเวียนภายในองค์กรทำงานได้
  • [ ] T5.3 TransmittalModule - Document Forwarding

    • สร้าง Entities:
      • Transmittal
      • TransmittalItem
    • สร้าง TransmittalService:
      • create(dto) → Transmittal
        • สร้าง Correspondence + Transmittal
        • เชื่อม Multiple Correspondences เป็น Items
    • สร้าง Controllers:
      • POST /transmittals → Create
      • GET /transmittals → List
      • GET /transmittals/:id → Detail with Items
    • Deliverable: สร้าง Transmittal ได้

Phase 6: Advanced Features (สัปดาห์ที่ 10-11)

Milestone: ฟีเจอร์ขั้นสูง

Phase 6: Tasks

  • [ ] T6.1 SearchModule - Elasticsearch Integration

    • Setup Elasticsearch Container ใน docker-compose.yml
    • สร้าง SearchService:
      • indexDocument(entity) → void
      • updateDocument(entity) → void
      • deleteDocument(entity) → void
      • search(query, filters) → SearchResult[]
    • Index ทุกครั้งที่ Create/Update:
      • Correspondence
      • RFA
      • Shop Drawing
      • Contract Drawing
      • Circulation
      • Transmittal
    • สร้าง Controllers:
      • GET /search?q=...&type=...&from=...&to=... → Results
    • Deliverable: ค้นหาขั้นสูงทำงานได้
  • [ ] T6.2 NotificationModule - Email & Line

    • สร้าง NotificationService:
      • sendEmail(to, subject, body) → void (Nodemailer)
      • sendLine(userId, message) → void (ผ่าน n8n Webhook)
      • createSystemNotification(userId, message, entityType, entityId) → void
    • Integrate กับ Workflow Events:
      • เมื่อสร้าง Correspondence ใหม่ → แจ้ง Recipients
      • เมื่อสร้าง Circulation → แจ้ง Assignees
      • เมื่อ RFA Workflow ถึง Step → แจ้ง Responsible Org
      • เมื่อใกล้ถึง Deadline → แจ้ง (Optional)
    • สร้าง Controllers:
      • GET /notifications → List User's Notifications
      • PUT /notifications/:id/read → Mark as Read
    • Deliverable: ระบบแจ้งเตือนทำงานได้
  • [ ] T6.3 Reporting & Analytics

    • สร้าง ReportService:
      • getCorrespondenceSummary(projectId, from, to) → Report
      • getRfaSummary(projectId, from, to) → Report
      • getActivityLog(userId, from, to) → Report
    • ใช้ Views จาก Database:
      • v_current_correspondences
      • v_current_rfas
      • v_user_tasks
      • v_audit_log_details
    • สร้าง Controllers:
      • GET /reports/correspondence → Summary (CSV, PDF)
      • GET /reports/rfa → Summary
      • GET /reports/activity → User Activity
    • Deliverable: สร้างรายงานได้
  • T6.4 Audit Log & Activity Feed

    • AuditLogInterceptor ทำงานอัตโนมัติแล้ว (Phase 1)
    • สร้าง AuditLogService:
      • log(userId, action, entityType, entityId, details) → void
      • getUserActivity(userId, limit) → AuditLog[]
    • สร้าง Controllers:
      • GET /audit-logs → List (Admin only)
      • GET /audit-logs/user/:userId → User's Activity
    • Deliverable: ดู Audit Log ได้

Phase 7: Testing & Optimization (สัปดาห์ที่ 12-13)

Milestone: ทดสอบและปรับปรุงประสิทธิภาพ

Phase 7: Tasks

  • [ ] T7.1 Unit Testing

    • เขียน Unit Tests สำหรับ Services สำคัญ:
      • AuthService (login, validateUser)
      • RbacGuard (permission checks)
      • DocumentNumberingService (number generation)
      • CorrespondenceService (create, update)
      • RfaWorkflowService (workflow logic)
    • Target: 70% Code Coverage
    • Deliverable: Unit Tests ผ่านทั้งหมด
  • [ ] T7.2 Integration Testing

    • เขียน Integration Tests:
      • Authentication Flow (login → access protected route)
      • Document Creation Flow (create correspondence → attach files)
      • RFA Workflow Flow (start → step 1 → step 2 → complete)
      • Circulation Flow (create → assign → complete → close)
      • ทดสอบ SQL Views (v_user_all_permissions, v_user_tasks)
    • ใช้ Test Database แยกต่างหาก
    • Deliverable: Integration Tests ผ่าน
  • [ ] T7.3 E2E Testing

    • เขียน E2E Tests:
      • User Registration & Login
      • Create Correspondence (Full Flow)
      • Create RFA with Shop Drawings
      • Complete RFA Workflow
      • Search Documents
    • Deliverable: E2E Tests ผ่าน
  • [ ] T7.4 Performance Optimization

    • Implement Caching:
      • Cache Master Data (Roles, Permissions)
      • Cache User Permissions (ใช้ @nestjs/cache-manager)
    • Database Optimization:
      • Review Indexes
      • Optimize Queries (N+1 Problem)
      • I[ ] mplement Pagination ทุก List Endpoint
    • Deliverable: Response Time < 200ms (90th percentile)
  • [ ] T7.5 Security Hardening

    • Implement Rate Limiting (ใช้ rate-limiter-flexible)
    • Setup Helmet (Security Headers)
    • Review CORS Configuration
    • Input Validation (ตรวจสอบ DTOs ทั้งหมด)
    • Deliverable: Security Checklist ผ่าน

Phase 8: Documentation & Deployment (สัปดาห์ที่ 14)

Milestone: เอกสารและ Deploy สู่ Production

Phase 8: Tasks

  • [ ] T8.1 API Documentation

    • ครบทุก Endpoint ใน Swagger:
      • ใส่ Description, Example Request/Response
      • ระบุ Required Permissions
      • ใส่ Error Responses
    • Export Swagger JSON → Frontend Team
    • Deliverable: Swagger Docs สมบูรณ์
  • [ ] T8.2 Technical Documentation

    • เขียนเอกสาร:
      • Architecture Overview
      • Module Structure
      • Database Schema Diagram
      • API Design Patterns
      • Deployment Guide
    • Deliverable: Technical Docs พร้อม
  • [ ] T8.3 Deployment Preparation

    • สร้าง Production docker-compose.yml
    • Setup Environment Variables ใน QNAP
    • Setup Nginx Proxy Manager (SSL Certificate)
    • Setup Backup Scripts (Database + Files)
    • Deliverable: Deployment Guide พร้อม
  • [ ] T8.4 Production Deployment

    • Deploy Backend ไปยัง backend.np-dms.work
    • ทดสอบ API ผ่าน Postman
    • Monitor Logs (Winston)
    • Setup Health Check Endpoint (GET /health)
    • Deliverable: Backend รันบน Production
  • T8.5 Handover to Frontend Team

    • Demo API ให้ Frontend Team
    • ส่งมอบ Swagger Documentation
    • ส่งมอบ Postman Collection
    • Workshop: วิธีใช้ Authentication & RBAC
    • Deliverable: Frontend เริ่มพัฒนาได้

📊 สรุป Timeline

Phase ระยะเวลา จำนวนงาน Output หลัก
Phase 0 1 สัปดาห์ 4 Infrastructure Ready
Phase 1 2 สัปดาห์ 5 Auth & User Management
Phase 2 1 สัปดาห์ 3 Master Data & File Storage
Phase 3 2 สัปดาห์ 3 Correspondence & RFA Core
Phase 4 1 สัปดาห์ 2 Drawing Management
Phase 5 2 สัปดาห์ 3 Workflow Systems
Phase 6 2 สัปดาห์ 4 Advanced Features
Phase 7 2 สัปดาห์ 5 Testing & Optimization
Phase 8 1 สัปดาห์ 5 Documentation & Deploy
รวม 14 สัปดาห์ 34 Tasks Production-Ready Backend

🎯 Critical Success Factors

  1. Database First: ใช้ Schema v1.4.0 เป็นหลัก ไม่แก้ไข Schema โดยไม่จำเป็น
  2. Emphasizing Soft Delete: Service ทั้งหมดที่ทำการ Query ข้อมูล (เช่น findAll, findById) ต้อง ใช้ Global Filter หรือ Default Scope ของ TypeORM เพื่อกรอง WHERE deleted_at IS NULL เสมอ
  3. API Contract: ทุก Endpoint ต้องมี Swagger Documentation สมบูรณ์
  4. Security: RBAC ต้องทำงานถูกต้อง 100% ก่อน Deploy
  5. Testing: Code Coverage อย่างน้อย 70% ก่อน Production
  6. Performance: Response Time < 200ms (90th percentile)
  7. Documentation: เอกสารต้องครบถ้วนเพื่อ Handover ให้ Frontend Team

🚀 ขั้นตอนถัดไป

  1. Approve แผนนี้ → ปรับแต่งตาม Feedback
  2. Setup Phase 0 → เริ่มสร้าง Infrastructure
  3. Daily Standup → รายงานความก้าวหน้าทุกวัน
  4. Weekly Review → ทบทวนความก้าวหน้าทุกสัปดาห์
  5. Deploy to Production → Week 14

หมายเหตุ: แผนนี้สามารถปรับแต่งได้ตามความต้องการและข้อจำกัดของทีม หาก Phase ใดใช้เวลามากกว่าที่คาดการณ์ ควรปรับ Timeline ให้เหมาะสม