确认设备分享

验证状态:已源码核验、未联调(无 app 调用图);services 基线:源码归纳 @ 2026-09-14

用途与场景

受赠方接受一条收到的设备分享,是受赠方一侧的第一个动作。App「同意分享」按钮按 deviceId 发起(受赠方自己租户内的分享投影 ID,从设备列表 state=To be confirm share 的条目取得):服务端把该分享投影与发起方租户中的分享记录一并置 confirm share(写 confirmTime),设备从此在受赠方侧按已确认分享语义可用。

发起方一侧的对应动作见发起设备分享(创建 To be confirm share);确认前发起方仍可撤销,确认后受赠方可用解除退场。

App 现役依据

判定证据 内容
旧 app 文档收录记录 旧 app 文档仓在 docs/api/main-api/device/data-acquisition-device/confirmShareForPersonalSpace/ 收录本端点,属 App 既有调用面
两代分工语义 /v1/retail 第二代无 confirm 对应物(v1 分享列表只能读到待确认/已确认状态,确认动作必须回第一代端点完成)
后端持续维护迹象 确认链路与分享主链路共享同一 service 与契约测试,第一代 2026-09 仍有维护提交

端点

POST /main-service/main-api/device/data-acquisition-device/confirmShareForPersonalSpace — 受赠方接受一条收到的设备分享,是受赠方一侧的第一个动作。

端点全量事实(参数、请求/响应字段、错误码、权限点)见清单层 device · data-acquisition-device 采集设备;业务语义(wire 惯例、限频、租户声明等)见设备业务 · data-acquisition-device 采集设备

动线与完成判据

status=200data=true 表示确认完成。受赠方再次拉取设备列表,该设备 state 应变为 confirm share;发起方在设备分享记录列表可见 confirmTime 已写。

错误与边界

业务失败均为业务拒绝族,error 为异常消息原文(判定口径见错误响应差异):

error 原文 触发条件
The data collection device does not exist deviceId 在当前租户(受赠方租户)无有效投影:ID 不存在、投影已随撤销/解除/归属转移退场、或传入的是他人租户的 ID;投影更新影响 0 行时也报同错

Bean Validation 失败(deviceId 缺失)走请求校验出口(请求校验族,判定口径见错误响应差异)。

边界:

  • 源码不校验投影当前 state:对已 confirm share 的投影重复调用会再次写成功并刷新 confirmTime(幂等写覆盖时间戳)。App 侧只应对 To be confirm share 的条目展示确认按钮。
  • 自有设备(state=bind 的直接拥有投影)不是分享,无需也不应调用本端点确认。
  • 确认与发起方撤销并发时,终态以服务端先后事务为准——App 侧对确认成功后设备消失的情况应按「分享已被撤销」兜底。

调用关系与资源清理

无客户端长连接资源需要释放。确认成功后受赠方与发起方都应重新拉取各自列表刷新界面;服务端不向发起方推送实时通知。

已知缺口

未执行真实联调:确认后发起方分享记录列表的可见延迟、确认与撤销并发场景均无 App 实测佐证。