690404:1139 Modify ADR
This commit is contained in:
@@ -10,6 +10,20 @@
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Gap Analysis & Purpose
|
||||
|
||||
### ปิด Gap จากเอกสาร:
|
||||
- **Document Numbering Requirements** - Section 3.1: "เลขที่เอกสารต้องเป็นเลขที่อัตโนมัติ ไม่ซ้ำกัน และมีความหมาย"
|
||||
- เหตุผล: ระบบเดิมไม่มีกลไกสร้างเลขที่อัตโนมัติที่ปลอดภัยต่อ Race Condition
|
||||
- **Acceptance Criteria** - AC-DOC-001: "เลขที่เอกสารต้องไม่ซ้ำกันแม้มีการสร้างพร้อมกันหลาย Request"
|
||||
- เหตุผล: ต้องการ Mechanism ที่รับประกันความไม่ซ้ำกันในระดับ Mission-Critical
|
||||
|
||||
### แก้ไขความขัดแย้ง:
|
||||
- **Performance Requirements** vs **Uniqueness Requirements**: ต้องการความเร็วสูงแต่ต้องรับประกันความไม่ซ้ำกัน 100%
|
||||
- การตัดสินใจนี้ช่วยแก้ไขโดย: ใช้ Double-Lock Mechanism (Redis + Database) ที่ Balance ระหว่าง Performance และ Safety
|
||||
|
||||
---
|
||||
|
||||
## Context and Problem Statement
|
||||
|
||||
LCBP3-DMS ต้องสร้างเลขที่เอกสารอัตโนมัติสำหรับ Correspondence, RFA, Transmittal และ Drawing โดยเลขที่เอกสารต้อง:
|
||||
@@ -116,6 +130,76 @@ LCBP3-DMS ต้องสร้างเลขที่เอกสารอั
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Impact Analysis
|
||||
|
||||
### Affected Components (ส่วนประกอบที่ได้รับผลกระทบ)
|
||||
|
||||
| Component | Level | Impact Description | Required Action |
|
||||
|-----------|-------|-------------------|-----------------|
|
||||
| **Backend** | 🔴 High | ต้องสร้าง DocumentNumberingService และ Update ทุก Document Service | Implement numbering service |
|
||||
| **Database** | 🔴 High | เพิ่ม Tables: document_number_formats, document_number_counters, document_number_audit | Create new schema |
|
||||
| **Redis** | 🔴 High | ต้องใช้ Redis สำหรับ Distributed Locking และ Rate Limiting | Configure Redis |
|
||||
| **API** | 🟡 Medium | ต้องสร้าง Numbering API endpoints | New endpoints |
|
||||
| **Testing** | 🟡 Medium | ต้องเขียน Concurrent Tests สำหรับ Race Condition | Performance tests |
|
||||
|
||||
### Required Changes (การเปลี่ยนแปลงที่ต้องดำเนินการ)
|
||||
|
||||
#### 🔴 Critical Changes (ต้องทำทันที)
|
||||
- [ ] **Create DocumentNumberingService** - backend/src/modules/document-numbering/: สร้าง Service หลัก
|
||||
- [ ] **Implement Database Schema** - specs/03-Data-and-Storage/: เพิ่ม numbering tables
|
||||
- [ ] **Configure Redis for Locking** - docker-compose.yml: Redis configuration
|
||||
- [ ] **Update Correspondence Service** - backend/src/modules/correspondence/: ใช้ numbering service
|
||||
- [ ] **Update RFA Service** - backend/src/modules/rfa/: ใช้ numbering service
|
||||
|
||||
#### 🟡 Important Changes (ควรทำภายใน 1 สัปดาห์)
|
||||
- [ ] **Create Numbering API Endpoints** - backend/src/modules/document-numbering/controller.ts: REST API
|
||||
- [ ] **Add Rate Limiting** - backend/src/common/guards/: Prevent abuse
|
||||
- [ ] **Implement Audit Logging** - backend/src/modules/document-numbering/audit.service.ts: Track all numbers
|
||||
- [ ] **Add Error Handling** - backend/src/modules/document-numbering/: Retry logic
|
||||
|
||||
#### 🟢 Nice-to-Have (ทำถ้ามีเวลา)
|
||||
- [ ] **Create Admin UI for Numbering Config** - frontend/app/(admin)/admin/numbering/: Configuration UI
|
||||
- [ ] **Add Numbering Performance Monitoring** - backend/src/modules/document-numbering/monitoring.service.ts: Metrics
|
||||
|
||||
### Cross-Module Dependencies
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
ADR[ADR-002 Numbering] --> Corr[Correspondence Service]
|
||||
ADR --> RFA[RFA Service]
|
||||
ADR --> Trans[Transmittal Service]
|
||||
ADR --> Draw[Drawing Service]
|
||||
ADR --> DB[(Database Schema)]
|
||||
ADR --> Redis[(Redis)]
|
||||
|
||||
Corr --> ADR001[ADR-001 Workflow Engine]
|
||||
RFA --> ADR001
|
||||
Trans --> ADR001
|
||||
Draw --> ADR001
|
||||
|
||||
Redis --> ADR006[ADR-006 Redis Caching]
|
||||
DB --> ADR009[ADR-009 Migration Strategy]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Version Dependency Matrix
|
||||
|
||||
| ADR | Version | Dependency Type | Affected Version(s) | Implementation Status |
|
||||
|-----|---------|-----------------|---------------------|----------------------|
|
||||
| **ADR-002** | 1.0 | Core | v1.8.0+ | ✅ Implemented |
|
||||
| **ADR-001** | 1.0 | Used By | v1.8.0+ | ✅ Implemented |
|
||||
| **ADR-006** | 1.0 | Required | v1.8.0+ | ✅ Implemented |
|
||||
| **ADR-009** | 1.0 | Database Changes | v1.8.0+ | ✅ Implemented |
|
||||
|
||||
### Version Compatibility Rules
|
||||
|
||||
- **Minimum Version:** v1.8.0 (ADR มีผลบังคับใช้)
|
||||
- **Breaking Changes:** ไม่มี (Backward compatible)
|
||||
- **Deprecation Timeline:** ไม่มี (Mission-critical component)
|
||||
|
||||
---
|
||||
|
||||
## Implementation Details
|
||||
|
||||
### Database Schema
|
||||
@@ -925,6 +1009,26 @@ ensure:
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Review Cycle & Maintenance
|
||||
|
||||
### Review Schedule
|
||||
- **Next Review:** 2026-08-24 (6 months from last review)
|
||||
- **Review Type:** Scheduled (Core Principle Review)
|
||||
- **Reviewers:** System Architect, Database Administrator, Development Team Lead
|
||||
|
||||
### Review Checklist
|
||||
- [ ] ยังคงเป็น Core Principle หรือไม่? (Document Numbering เป็น Mission-Critical)
|
||||
- [ ] มีการเปลิยนแปลง Technology ที่กระทบหรือไม่? (New locking mechanisms, Redis alternatives)
|
||||
- [ ] มี Issue หรือ Bug ที่เกิดจาก ADR นี้หรือไม่? (Race conditions, Performance issues)
|
||||
- [ ] ต้องการ Update หรือ Deprecate หรือไม่? (New numbering formats, Performance optimization)
|
||||
|
||||
### Version History
|
||||
| Version | Date | Changes | Status |
|
||||
|---------|------|---------|--------|
|
||||
| 1.0 | 2026-02-24 | Initial version - Double-Lock Mechanism | ✅ Active |
|
||||
|
||||
---
|
||||
|
||||
## Compliance
|
||||
|
||||
เป็นไปตาม:
|
||||
|
||||
Reference in New Issue
Block a user