tasks.md 5.5 KB

Tasks: 用户通知 eventScene 与前端交接

Input: spec.md、plan.md、frontend-integration.md。

进度: 实现中(后端接入及分批测试已完成,最终验证收口中)。本期只新增 eventScene;不修改 App、云函数、音频或数据库。任务按现有用户故事追踪,步骤/签名/断言以 plan 为准;控制器公共夹具集中于 UserOrderNotificationSceneTest,其余旧控制器测试继续回归。

Phase 1: 契约(Plan Task 1)

  • T001 [US2] 新建 ruoyi-admin/src/test/java/com/ruoyi/app/order/dto/OrderPushBodyDtoTest.java,证明只有新增场景、旧工厂不输出场景的预期失败。
  • T002 [US2] 新建 ruoyi-admin/src/main/java/com/ruoyi/app/push/UserNotificationScene.java,修改 ruoyi-admin/src/main/java/com/ruoyi/app/order/dto/OrderPushBodyDto.java 的可选 eventScene 和 getUserJson 工厂;不建立额外事件封装类。
  • T003 [US2] 运行 Task 1 测试及差异/暂存检查,独立提交契约,不推送。

Phase 2: 配送与入库(Plan Task 2)

  • T004 [US1] 扩展 ruoyi-admin/src/test/java/com/ruoyi/app/order/PosOrderQsOprateControllerTest.java、PosOrderShOprateControllerTest.java、PosOrderAdminStatusControllerTest.java 和 flashdelivery/service/FlashDeliveryNotificationServiceTest.java、FlashDeliveryMultiPickupTest.java,运行成功场景、无地址、回滚/部分取件的失败测试。
  • T005 [US1] 修改 ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderQsOprateController.java 与 PosOrderController.java 的有效用户通知,明确三配送动作场景;历史 state 原值不变。
  • T006 [US1] 修改 ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderShOprateController.java,区分商家接单/出餐和自配送开始/完成;直接送达不补派送。
  • T007 [US1] 修改 ruoyi-admin/src/main/java/com/ruoyi/app/flashdelivery/service/FlashDeliveryNotificationService.java,仅寄件用户成功接单/全部取件/送达带 eventScene,骑手路径不变。
  • T008 [US4] 上述有效用户路径解除地址对入库的阻断,沿现有提交后通知边界;完成 Task 2 测试及范围检查后独立提交,不推送。

Phase 3: 现有其他通知(Plan Task 3)

  • T009 [US3] 扩展 ruoyi-admin/src/test/java/com/ruoyi/app/pay/LinePayOrderNotificationServiceTest.java、omgpay/OmgPaymentNotifyServiceTest.java、order/DeliveryOrderNotificationServiceTest.java,运行支付/取消场景与非用户隔离的失败测试。
  • T010 [US3] 修改 ruoyi-admin/src/main/java/com/ruoyi/app/pay/LinePayOrderNotificationService.java、omgpay/OmgPaymentNotifyService.java、order/DeliveryOrderNotificationService.java 的已有用户通知;支付/取消仅用独立用户 body,不污染商家/骑手。
  • T011 [US4] 验证 type=0 不变、核销幂等、无地址仍入库,Task 3 测试通过后独立提交,不推送。

Phase 4: 验证及交接(Plan Task 4)

  • T012 [US2] 扩展 ruoyi-admin/src/test/java/com/ruoyi/app/push/BusinessPushServiceTest.java、FcmPushSenderTest.java、ApnsPushSenderTest.java 和 utils/event/PushEventListenerTest.java,确认仅场景透传、旧通知/声音不变。
  • T013 [US4] 只有测试确证 uni 用户参数编码破坏场景时,才修 ruoyi-admin/src/main/java/com/ruoyi/app/utils/PayPush.java 的该路径;不调整云函数。
  • T014 [US2] 收口 specs/035-user-notification-voice/frontend-integration.md:七场景、原四字段+eventScene、JSON、前台要求、客户端选语言与无新增元数据的能力限制。
  • T015 [US4] 执行 plan 的 JDK 21 定向测试/模块构建及 diff 检查,记录实际结果、提交 SHA、未验证项,确认所有改动只在后端与本 feature 文档后提交,不自动 push。

2026-10-09 实施与验证记录

  • 契约提交 deb899b:只新增 eventScene,旧工厂键集合与旧字段值兼容;失败测试后 8/8 通过。
  • 配送提交 a67107d:现代/旧骑手入口、自配送和商家出餐场景;70/70 通过。控制器共用事务/异步夹具集中在 UserOrderNotificationSceneTest,其他既有控制器测试继续回归。
  • 支付/取消提交 1f3ba28:LINE/OMG 支付及现有外卖用户取消场景;22/22 通过,重复支付回调不再通知,商家/骑手 body 不增加场景。
  • 通道与入库回归 49/49 通过;旧 payload、default sound、qsRing、pushsound.caf 保持。uni 仍转发完整 JSON,无证据需要修改 PayPush 参数编码,T013 按条件无需改代码。
  • JDK 21 最终统一定向测试 149/149 通过(包含 UserOrderNotificationSceneTest),模块 package 为 BUILD SUCCESS。无 SQL、App、云函数、PC 或通道生产配置变更。
  • 本地提交不自动 push;未部署、未生产试发,真实云端 payload 透传、App 音频/前台效果与真机尚未验证。
  • 额外全模块回归与一次只读整体审查将在收口时补记,不把定向测试当作完整 App 功能验收。

Dependencies / 前端责任

T001–T003 → T004–T008 → T009–T011 → T012–T015;按批次做失败测试、实现、通过验证和提交,不按字段拆小批次。

前端负责音频、语言选择、统一入口、播放队列、生命周期、点击路由及真机验收。本期无新增事件标识、接收用户或时间,不能宣称已实现精准去重、跨账号校验或完整乱序判断。真实云端是否保留 eventScene 需联调;失败时反馈,不擅自修改云函数。