tasks.md 3.8 KB

Tasks: 可切换的原生业务推送通道

Input: specs/033-native-push-routing/spec.md、plan.md

Execution: 当前 test-202609v2 分支;不创建新分支。每项先写并运行失败测试,再实现、验证、核对暂存范围并提交。默认模式始终为 uni。

Phase 1: 默认通道与配置(US1)

  • T001 [US1] 在 ruoyi-admin/src/main/java/com/ruoyi/app/push/ 定义接收端枚举、business-push 配置及原生模式启动校验;ruoyi-admin/src/main/resources/application.yml 仅设置默认 uni 与非秘密占位符。
  • T002 [US1] 在 ruoyi-admin/src/test/java/com/ruoyi/app/push/BusinessPushPropertiesTest.java 覆盖默认启动、原生凭据缺失/无效和三端配置。

Phase 2: 原生发送器(US2、US3)

  • T003 [US2] 在 FcmPushSender.java 实现三命名 FirebaseApp 和按接收端 FCM 发送;在 FcmPushSenderTest.java 验证项目隔离、payload、失效错误与无敏感日志。
  • T004 [US3] 在 ApnsPushSender.java 实现三端证书型 APNs HTTP/2 发送及环境选择;在 ApnsPushSenderTest.java 验证 topic、payload、证书错误与响应分类。

Phase 3: 统一路由与业务集成(US1–US4)

  • T005 [US1–US4] 在 BusinessPushService.java 实现 uni/native 选择、当前账号 token 读取、地址判定及异常隔离;在 BusinessPushServiceTest.java 覆盖默认 uni、六种原生组合及不自动回退。
  • T006 [US1–US4] 修改 PayPush.java 的普通业务包装方法委托 T005;保留低层 uniCloud 方法供 uni 模式及排除路径使用,验证消息中心不重复入库。
  • T007 [US2–US4] 将在用普通业务直连与 CID 前置过滤迁移到统一路由:MerchantNotificationRouter.java、LinePayOrderNotificationService.java、OmgPaymentNotifyService.java 和当前有效订单 Controller;同步更新相关测试。门店订单仍是分管账号优先、无符合条件分管账号时主账号兜底,不同时通知两类账号。不改音视频、废弃入口或临时测试推送接口。

Phase 4: 文档与验证

  • T008 在 specs/033-native-push-routing/quickstart.md 记录三端凭据配置、默认关闭、启用/回退、真机检查;更新 specs/012-im-user-integration/code-status.md 与 docs/order-push-overview.md。
  • T009 使用 JDK 21 运行定向测试和 ruoyi-admin 模块构建;核对完整 diff、暂存范围及未执行的外部 FCM/APNs 真机验证,再提交文档收口。

Dependencies

T001–T002 → T003/T004 → T005–T006 → T007 → T008–T009。FCM 与 APNs 发送器可以独立评审,但本任务按当前会话顺序执行,不启动 Agent。

2026-09-29 追加:随包凭据(默认通道不变)

  • T010 更新三端资源命名和配置:每端一份独立 Firebase server.json、一份 APNs 普通证书、一份 packetName/pwd 配置,名称含 user/merchant/rider;实际文件提交 Git,默认 uni 不加载。
  • T011 测试先行支持 classpath 读取 FCM JSON、APNs 配置和 .p12,保持原有外部路径兼容;开发/正式只切换 APNs 网关。
  • T012 更新部署说明并运行 JDK 21 定向测试、模块构建和资源打包检查;仅暂存本功能代码、文档与三端凭据后提交,真机外发仍单独验证。

2026-09-29 追加:仅原生通道的多骑手新单批量

  • T013 先写失败测试:骑手端 FCM multicast 保留业务 payload 与逐 token 结果;原生外卖、闪送新单进入批量分支,uni 仍逐骑手发送。
  • T014 Android 骑手按已本地化文案和 payload 分组批量发送,逐人发布消息中心事件;iOS 保留原有逐设备异步发送,失败不回退 uni。
  • T015 更新操作文档,运行 JDK 21 定向与回归测试、模块构建,核对变更及暂存范围。