LegnaSend
开发文档English

接收端确认的来源清理回执

实施状态

源码实现已写入;按用户要求,自动测试、静态分析、构建及运行验收均留待用户回来后执行。本次不新增任何平台验收结论。既有可选来源结束扩展及 LocalSend 原始传送协议保持不变。

产品行为

  • 来源结束通知保留接收端返回的回执编号、实际移除临时文件数和逻辑字节数,不再仅将结果缩减成状态后丢弃数量。
  • 只有存在含数量的接收端回执时,列表才显示紧凑的数量摘要。点击通知在页内对话框显示状态、精确逻辑字节数及可选取的回执编号。
  • 对话框明确区分移除文件的逻辑大小与实际释放磁盘空间的测量值。数量描述临时文件,不是已发布的目标文件。
  • 已发布文件仍明确标为保留。接收端保留已发布文件、同时确认临时文件清理时,只显示临时文件的数量。
  • 待通知、未知、过期、不支持、共享来源、需授权和忙碌状态不生成虚构的零数量。旧终态通知没有回执也继续加载,详情明确表示缺少数量回执。
  • 包含英文、简体中文和繁体中文文案;香港语言沿用既有通知语言助手的繁体文案。

持久化与信息边界

私有第一版通知日志新增可选 cleanup 对象,既有必填字段不变:

json
{
  "receiptId": "11111111-1111-4111-8111-111111111111",
  "removedFiles": 1,
  "unlinkedBytes": 4096
}

以上仅为结构示例,不是实测证据。来源结束结果本来就包含这些值;实现不使用文件大小或下载进度推算清理数量,也不为缺少字段的旧记录补零。

只有 removed 与 publishedPreserved 状态接受该对象。回执编号为规范的第四版 UUID;文件数为零至二的整数,与既有接收端单来源账本一致。字节数非负;零文件必须对应零字节。终态结果的回执格式错误时,清理保持未确认,不发布错误证明。旧回调仍受既有通知版本检查约束。新授权和重试转换会清除旧回执;迟到的本地完成通知保留已经持久化的接收端回执。

公开原生任务通知仅投影 receiptId、removedFiles、unlinkedBytes,这些值没有清理授权能力。授权、令牌、续传键、路径、路线信息继续保持私有。公开嵌套回执为不可变投影,通知条数和编码后响应体上限继续生效。

接口兼容

GET /native-tasks/source-end 与重试响应可以带有可选 cleanup。服务端严格检查对象字段和终态,拒绝额外字段及敏感字段。旧通知不带 cleanup 仍然有效。端点、请求必填字段、权限范围及原始传送格式不变。

Rust OpenAPI 源码与 docs/api 下的四份快照已进行源码和纯数据同步,未调用依赖测试执行的导出器。软件内离线文档由主批次统一同步。

待验证

  • 实际清理回执保存后重启日志,确认数量完全一致且没有授权信息泄露。
  • 兼容没有回执字段的第一版日志及公开响应,包括旧终态通知。
  • 验证格式错误、结果状态不匹配、迟到回调和日志写入结果未知的分支。
  • 确认保留已发布文件的结果不会被展示成已删除目标文件,并区分真实零数量回执与没有回执。
  • 核对 OpenAPI 快照、公开响应严格校验、响应大小限制和重试请求重放。
  • 检查页内详情、编号选取、窄屏、大字体与四个支持的语言标签。
  • 执行真实接收端清理,对照已移除临时文件的逻辑大小核对回执;如需物理空间数值,另行测量。