新增住宿:对齐住宿与门禁授权领域模型
This commit is contained in:
1 parent
cc911186aa
commit
5de1d2a142
21 files changed
+3345
-231
No files matched your search
@@ -101,3 +101,26 @@
|
||||
1. **第一步**:重构修复 Java 实体类 `TrainDormAuth.java`,彻底移除已弃用的 `student_id`, `plan_id`, `dorm_id` 字段,使其与已存在的 Kingbase 物理表字段完全对齐。
|
||||
2. **第二步**:创建 `train_external_resource_mapping` 与 `train_external_operation` 迁移脚本(遵循系统标准 Liquibase/Flyway 规范)。
|
||||
3. **第三步**:通过 Spring Data / MyBatis-Plus 完成三表关联映射。
|
||||
|
||||
### 4.1 Wave 0 Implementation Result (第一步已正式交付)
|
||||
- **已完成事项**:
|
||||
1. 重构并修复 `TrainDormAuth.java`,彻底废弃了向 `train_dorm_auth` 写入 `student_id`, `plan_id`, `dorm_id`, `bed_no`, `create_user` 的历史假设。
|
||||
2. 补齐 `TrainAccommodation.java`、`TrainAccommodationMapper.java`、`TrainAccommodationMapper.xml`、`ITrainAccommodationService` 以及 `TrainAccommodationServiceImpl`,完全对齐 V2 生产物理结构。
|
||||
3. 严格禁止在 Wave 0 中引入任何 DMS 物理字段(如 `lock_id`, `place_id`, `operation_id`),保持 Vendor-Neutral 纯净业务边界。
|
||||
4. 生产 Migration 检查:`MIGRATION_REQUIRED = NO`,生产数据库零写入、零变更。
|
||||
|
||||
### 4.2 Wave 0.1 Accommodation History Migration (006 迁移方案与基数冻结)
|
||||
- **领域基数与物理约束演进**:
|
||||
- **历史模型**:`Enrollment 1:N Accommodation History`,允许学员由于调房等产生多条住宿历史。
|
||||
- **唯一性收敛**:`Enrollment 1:0..1 Active Accommodation`,原全局唯一约束 `UNIQUE(enrollment_id)` 阻碍了历史留痕,演进为针对有效状态(`accommodation_status IN (0, 1)`)的局部唯一索引。
|
||||
- **授权关联**:`Accommodation 1:0..1 DoorAuthorization`,门禁授权强引用住宿实体。
|
||||
- **时间范围特性**:`TIME_RANGE_SUPPORT = LIMITED`,当前物理表仅有 `assigned_time`,未扩展起止时间列。
|
||||
- **006 Migration 脚本设计与验证**:
|
||||
- 文件路径:`RuoYi-Vue/sql/system/kingbase/006_accommodation_history_constraint.sql`
|
||||
- 安全编号:`006`(避免与 R.2 占用的 004/005 冲突)。
|
||||
- 执行安全机制:
|
||||
1. 前置重复数据检查:存在并发违规 active 记录时直接 `RAISE EXCEPTION` 阻断。
|
||||
2. 严格条件 DROP:仅当原约束 `uq_accommodation_enroll` 确认为 `UNIQUE (enrollment_id)` 时执行 drop。
|
||||
3. 创建局部唯一索引:`CREATE UNIQUE INDEX IF NOT EXISTS uq_accommodation_enroll_active ON train_accommodation (enrollment_id) WHERE accommodation_status IN (0, 1);`
|
||||
4. 幂等防护:重复执行幂等安全。
|
||||
- 生产执行纪律:本脚本已在单元/契约测试中完成全量静态与逻辑校验,**禁止在生产库执行**。
|
||||
Reference in new issue
Block a user