查询文件按日存在性(list-file-existence)

验证状态:存在关键缺口,不可作为完整契约发布。Web 发布与应答消费已源码核验;采集服务器是 server/{采集服务器 deviceNo}/data/v1/list-file-existence 的最终消费者,其源码不在本工作区,应答权威 schema、错误形态与完成语义缺证。 适用基线:源码归纳 @ 2026-09-14

用途与场景

回放设备页(($lng).$spaceId.playback.$deviceNo)按所选月份查询目标设备"哪些天有文件、每天多少个",写入 dayFileTotalMap 驱动日历控件:无文件的日期禁用、有文件的日期显示角标。查询窗口固定为所选月份月末往前 180 天。本页是回放域该 topic 的唯一操作正本,覆盖 (视频回放)与 (最近记录)两个调用点;同族文件查询见文件清单 list-file-info分类总数 list-file-category-total

使用位置

页面/功能 角色或空间分支
视频回放设备页按日查询文件存在性 登录用户;视频回放设备页
最近记录设备页按日查询(payload 与消费同构) 登录用户;最近记录设备页
消费:{date,num} 写入 dayFileTotalMap,驱动日历禁用与角标

对应 inventory operationId:mqtt-listfileexistencefn-server-var-data-v1-list-file-existence-5fda0d46

端点

MQTT 请求 server/{serverDeviceNo}/data/v1/list-file-existence(Web → Broker → 采集服务器直连,应答按 reply topic 回流;中心网关不消费)— 按所选月份查询目标设备「哪些天有文件、每天多少个」(查询窗口为月末往前 180 天)。

通道口径:该 topic 不在中心消费/发布点清单内(网关默认订阅清单无 server/+/data/#,见MQTT 主题清单 · 服务端订阅面);应答回流、凭据与 QoS 等 wire 约定见MQTT 连接与消息边界

请求形态 {id, reply, replyNumberMax:3, replyInterval:3, params:{deviceNo, takenAtStrRangeStart, takenAtStrRangeEnd}};Web 声明 3 帧应答上限,采集服务器是否分帧缺证。

动线与完成判据

层级 判据
发布完成 publishAsync Promise 成功;仅代表 Broker 受理
应答到达 reply topic 收到应答且 data 可迭代,dayFileTotalMap 更新
空结果 data 缺失 → 地图不更新(整月无文件表现为全部日期禁用)
超时 无内置请求超时;切换月份/设备(100ms 节流)触发重发,无失败终态

错误与边界

  • 本操作不经中心 HTTP 出口,错误响应差异总表的 HTTP 条目不适用;采集服务器业务错误形态缺证(待核验)。
  • 发布失败被 Promise 链记录后丢弃,无重试;断线由 MQTT 自动重连补偿(clean)。
  • 设备未绑定采集服务器或 IoT 离线时不发送;页面另行展示"未绑定采集服务器 / 采集服务器 IoT 服务不在线"告警。
  • 180 天窗口与 YYYY-MM-DD 格式是 Web 构造值;采集服务器按其它边界解释时的行为缺证。

调用关系与资源清理

已知缺口

  1. 采集服务器是最终消费者:应答权威 schema、日期边界(含/不含 takenAtStrRangeEnd)、分帧语义与错误形态缺证。
  2. Broker ACL(server/{no}/data/v1/#)待部署核验;未执行真实联调。