63 lines
3.3 KiB
Markdown
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`).
|