取餐记录可靠补传第一期变更记录

变更结论

codex/reliable-pick-meal-upload-phase1 分支完成第一期改造:取餐记录先持久化完整快照,再由带联网约束的唯一 WorkManager 工作链串行上传。Worker 等待同步结果,仅在 code=0 或现有业务终态 code=1 时删除本地记录。

基线与分支

主要变更

  1. 取餐结束先写 SQLite,成功后调度上传,移除 Activity 全局递归重试。
  2. 新增联网约束、3 分钟线性退避、APPEND 串行追加的上传调度器。
  3. Worker 改为同步串行请求,移除前台限制、异步回调和上传闹钟自循环。
  4. 记录按 pick_id 从旧到新处理,非终态错误保留并重试。
  5. 保留服务端原始业务码;data 为空不再改写成功,空响应按 IO 错误处理。
  6. 应用启动和旧版遗留闹钟统一进入 WorkManager 调度器。
  7. README 与 prompt 镜像同步更新。

涉及文件

README、测试配置、HomeActivity、Application、数据库 DAO/实现、ApiResultUtils、AlarmReceiver、AlarmUtils、上传调度器、结果策略、上传 Worker 及两组回归测试。

验证结果

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash ./gradlew \
  :app:testDebugUnitTest \
  :app:compileDebugJavaWithJavac \
  --rerun-tasks --no-daemon

结果:BUILD SUCCESSFUL in 18s;15 个 Gradle task 全部执行;5 个本地单元测试通过,0 failure、0 error。git diff --check 无空白错误。

验收覆盖

剩余风险