# 📋 **āđāļœāļ™āļāļēāļĢāļžāļąāļ’āļ™āļē Backend (NestJS) - LCBP3-DMS v1.5.1** **āļŠāļ–āļēāļ™āļ°:** DRAFT **āļ§āļąāļ™āļ—āļĩāđˆ:** 2025-12-04 **āļ­āđ‰āļēāļ‡āļ­āļīāļ‡:** Requirements v1.5.1 & FullStackJS Guidelines v1.5.1 **Classification:** Internal Technical Documentation --- ## ðŸŽŊ **āļ āļēāļžāļĢāļ§āļĄāđ‚āļ„āļĢāļ‡āļāļēāļĢ (Project Overview)** āļžāļąāļ’āļ™āļē Backend āļŠāļģāļŦāļĢāļąāļšāļĢāļ°āļšāļšāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ­āļāļŠāļēāļĢāđ‚āļ„āļĢāļ‡āļāļēāļĢ (Document Management System) āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 1.5.1 āđ‚āļ”āļĒāđ€āļ™āđ‰āļ™āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāļŦāļĨāļąāļ 3 āļŠāđˆāļ§āļ™āļŠāļģāļ„āļąāļ: 1. **Unified Workflow Engine:** āļĢāļ°āļšāļš Workflow āđāļšāļš Dynamic āļ—āļĩāđˆāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™ āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļāļģāļŦāļ™āļ” Rule āļœāđˆāļēāļ™ DSL 2. **Advanced Document Numbering:** āļĢāļ°āļšāļšāļŠāļĢāđ‰āļēāļ‡āđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™ (8-component key) āļžāļĢāđ‰āļ­āļĄ Double-Lock Mechanism āļ›āđ‰āļ­āļ‡āļāļąāļ™ Race Condition 3. **Enhanced Master Data:** āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļāļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ (Discipline, SubType) āđāļĨāļ° JSON Schema Management --- ## 📐 **āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāļĢāļ°āļšāļš (System Architecture)** ### **Technology Stack** - **Framework:** NestJS (TypeScript, ESM) - **Database:** MariaDB 10.11 (āđƒāļŠāđ‰ Virtual Columns & Partitioning) - **ORM:** TypeORM (Optimistic Locking) - **Workflow Engine:** Custom DSL-based Engine (State Machine) - **Queue:** BullMQ (Redis) āļŠāļģāļŦāļĢāļąāļš Async Jobs & Notifications - **Locking:** Redis (Redlock) + DB Pessimistic Fallback - **Search:** Elasticsearch - **Validation:** Zod / Class-validator / AJV (JSON Schema) ### **āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāļ”āļđāļĨ (Module Structure)** ``` 📁src ├── 📁common # Shared utilities, guards, decorators ├── 📁config # Configuration setup ├── 📁database # Migrations & Seeds ├── 📁modules │ ├── 📁auth # Authentication (JWT) │ ├── 📁user # User & RBAC Management │ ├── 📁master-data # Organization, Project, Type, Discipline (NEW) │ ├── 📁document-numbering # Numbering Service (Updated) │ ├── 📁workflow-engine # Unified Workflow Engine (NEW) │ ├── 📁correspondence # Correspondence Management │ ├── 📁rfa # RFA Management │ ├── 📁drawing # Drawing Management │ ├── 📁transmittal # Transmittal Management │ ├── 📁circulation # Circulation Management │ ├── 📁file-storage # File Upload & Handling │ ├── 📁json-schema # JSON Schema Registry (NEW) │ ├── 📁search # Elasticsearch Integration │ ├── 📁notification # Notification System │ └── 📁monitoring # Health & Metrics └── main.ts ``` --- ## 🗓ïļ **āđāļœāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāđāļšāļš Phase-Based** ### **Phase 1: Core Foundation & Master Data (Week 1-2)** **Goal:** āđ€āļ•āļĢāļĩāļĒāļĄāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āđāļĨāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļāđƒāļŦāđ‰āļžāļĢāđ‰āļ­āļĄāļŠāļģāļŦāļĢāļąāļšāđ‚āļĄāļ”āļđāļĨāļ­āļ·āđˆāļ™ #### **[ ] T1.1 Master Data Module (Enhanced)** - **Objective:** āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļĢāļ§āļĄāļ–āļķāļ‡āļ•āļēāļĢāļēāļ‡āđƒāļŦāļĄāđˆāđƒāļ™ v1.5.1 - **Tasks:** - [ ] Implement `OrganizationService` (CRUD) - [ ] Implement `ProjectService` & `ContractService` - [ ] Implement `TypeService` (Correspondence, RFA, Drawing) - [ ] **[NEW]** Implement `DisciplineService` (CRUD for `disciplines` table) - [ ] **[NEW]** Implement `CorrespondenceSubTypeService` - [ ] **[NEW]** Implement `CodeService` (RFA Approve Codes, Status Codes) - **Deliverables:** API āļŠāļģāļŦāļĢāļąāļšāļˆāļąāļ”āļāļēāļĢ Master Data āļ—āļąāđ‰āļ‡āļŦāļĄāļ” #### **[ ] T1.2 User & Auth Module** - **Objective:** āļĢāļ°āļšāļšāļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™āđāļĨāļ°āļŠāļīāļ—āļ˜āļīāđŒ (RBAC) - **Tasks:** - [ ] Implement `AuthService` (Login, Refresh Token) - [ ] Implement `UserService` & `UserPreferenceService` - [ ] Implement RBAC Guards (Global, Org, Project, Contract scopes) - **Deliverables:** Secure Authentication & Authorization --- ### **Phase 2: Document Numbering & File Storage (Week 3)** **Goal:** āļĢāļ°āļšāļšāđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļĢāļ°āļšāļšāđ„āļŸāļĨāđŒāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ #### **[ ] T2.1 Document Numbering Module (Major Update)** - **Objective:** āļĢāļ°āļšāļšāļŠāļĢāđ‰āļēāļ‡āđ€āļĨāļ‚āļ—āļĩāđˆāđ€āļ­āļāļŠāļēāļĢāđāļšāļš 8-component key āļžāļĢāđ‰āļ­āļĄ Double-Lock - **Tasks:** - [ ] Update `DocumentNumberCounter` entity (8-column PK) - [ ] Implement `DocumentNumberingService` with **Redlock** - [ ] Implement **DB Optimistic Lock** fallback strategy - [ ] Implement Token Parser (`{DISCIPLINE}`, `{SUB_TYPE}`, `{RFA_TYPE}`) - [ ] Create `DocumentNumberAudit` & `DocumentNumberError` tables - **Deliverables:** Race-condition free numbering system #### **[ ] T2.2 File Storage Service** - **Objective:** Two-Phase Storage Strategy - **Tasks:** - [ ] Implement `Upload` (Phase 1: Temp storage) - [ ] Implement `Commit` (Phase 2: Move to permanent) - [ ] Integrate **ClamAV** for virus scanning - [ ] Implement Cleanup Job for orphan files - **Deliverables:** Secure file upload system --- ### **Phase 3: Unified Workflow Engine (Week 4-5)** **Goal:** āļĢāļ°āļšāļš Workflow āļāļĨāļēāļ‡āļ—āļĩāđˆāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđāļĨāļ° Configurable #### **[ ] T3.1 Workflow Engine Core** - **Objective:** āļŠāļĢāđ‰āļēāļ‡ Engine āļŠāļģāļŦāļĢāļąāļšāļĢāļąāļ™ Workflow āļ•āļēāļĄ DSL - **Tasks:** - [ ] Design DSL Schema (JSON) - [ ] Implement `DslParserService` & Validator - [ ] Implement `WorkflowEngineService` (State Machine) - [ ] Implement `GuardExecutor` (Permission/Condition checks) - [ ] Implement `EffectExecutor` (Actions after transition) - **Deliverables:** Functional Workflow Engine #### **[ ] T3.2 Workflow Integration** - **Objective:** āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ Engine āđ€āļ‚āđ‰āļēāļāļąāļš Business Modules - **Tasks:** - [ ] Create Standard Workflow Definitions (Correspondence, RFA) - [ ] Implement `WorkflowInstance` creation logic - [ ] Create API for Workflow Actions (Approve, Reject, Comment) - **Deliverables:** Integrated Workflow System --- ### **Phase 4: Business Logic Modules (Week 6-7)** **Goal:** āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļŦāļĨāļąāļāļ‚āļ­āļ‡āļĢāļ°āļšāļšāđ€āļ­āļāļŠāļēāļĢ #### **[ ] T4.1 Correspondence Module** - **Objective:** āļˆāļąāļ”āļāļēāļĢāļŦāļ™āļąāļ‡āļŠāļ·āļ­āđ‚āļ•āđ‰āļ•āļ­āļš - **Tasks:** - [ ] Update Entity to support `discipline_id` - [ ] Integrate with **Document Numbering** - [ ] Integrate with **Workflow Engine** - [ ] Implement CRUD & Revision handling #### **[ ] T4.2 RFA Module** - **Objective:** āļˆāļąāļ”āļāļēāļĢāđ€āļ­āļāļŠāļēāļĢāļ‚āļ­āļ­āļ™āļļāļĄāļąāļ•āļī - **Tasks:** - [ ] Update Entity to support `discipline_id` - [ ] Implement RFA-specific workflow logic - [ ] Implement RFA Item linking (Drawings) #### **[ ] T4.3 Drawing Module** - **Objective:** āļˆāļąāļ”āļāļēāļĢāđāļšāļšāļāđˆāļ­āļŠāļĢāđ‰āļēāļ‡ (Shop Drawing, Contract Drawing) - **Tasks:** - [ ] Implement `ShopDrawingService` & `ContractDrawingService` - [ ] Implement Revision Control for Drawings - [ ] Implement Drawing Numbering Logic #### **[ ] T4.4 Transmittal Module** - **Objective:** āļˆāļąāļ”āļāļēāļĢāđƒāļšāļ™āļģāļŠāđˆāļ‡āđ€āļ­āļāļŠāļēāļĢ (Transmittal) - **Tasks:** - [ ] Implement `TransmittalService` (Create, View, PDF) - [ ] Implement `TransmittalItem` linking (Correspondence, RFA, Drawing) - [ ] Implement Transmittal Numbering (Type 901) - [ ] Generate PDF Transmittal Letter #### **[ ] T4.5 Circulation Module** - **Objective:** āļˆāļąāļ”āļāļēāļĢāđƒāļšāđ€āļ§āļĩāļĒāļ™āļ āļēāļĒāđƒāļ™ (Circulation Sheet) - **Tasks:** - [ ] Implement `CirculationService` (Create, Assign, Complete) - [ ] Implement `CirculationAssignee` tracking (Multiple users) - [ ] Implement Circulation Numbering (Type 900) - [ ] Integrate with Workflow for completion tracking --- ### **Phase 5: System, Search & Monitoring (Week 8)** **Goal:** āļĢāļ°āļšāļšāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āđāļĨāļ°āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš #### **[ ] T5.1 JSON Schema & Preferences** - **Objective:** āļˆāļąāļ”āļāļēāļĢ Dynamic Data āđāļĨāļ° User Settings - **Tasks:** - [ ] Implement `JsonSchemaService` (Registry & Validation) - [ ] Implement `UserPreferenceService` - [ ] Implement Virtual Column management #### **[ ] T5.2 Search & Logs** - **Objective:** āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš - **Tasks:** - [ ] Implement **Elasticsearch** Sync - [ ] Implement **Audit Log** with Partitioning - [ ] Setup **Prometheus/Grafana** metrics --- ## ðŸ›Ąïļ **Security & Performance Guidelines** 1. **Double-Locking:** āđƒāļŠāđ‰ Redis Lock āļ„āļđāđˆāļāļąāļš DB Optimistic Lock āđ€āļŠāļĄāļ­āļŠāļģāļŦāļĢāļąāļš Critical Sections 2. **Input Validation:** āđƒāļŠāđ‰ Zod/DTO Validation āļ—āļļāļāļˆāļļāļ” āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ° JSON Fields 3. **Rate Limiting:** āļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰ Rate Limit āļ•āļēāļĄ User Role 4. **Audit Logging:** āļšāļąāļ™āļ—āļķāļāļ—āļļāļāļāļēāļĢāļāļĢāļ°āļ—āļģāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļĨāļ‡ `audit_logs` 5. **Partitioning:** āđƒāļŠāđ‰ Partitioning āļŠāļģāļŦāļĢāļąāļšāļ•āļēāļĢāļēāļ‡āļ‚āļ™āļēāļ”āđƒāļŦāļāđˆ (`audit_logs`, `notifications`) --- **End of Backend Plan V1.5.1**