# 原生接收保留期设置

## 用户行为

设置 → 接收新增中断接收缓存保留期：

- 立即自动清理（首次未设置时的默认值）。
- 保留至手动清理。
- 保留 1、7 或 30 天。

界面显示原生进程确认的实际生效策略，不把偏好值当作已生效结果。支持英语、简体中文、台湾繁体中文、香港繁体中文及英语回退。相邻的接收缓存管理对话框明确按忽略保留期的手动模式盘点和确认清理。工作区导出缓存另有相邻入口，遵循独立私有存储规则。

保留期仅作用于进程意外退出后已登记的原生接收残留；正常取消和传输失败仍立即删除对应事务缓存。工作区上传、工作区导出副本和 Android 文档提供器事务分别管理。保留缓存不会给原始 LocalSend 协议增加分片续传能力。到期表示下一次维护时具备清理资格，不是精确时刻触发删除的计时器。

## 持久化与失败处理

`legnasend_receive_cache_retention_days` 使用 `0` 表示自动清理、`-1` 表示手动保留，正整数表示天数。界面提供上述五档；已有合法自定义值在 3650 天以内仍可显示。字段缺失才默认自动清理；已有值的类型或范围损坏时保守采用手动保留、显示损坏错误，并暂停自动原生清理，直到用户修复设置。

启动时先应用已保存策略，再初始化接收登记及执行启动清理。同步失败不会悄悄使用原生进程默认的立即删除策略。应用策略期间或实际生效状态未知时暂停自动原生清理；Android 提供器核对独立继续。

修改先保存再应用原生策略。保存失败不调用原生配置；应用失败尝试恢复旧偏好并查询实际原生策略。偏好恢复失败明确显示，自动原生清理继续暂停。界面提供重试并保持展示已确认的实际策略。控制器只允许一个在途操作，容器释放后的延迟完成不会重新启用清理。

## 手动维护边界

只有经过用户明确确认的接收缓存对话框使用 `inspectReceiveCacheRegistryNow` / `cleanupReceiveCacheRegistryNow`。只读盘点不删除文件。启动自动清理、通用临时缓存清理及 API 缓存维护继续使用遵守保留期的普通接口。手动操作只绕过年龄，仍检查身份、缓存头、来源和活动写入者。手动请求遇到进行中的自动清理时先等待再单独执行，不复用语义不同的结果。

## 验证

共享 Flutter 定向测试覆盖各档持久化、损坏偏好、保存和应用及恢复失败、原生回执解析、未知状态、重试、并发操作和释放。四语言组件在 360 像素及 1.4 倍文字下执行选择和错误展示。维护测试覆盖自动与手动串行及提供器独立核对。原生保留期和进程终止证据见[原生接收保留策略](NATIVE_RECEIVE_RETENTION_ZH.md)。

这些属于共享代码和桌面宿主验证，不代替 Android/iOS 真机存储验收。

## 受权远程设置

设置API现通过与界面相同的控制器返回保存值和已确认原生状态。写操作使用全局密钥设置权限、严格整数和快照版本检查，本身不执行清理；读取／失败后的恢复及离线示例见[保留策略API指南](API_RECEIVE_RETENTION_ZH.md)。
