SuperAPI AI 工具集

mirror-local-state-to-a-remote-account

编程与开发

查看项目

更新于 10-17 16:15

技能介绍

这是一份面向 Kotlin 开发者的设计约定说明,主题是“把本地标记镜像到远程账号”。它以一个“关注/标记”功能为例,讨论一个开关在两端边界上的行为,以及单条同步调用允许返回什么。

用途:帮助开发者在实现“本地操作 + 可选远程镜像”类功能时,明确开关语义、失败处理和用户体验边界。

主要能力与约定:

  1. 接口约定。repository 提供 setFollowed(recordId, followed): Boolean?,本地记录标记,开启镜像时同步到账号。返回 null 表示镜像关闭或未尝试,true 表示账号已更新,false 表示调用失败。无论哪种情况,本地标记都会写入。另有 backfillFollowedToAccount(): Flow<Pair<Int, Int>> 用于回填已标记记录并发出(成功数, 尝试数)。
  2. 开关语义不对称。开启开关是对整个集合的声明,需要回填所有已标记记录;关闭开关不是撤销请求,不应把此前已镜像的记录从远程取消标记。
  3. 写入顺序:先无条件写本地,不因远程失败回滚;再读取设置,最后尝试镜像。本地写入不能依赖网络成功。
  4. 三态返回。不能用 Boolean 把“未尝试”折叠为“失败”,否则关闭镜像的用户每次操作都会看到失败提示。调用方应处理 null -> 分支。
  5. 只对用户正在等待的路径报告结果。单条调用可提示成功或失败;回填在设置开关背后运行、记录数无上限,不应逐条或最终弹提示。提示措辞应说明是账号同步结果,而非本地动作失败。
  6. 回填串行执行,避免并发写他人账号导致限流或会话被挑战。若需提速,应使用有界并发与退避,而不是 async。
  7. 回填输入是“所有已标记记录”,需分页读取本地集合,而不是一次查询。
  8. 开关依赖登录会话,登出时该行不可用,因此必须自动关闭;回调需清除已存储标志,登出路径也要清除。
  9. 单条镜像失败只记录不重试,因为回填是修复机制;应保留可再次触发回填的入口。
  10. 远程调用用一个带布尔参数的私有辅助函数封装设置与清除,避免两条路径漏掉错误处理。

使用方式:页面给出 Kotlin 接口与示例代码,并建议用 grep 检查三态返回是否被正确消费、回填是否只在启用路径调用、设置行是否提供清除回调。验证行为包括五种场景:关闭镜像时本地标记且无提示;开启镜像但断网时本地标记并报告账号失败;先关闭镜像标记多条再开启,全部回填且无逐条提示;关闭开关后远程记录保留;开启开关时登出,存储值应变为关闭。

适用场景:本地优先、可选同步到远程账号的标记/关注类功能;需要处理离线、登录态变化和批量回填的客户端同步逻辑。

限制:页面主要面向 Kotlin 与 Android 风格设置界面,未提供完整项目代码;具体平台、收费和效果暂未提供。