Files
railwaysystem/docs/development/dms-r3/14_decision_summary.md
T

109 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 14 DMS 门禁集成审计与设计决策一页纸总结 (Decision Summary)
> **面向对象**:项目负责人、架构指导老师、业务决策评审委员会
> **核心宗旨**:以最短篇幅、最清晰视角,讲透“现状、能力、接入边界、推荐架构与实施规划”。
---
## 1. 当前系统有什么?(Current RailwaySystem Assets)
1. **业务与数据基线**:
- 当前生产分支基于 `adcf930e`,已完成 V2 数据库结构迁移。
- 物理表层:`train_dormitory_info`(宿舍楼栋/房间台账)、`train_accommodation`(学员参训住宿分配事实表)、`train_dorm_auth`(门禁授权表,外键绑定 `accommodation_id`)已在 Kingbase 物理库建表。
- 业务逻辑层:已具备完整的培训计划编排、学员报到核验、宿舍入住分配与床位容量实时统计能力。
2. **本地模型漂移与前置对齐要求 (`LOCAL_DOMAIN_ALIGNMENT_REQUIRED = YES`)**:
- **`train_accommodation`**:DB 物理表已建,但 Java 层尚无对应的实体类、Mapper 与业务 Service,未形成完整业务层。
- **`train_dorm_auth`**:DB 已升级为以 `accommodation_id` 为外键的 V2 结构,但 Java 实体类与 XML Mapper 仍残留 V1 字段(`student_id`, `plan_id`, `dorm_id`)。
- **决策红线**:在真正编写外部 DMS Adapter 之前,**必须在 Wave 0 优先完成本地住宿与门禁授权领域模型对齐**,严禁将外部适配器直接架设在漂移模型上。
---
## 2. DMS 平台能提供什么?(DMS IoT Platform Capabilities)
外部 DMS 智能门锁平台(`https://dms.dmsiot.com`)具备完整的 RESTful 接口体系:
1. **楼栋-楼层-房间-门锁全层级资产查询**(可精确匹配房间获取 `placeId`,支持一房多锁)。
2. **多模态电子钥匙下发能力**:
- **在线限时密码 (Online Password)**:系统可生成 4~8 位纯数字密码(Pilot 建议采用 6 位限时密码),指定起止有效时间,支持远程主动注销。
- **在线实体芯片卡 (Online Card)**:支持将学员 IC/M1 卡按小端十六进制编码下发至锁具,支持远程主动注销。
- **二维码/手机钥匙 (QR Key)**:端点已定义 (`POST /rest/doorlock/qrcode/create` 与 `POST /rest/qrcode/delete`),分类为 `DOCUMENTED`,但返回体存在数据污染且无具体二维码载荷,适用性归为 `NEEDS_BUSINESS_CONFIRMATION`。
3. **低功耗异步执行与对账体系**:门锁基于电池无线通信,下发指令后返回 `operationId`,要求 10 秒后通过接口查询终态。
4. **设备运行指标**:提供门锁电池电量、信号强度及门锁开门记录流水拉取。
---
## 3. 一期建议先接什么?暂时不接什么?(Scope Boundary)
```
+-------------------------------------------------------------------------------+
| 一期重点纳入 (P0 / P1) |
| 1. 认证鉴权: Token 内存单飞排他锁缓存 + 滑动刷新 + 401 单次重试自愈 |
| 2. 房源映射: 本地宿舍与 DMS placeId / lockId 的预绑定持久化 (支持一房多锁) |
| 3. 首选凭据: 【在线限时密码】(零硬件与发卡器依赖, 支持4~8位/推荐6位, 随时主动撤销) |
| 4. 异步对账: 后台调度器 10 秒后异步轮询 operationId,消除 HTTP 线程阻塞 |
| 5. 换房补偿: 严格遵循"先发新房权限、确认生效后再撤旧房"原则,避免学员无处可住 |
| 6. 结训撤权: 培训结束主动派发 Revoke 指令,同时以 validUntil 作为有效期边界兜底 |
| 7. 设备巡检: 门锁电量与信号查询 (P1),辅助宿管员发现低电量设备 |
+-------------------------------------------------------------------------------+
▲
【严格划清边界】
▼
+-------------------------------------------------------------------------------+
| 一期明确排除 (P2 / Out of Scope / Needs Confirmation) |
| 1. 取电开关全套接口 (P2): 涉及强电改造,与学员核心学籍住宿无关,暂缓接入 |
| 2. 远程网络开锁 (P2): 属于高危主动开门操作,一期严格封存,仅设计受控两票制应急方案 |
| 3. 二维码钥匙 (Needs Biz Confirm): 接口已文档化但载荷污染,一期不作首选方案 |
| 4. 离线密码与离线发卡 (Out of Scope): 缺乏可靠远程主动撤销机制,增加现场运维负担 |
+-------------------------------------------------------------------------------+
```
---
## 4. 需要向甲方与业务负责人确认的核心问题 (Blocking Decisions)
1. **下发触发时机 (Q-BLK-03)**:
- *推荐意见*:**学员在现场完成《报到核验》后自动触发门禁下发**。确保人已到校才给钥匙,杜绝未报到人员提前进房。
2. **首期钥匙类型 (Q-BLK-02)**:
- *推荐意见*:首选采用**系统派发 6 位在线限时密码**(学员移动端个人中心受控查看);若后续统一下发实体卡,可平滑启用在线卡片模式。
3. **主数据权威归属 (Q-NON-01)**:
- *推荐意见*:**坚决以 RailwaySystem 作为住宿与房间主数据**,DMS 仅作为外部执行端,严禁让 DMS 状态覆盖本地系统。
4. **现场网络连通性与沙箱 (Q-BLK-01 & Q-BLK-05)**:
- 生产环境机房是否允许访问公网 `dms.dmsiot.com`?供应商必须提供包含测试网关与实验台门锁的**独立联调测试沙箱**。
5. **设备离线时 `validUntil` 过期语义 (Q-BLK-06)**:
- 门锁离线断网时,到达 `validUntil` 是否由锁端本地时钟强制失效?需供应商提供硬件保证级别说明。
---
## 5. 推荐技术架构设计
```
[前端 Accommodation / 个人中心]
│
▼
[业务领域层: 住宿分配 / 换房补偿 / 报到联动] <--- 绝对 Source of Truth
│
▼ (通过强类型 DTO,完全屏蔽外部厂商细节)
[中立网关接口: DoorAccessGateway (grant / revoke / query)]
│
▼ (SPI 模式)
[DMS 集成适配器: DmsDoorAccessGateway]
├── DmsTokenManager: 进程级单飞排他锁 (防并发覆盖踩踏)
├── 细分 HTTP 客户端: PlaceClient / DoorLockClient / KeyClient / OpClient
└── DmsOperationPoller: 后台 10 秒对账调度器 (解除 HTTP 线程阻塞)
│
▼ (HTTPS / Cookie 传递 token)
[外部 DMS 物联网平台: https://dms.dmsiot.com]
```
---
## 6. 后续 R.3B 四阶段推进路线图 (Four Waves, 约 15~16 人天)
1. **Wave 0: Local Domain Alignment (本地领域模型对齐,3天)**:
- 实现 `TrainAccommodation` Java 实体/Mapper/Service;升级并清洗 `TrainDormAuth` 对齐 V2 数据库;确立住宿事实与门禁授权的清晰边界。
2. **Wave 1: External Mapping & Operation Persistence (外部映射与持久化,2天)**:
- 创建 `train_external_resource_mapping` 与 `train_external_operation` 物理表及 Migration 脚本;落地双层状态机模型。
3. **Wave 2: DMS Adapter & Mock Tests (DMS 适配器与离线仿真,5天)**:
- 配置与环境变量绑定;`DmsTokenManager` 单飞排他锁并发控制;细分 HTTP 客户端;在线密码/卡片适配器;10 秒轮询调度器;WireMock 22 项单测全覆盖。
4. **Wave 3: Business Orchestration & UI & Sandbox (业务编排、界面与现场验收,5~6天)**:
- 报到联动授权下发;“先发新房后撤旧房”换房补偿;退训/结训撤权;管理端门禁综合视图;学员端 30 秒倒计时密码受控查看;现场实验台沙箱 E2E 闭环验收。