|
|
@@ -23,6 +23,7 @@
|
|
|
|
|
|
1. 原生模式有 `deviceToken`、无 `cid` 的用户仍能被收件人筛选并发送;默认 uni 模式仍按 CID 判断。
|
|
|
2. 用户、骑手、商家(含夜市及子账号)不会混用 Firebase 项目或 APNs topic;相同设备的商家收件人去重按当前通道地址。
|
|
|
+ 门店订单收件人仍是分管账号优先、主账号兜底,不同时发给两类账号。
|
|
|
3. iOS 开发/生产证书与网关一致;缺失、过期、无法解锁或无私钥的证书在原生模式启动时明确失败。
|
|
|
4. LINE Pay/OMG 等本来已经自行发布 `PushEvent` 的路径不会因迁移产生第二条消息记录,且 CID 为空时原生发送仍可进行。
|
|
|
5. `VideoCallController`、`/testPushMessage` 和测试批量接口继续走现有行为;业务通知 payload 的 `ddId/state/type/pushType` 不丢失。
|
|
|
@@ -40,7 +41,7 @@
|
|
|
|
|
|
`application.yml` 仅保留 `business-push.mode: uni` 和环境变量占位符;部署时分别提供 `business-push.apps.user`、`business-push.apps.merchant`、`business-push.apps.rider` 下的 `fcm-credentials-path`、`apns-certificate-path`、`apns-certificate-password`、`apns-topic`。`business-push.apns-environment` 为 `development` 或 `production`。只有 `native` 模式校验并加载三端凭据;配置中没有凭据内容。iOS 证书须对应所选环境与 topic。
|
|
|
|
|
|
-FCM 请求的 data 至少包含字符串形式的 `title`、`body`、原始 `payload`,并保留现有可解析 payload 的 `ddId/state/type/pushType` 字段;APNs 使用 `aps.alert.title/body`、普通通知 sound 和同名业务字段。骑手端沿用现有 `pushsound.caf`,其余端沿用现有默认声音。过大或无法解析的 payload 必须记录可定位的失败类别,不得以截断方式改变业务字段。
|
|
|
+FCM 请求的 data 至少包含字符串形式的 `title`、`body`、原始 `payload`,并保留现有可解析 payload 的 `ddId/state/type/pushType` 字段;APNs 使用 `aps.alert.title/body`、普通通知 sound 和同名业务字段。iOS 骑手端沿用现有 `pushsound.caf`,其余 iOS 端使用默认声音;Android FCM 使用默认声音,并为骑手标记 `qsRing` 通知渠道,最终自定义铃声取决于 App 是否创建该渠道(App 端不在本任务内)。过大或无法解析的 payload 必须记录可定位的失败类别,不得以截断方式改变业务字段。
|
|
|
|
|
|
## File Structure
|
|
|
|
|
|
@@ -107,7 +108,7 @@ FCM 请求的 data 至少包含字符串形式的 `title`、`body`、原始 `pay
|
|
|
|
|
|
**Interfaces:** Direct业务外发调用 `BusinessPushService.send(...)`;收件人资格和去重调用 `addressKey(InfoUser)`,以当前通道的地址而非固定 CID 判定。
|
|
|
|
|
|
-- [ ] Write/adjust tests: CID 空而 native token 有效的商家子账号、用户及骑手仍可收;uni 模式 CID 空保持原判断;商家同一地址只外发一次但原有消息入库保持;LINE Pay/OMG 发布事件各一次且原生可发;测试/视频路径不被路由改动。
|
|
|
+- [ ] Write/adjust tests: CID 空而 native token 有效的商家子账号、用户及骑手仍可收;uni 模式 CID 空保持原判断;分管账号可用时只通知分管账号、不可用时才回退主账号;商家同一地址只外发一次但原有消息入库保持;LINE Pay/OMG 发布事件各一次且原生可发;测试/视频路径不被路由改动。
|
|
|
- [ ] Run `mvn -pl ruoyi-admin -am -Dtest=MerchantNotificationRouterTest,DeliveryOrderNotificationServiceTest,OmgPaymentNotifyServiceTest,PosOrderShOprateControllerTest,PosOrderQsOprateControllerTest,PosOrderAdminStatusControllerTest,LinePayControllerTest -Dsurefire.failIfNoSpecifiedTests=false test` with JDK 21 and verify the new assertions fail first.
|
|
|
- [ ] 迁移在用直接调用,替换仅 CID 判断,保持原事务后、异步及文案时机;不碰失效方法。
|
|
|
- [ ] Re-run the same directed command and confirm pass; inspect staged names and commit only Task 5 files.
|
|
|
@@ -131,4 +132,4 @@ FCM 请求的 data 至少包含字符串形式的 `title`、`body`、原始 `pay
|
|
|
|
|
|
## Verification Command Setup
|
|
|
|
|
|
-PowerShell 中仅对当前命令临时设置 `$env:JAVA_HOME='C:\Users\99029\.jdks\graalvm-jdk-21.0.12+7.1'` 和 `$env:PATH="$env:JAVA_HOME\bin;$env:PATH"`。计划审阅通过后执行测试;此阶段没有运行编译或测试。
|
|
|
+PowerShell 中仅对当前命令临时设置 `$env:JAVA_HOME='C:\Users\99029\.jdks\graalvm-jdk-21.0.12+7.1'` 和 `$env:PATH="$env:JAVA_HOME\bin;$env:PATH"`。2026-09-29 已运行 13 类定向测试(83 个用例,0 失败)及 `mvn -pl ruoyi-admin -am -DskipTests package`,退出码均为 0;真实 FCM/APNs 凭据、设备投递和 App 展示未在本机验证,启用前按 `quickstart.md` 执行真机验收。
|