5.5 KiB
5.5 KiB
KMS 钥匙柜适配器 — 任务清单
基准文档:
doc/设计文档/KMS钥匙柜适配器详细设计文档.md分支: gateway-dev 原则: 严格按照设计文档执行,不凭空添加。网关/Vol.Pro 改动放倒数第二步,联调放最后。
Phase K0: 项目骨架(预计 15min)
K0.1 创建适配器项目
- 在
gateway/src/下执行dotnet new classlib -n IntegrationGateway.Adapters.Kms -f net8.0 - 删除自动生成的
Class1.cs - 添加项目引用:
dotnet add reference ../IntegrationGateway.Core/IntegrationGateway.Core.csproj - 将项目加入解决方案:
dotnet sln add
K0.2 Host 引用适配器
dotnet add Host reference Adapters.Kms
K0.3 编译验证
dotnet build→ 0 错误
K0 提交点:
PhaseK0_scaffold — Kms适配器项目骨架就绪
Phase K1: KmsModels — 数据模型(预计 1h)
K1.1 认证模型
- 创建
KmsModels.cs KmsTokenResponse { Code, Token, Msg }
K1.2 第三方接口响应模型(2.18.X)
KmsOpenerListResponse { Code, Msg, Rows }KmsLocker { LockerId, LockerName, LockerCode, LockholeList }KmsLockhole { LockholeSort, OpenerId, OpenerName, OpenerType, OpenerState }KmsWarningListResponse { Code, Msg, Total, Rows }KmsWarning { Uuid, LockerName, LockholeSort, OpenerName, Type, WarningTime, Remark, StaffName }KmsRecordListResponse { Code, Msg, Total, Rows }KmsRecord { Uuid, LockerName, LockholeSort, OpenerName, StaffName, BorrowTime, ReturnTime, Type }
K1.3 编译验证
dotnet build→ 0 错误
K1 提交点:
PhaseK1_models — KmsModels.cs 完整定义全部响应 DTO
Phase K2: KmsAuthHelper — 认证(预计 30min)
K2.1 创建 KmsAuthHelper.cs
- 构造函数:接收
HttpClient,baseUrl,clientId,clientSecret - 属性:
_token(string?),_tokenExpiry(DateTime)
K2.2 GetTokenAsync
- POST
/prod-api/getToken?clientId=xx&clientSecret=yy - 校验
Code == 200 - 缓存 Token,过期时间 =
UtcNow.AddMinutes(25)(30 分钟效期,5 分钟余量)
K2.3 GetAuthenticatedClientAsync
- 创建
HttpClient,设置Authorization: Bearer {token} - Invalidate() →
_token = null
K2.4 编译验证
dotnet build→ 0 错误
K2 提交点:
PhaseK2_auth — Bearer Token 认证就绪
Phase K3: KmsAdapter 核心方法(预计 1.5h)
K3.1 类定义
public class KmsAdapter : IHasFlatDevices, IHasAlarms- 属性:
AdapterCode,DisplayName,Capabilities
K3.2 HealthCheckAsync(2.18.1)
- GET
/prod-api/heartBeat - 异常捕获返回 false + Console.Error 打日志
K3.3 GetDevicesAsync(2.18.4)
- POST
/prod-api/getOpenerList(body{}) - 遍历柜体/锁孔 → 映射为 StandardDevice
- 父设备
IsParent=是, 子设备ParentSourceId=locker_{id}
K3.4 GetAlarmsAsync(2.18.7)
- POST
/prod-api/getWarningList - 映射 KmsWarning → StandardAlarm
- AlarmId=uuid, Status=Type==1?"未确认":"已结束"
K3.5 ConfirmAlarmAsync / EndAlarmAsync
- Confirm 调标准接口;End 留空实现
K3.6 编译验证
dotnet build→ 0 错误
K3 提交点:
PhaseK3_adapter_core — 核心4方法就绪
Phase K4: 扩展方法(预计 1h)
K4.1 借还/授权/员工/登录
- GetBorrowRecordsAsync(2.18.6)
- GetPermissionListAsync(2.18.5)
- BatchSyncStaffAsync(2.18.3)
- BatchDeleteStaffAsync(2.18.2)
- RemoteAuthorizeAsync(2.4.3)
- ThirdPlatLoginAsync(2.18.8)
K4.2 编译验证
dotnet build→ 0 错误
K4 提交点:
PhaseK4_adapter_ext — 6个扩展方法就绪
Phase K5: 配置与注册(预计 15min)
K5.1 KmsConfig POCO
- 在 Program.cs 同级加 class,属性:
InstanceName, BaseUrl, ClientId, ClientSecret
K5.2 appsettings.json
- 新增 KMS 数组配置段
K5.3 Program.cs 注册
var kmsList = app.Configuration.GetSection("KMS").Get<List<KmsConfig>>() ?? new();- foreach 注册
KmsAdapter("KMS:{InstanceName}", ...)
K5 提交点:
PhaseK5_config — 配置+注册就绪
Phase K6: 编译与自测(预计 15min)
K6.1 编译验证
dotnet build→ 0 错误
K6 提交点:
PhaseK6_build — 全量编译通过
Phase K7: Vol.Pro 端配套(预计 1h)
K7.1 字典
- 管理端设备种类字典 ← "智能钥匙柜" + "钥匙位"
K7.2 前端按钮
base_device.vue操作列:门禁设备 → [开门] [授权] 按钮
K7 提交点:
PhaseK7_volpro — 字典+前端就绪
Phase K8: 联调验证(预计 3h,需 KMS 环境)
K8.1 认证
- 网关启动 → KmsAdapter.InitializeAsync 成功
K8.2 设备/告警/记录
- /api/gateway/devices?adapter=KMS:main → 返回柜体+锁孔
- /api/gateway/alarms/KMS:main → 返回告警列表
- /api/gateway/control/KMS:main → 远程开门
K9: 联调文档记录
- 记录异常接口到 KMS_联调笔记.txt
K8 提交点:
PhaseK8_integration — 全链路联调通过
| Phase | 内容 | 文件 | 预计 |
|---|---|---|---|
| K0 | 项目骨架 | 2 | 15min |
| K1 | 全部 DTO | 1 | 1h |
| K2 | AuthHelper | 1 | 30min |
| K3 | 核心方法 | 1 | 1.5h |
| K4 | 扩展方法 | 1 | 1h |
| K5 | 配置注册 | 3 | 15min |
| K6 | 编译 | — | 15min |
| K7 | VolPro配套 | 2 | 1h |
| K8 | 联调 | — | 3h |
| 合计 | — | 11 | ~9h |