接收端确认的来源清理回执
实施状态
源码实现已写入;按用户要求,自动测试、静态分析、构建及运行验收均留待用户回来后执行。本次不新增任何平台验收结论。既有可选来源结束扩展及 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 快照、公开响应严格校验、响应大小限制和重试请求重放。
- 检查页内详情、编号选取、窄屏、大字体与四个支持的语言标签。
- 执行真实接收端清理,对照已移除临时文件的逻辑大小核对回执;如需物理空间数值,另行测量。