新增门禁:实现访问授权编排

This commit is contained in:
wangzhibiao committed 2026-09-16 11:21:21 +08:00
1 parent bb16b0b875
commit 20c5d494cf
22 files changed
+2306 -7

No files matched your search

@@ -215,3 +215,30 @@ flowchart TD
- `008_RUNTIME_FIRST_RUN = NOT_EXECUTED`
- `008_RUNTIME_SECOND_RUN = NOT_EXECUTED`
- `RUNTIME_MIGRATION_GATE_BEFORE_PRODUCTION = REQUIRED`
### 3.5 Wave 3A Implementation Result (业务状态/门禁期望状态/外部操作统一编排 Dry-Run - Wave 3A implemented against Mock DMS only)
- **阶段目标**:Access Authorization Orchestration Dry-Run
- **执行状态**:Wave 3A implemented against Mock DMS only
- **核心交付清单**:
1. 架构扩展迁移脚本:`RuoYi-Vue/sql/system/kingbase/009_dorm_authorization_orchestration.sql`(安全编号 009,幂等增量添加凭据类型、业务授权状态、关联操作ID与版本号列,零明文列)。
2. 实体模型扩展:`TrainDormAuth.java`(新增业务状态与凭据常量、双向状态映射、版本控制属性)。
3. 服务层编排扩展:`ITrainDormAuthService/Impl`(实现 `ensureAuthorizationForAccommodation`、`updateAuthStatusByPoller` 并植入迟到保护)。
4. 安全凭据生成器:`SecurePasswordGenerator.java`(`SecureRandom` 强随机、6 位纯数字、内存局部留存、杜绝弱密码)。
5. 统一编排器:`AccessAuthorizationOrchestrator.java`(状态驱动对账 `reconcile`,解耦业务事件时序,短事务解耦外部 HTTP,最少特权单主锁策略,调房先新后旧)。
6. 异步轮询器联动推进:`DmsOperationPoller.java`(集成授权状态联动,根据最新操作归属安全更新业务授权状态)。
7. 业务事件安全挂接:`TrainAccommodationServiceImpl.java`(分房/退宿/调房)、`EnrollmentAppServiceImpl.java`(报到确认)、`EnrollmentPlanCompletionAdapter.java`(计划结训),异常不回滚本地业务主事务。
8. 迁移契约测试:`DormAuthorizationOrchestrationMigrationContractTest.java` (4 项)。
9. 端到端编排测试:`AccessAuthorizationOrchestrationTest.java` (9 项)。
10. 业务事务独立性与安全扫描:`BusinessTransactionIndependenceTest.java` (5 项)。
- **全量构建与回归验收**:
- `ruoyi-train`: 219 tests
- `ruoyi-admin`: 32 tests
- 总计:251 tests, Failures = 0, Errors = 0, Skipped = 0,全部通过。
- Maven `clean test` 与 `clean package` 构建成功。
- 静态检查:`git diff --check` PASS。
- **环境纪律与准入门禁**:
- `LIVE_DMS_REQUEST_COUNT = 0`。
- `FRONTEND_MODIFIED = 0`,`CONTROLLER_COUNT = 0`。
- `008_RUNTIME_FIRST_RUN = NOT_EXECUTED`,`008_RUNTIME_SECOND_RUN = NOT_EXECUTED`。
- `009_RUNTIME_FIRST_RUN = NOT_EXECUTED`,`009_RUNTIME_SECOND_RUN = NOT_EXECUTED`。
- `RUNTIME_MIGRATION_GATE_BEFORE_PRODUCTION = REQUIRED`。