Files
lcbp3/specs/09-history/2025-12-13-schema-v160-document-number-fixes.md
admin ec35521258
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251213:1509 Docunment Number Businee Rule not correct
2025-12-13 15:09:01 +07:00

63 lines
3.3 KiB
Markdown

# Schema v1.6.0 Migration & Document Number Fixes (2025-12-13)
## Task Summary
This session focused on completing the migration to Schema v1.6.0 (Correspondence/RFA shared PK) and resolving critical bugs in the Document Numbering system.
### Status
- **Schema Migration**: Completed (Backend & Frontend)
- **Document Numbering**:
- Preview Fixed (Recipient Code resolution)
- Creation Fixed (Source data mapping)
- Update Logic Fixed (Auto-regeneration on Draft edit)
## Walkthrough & Changes
### 1. Correspondence Module
- **New Entity**: `CorrespondenceRecipient` to handle multiple recipients (TO/CC).
- **Entity Update**: `Correspondence` now has a `recipients` relation.
- **Entity Update**: `CorrespondenceRevision` renamed `title` to `subject`, added `body`, `remarks`, `dueDate`, `schemaVersion`.
- **Service Update**: `create` method now saves recipients and maps new revision fields.
- **DTO Update**: `CreateCorrespondenceDto` updated to support proper fields.
### 2. RFA Module
- **Shared Primary Key**: `Rfa` entity now shares PK with `Correspondence`.
- **Revision Update**: `RfaRevision` removed `correspondenceId` (access via `rfa.correspondence.id`), renamed `title` to `subject`, added new fields.
- **Item Update**: `RfaItem` FK column renamed to `rfa_revision_id`.
- **Service Update**: Only `RfaService` logic updated to handle shared PK and new field mappings. `findAll` query updated to join via `rfa.correspondence`.
### 3. Frontend Adaptation
- **Type Definitions**: Updated `CorrespondenceRevision` and `RFA` types to match schema v1.6.0.
- **Form Components**:
- `CorrespondenceForm`: Renamed `title` to `subject`, added `body`, `remarks`, `dueDate`.
- `RFAForm`: Renamed `title` to `subject`, added `body`, `remarks`.
- **List & Detail Views**: Updated accessor keys (`title` -> `subject`) and added display sections for new fields (Body, Remarks) in Detail views.
- **DTOs**: Updated `CreateCorrespondenceDto` and `CreateRFADto` to include new fields.
## Bug Fixes & Refinements (Session 2)
### Document Number Preview
- **Issue**: Preview showed `--` for recipient code.
- **Fix**:
- Implemented `customTokens` support in `DocumentNumberingService`.
- updated `CorrespondenceService.previewNextNumber` to manually resolve recipient code from `OrganizationRepository`.
### Correspondence Creation
- **Issue**: Generated document number used incorrect placeholder.
- **Fix**: Updated `create` method to extract recipient from `recipients` array instead of legacy `details` field.
### Edit Page Loading
- **Issue**: "Failed to load" error on Edit page.
- **Fix**: Corrected TypeORM relation path in `CorrespondenceService.findOne` from `recipients.organization` to properties `recipients.recipientOrganization`.
### Document Number Auto-Update
- **Feature**: Automatically regenerate document number when editing a Draft.
- **Implementation**: logic added to `update` method to re-calculate number if `type`, `discipline`, `project`, or `recipient` changes.
## Verification Results
- **Backend Tests**: `correspondence.service.spec.ts` passed.
- **Frontend Tests**: All 9 suites (113 tests) passed.
- **Manual Verification**: Verified Preview, Creation, and Edit flows.
## Future Tasks
- [ ] **Data Cleanup**: Migration script to fix existing document numbers with missing recipient codes (e.g., `คคง.--0001-2568` -> `คคง.-XYZ-0001-2568`).