251202:0000
This commit is contained in:
@@ -15,37 +15,41 @@ related:
|
||||
|
||||
---
|
||||
|
||||
## 3.11.1. วัตถุประสงค์:
|
||||
## 3.11.1. วัตถุประสงค์
|
||||
|
||||
- ระบบต้องสามารถสร้างเลขที่เอกสาร (Running Number) ได้โดยอัตโนมัติและยืดหยุ่นสูง
|
||||
- ระบต้องสามารถกำหนด รูปแบบ(template) เลขที่เอกสารได้ สำหรับแต่ละโครงการ, ชนิดเอกสาร, ประเภทเอกสาร
|
||||
|
||||
## 3.11.2. Logic การนับเลข (Counter Logic):
|
||||
## 3.11.2. Logic การนับเลข (Counter Logic)
|
||||
|
||||
- การนับเลขจะต้องรองรับการแยกตาม Key ที่ซับซ้อนขึ้น ตามแต่ละ รูปแบบ(template) ได้
|
||||
|
||||
## 3.11.3. Format Template:
|
||||
## 3.11.3. Format Template
|
||||
|
||||
- รองรับการกำหนดรูปแบบด้วย Token Replacement เช่น:
|
||||
- transmittal to owner: คคง.-สคฉ.3-03-21-0117-2568
|
||||
- other transmittal: ผรม.2-คคง.-0117-2568
|
||||
- LCBP3-C2-RFI-ROW-0029-A
|
||||
- Correspondence type LETTEE คคง.-สคฉ.3-0985-2568
|
||||
- รองรับการกำหนดรูปแบบด้วย Token Replacement
|
||||
- transmittal to owner:
|
||||
- {ORG}-{ORG}-{TYPE}-{SEQ:4}-{YEAR B.D.} -> คคง.-สคฉ.3-03-21-0117-2568
|
||||
- other transmittal:
|
||||
- {ORG}-{ORG}-{TYPE}-{SEQ:4}-{YEAR B.D.} -> ผรม.2-คคง.-0117-2568
|
||||
- RFA:
|
||||
- {PROJECT}-{ORG}-{TYPE}-{DISCIPLINE}-{SEQ:4}-{REV} -> LCBP3-C2-RFI-ROW-0029-A
|
||||
- Correspondence type LETTER:
|
||||
- {ORG}-{ORG}-{TYPE}-{SEQ:4}-{YEAR B.D.} -> คคง.-สคฉ.3-0985-2568
|
||||
- Correspondence รองรับ Token: {ORG}-{ORG}-{TYPE}-{SEQ:4}-{YEAR B.D.} -> คคง.-สคฉ.3-STR-0001-2568
|
||||
- RFA รองรับ Token: {PROJECT}-{ORG}-{TYPE}-{DISCIPLINE}-{SEQ:4}-{REV} -> TEAM-RFA-STR-0001-A
|
||||
- Transmittal รองรับ Token: {PROJECT}-{ORG}-{TYPE}-{DISCIPLINE}-{SEQ:4}-{REV} -> TEAM-TR-STR-0001-A
|
||||
|
||||
## 3.11.4. Transmittal Logic:
|
||||
## 3.11.4. Transmittal Logic
|
||||
|
||||
- รองรับเงื่อนไขพิเศษสำหรับ Transmittal ที่เลขอาจเปลี่ยนตามผู้รับ (To Owner vs To Contractor)
|
||||
|
||||
## 3.11.5. กลไกความปลอดภัย:
|
||||
## 3.11.5. กลไกความปลอดภัย
|
||||
|
||||
- ยังคงใช้ Redis Distributed Lock และ Optimistic Locking เพื่อป้องกันเลขซ้ำหรือข้าม
|
||||
|
||||
## 3.11.6. ต้องมี retry mechanism และ fallback strategy เมื่อการ generate เลขที่เอกสารล้มเหลว
|
||||
|
||||
## 3.11.7. Fallback Logic (เพิ่ม):
|
||||
## 3.11.7. Fallback Logic (เพิ่ม)
|
||||
|
||||
- กรณีที่เอกสารประเภทนั้นไม่มี discipline_id หรือ sub_type_id (เป็นค่า NULL หรือไม่ระบุ) ให้ระบบใช้ค่า Default (เช่น 0) ในการจัดกลุ่ม Counter เพื่อป้องกัน Error และรับประกันความถูกต้องของ Running Number (Uniqueness Guarantee)
|
||||
- Scenario 1: Redis Unavailable
|
||||
|
||||
Reference in New Issue
Block a user