tasks.md 6.5 KB

Tasks:同一用户多店结算与同骑手配送

依据:spec.md、plan.md、data-model.md、contracts/api.md。分支:codex/036-multi-store-checkout(后端与平台 PC)。每个生产行为先写可失败的定向测试;业务代码注释说明批次和旧单兼容边界;SQL 只登记不执行。

Phase 1:基础与计价(US1)

  • T001 在 ruoyi-admin/src/test/java/com/ruoyi/app/order/ 增加配置、首店围栏、阶梯命中、逐店折后运费舍入及非法配置测试,并确认先失败。
  • T002 实现新多店全局配置读取/校验/保存及 PC 配置页、四语言文案;默认围栏 1000 米、最多 5 店、缓冲 5 分钟、2 店九折/3 店八折;普通骑手字典不增加第二套限制。配置改为专表 order_checkout_config,不接 sys_config。
  • T003 对真实店铺、商品/规格/价格、促销/优惠券、地址及现有运费进行服务端预结算;输出圈外店原因、本批参与集合、可选支付方式和报价指纹,不信任客户端金额。
  • T004 在 updatesql/sql.md 登记 036 配置、批次、成员、支付尝试、配送组、通知与退款意图表及索引;不执行迁移。
  • T005 新批次幂等创建:重算报价/成员、原子写父子单与快照,写 15 分钟发起截止和缓冲快照,不创建圈外店订单、不默认到付就绪、不通知履约;普通 /createOrder 不走新规则。

Phase 2:逐店收银与统一生效(US2)

  • T006 测试逐店支付选择、方式过滤、未决在线尝试、15 分钟与缓冲边界、真实收款和到付确认的差别、取消与回调竞争。
  • T007 接入 LINE/OMG 既有支付入口,只对合法 036 成员放宽旧多店拒绝;记录实际发起证据、原交易、商家凭证与金额,非批次订单保留原校验。
  • T008 到付确认与 LINE/OMG 回调/查询/补单统一记成员事实,全部合法就绪才 CAS 激活;失败/未知和客户端回跳不能激活。
  • T009 新批次超时/迟到支付处理及重启可恢复扫描;最终截止未就绪整批关闭,迟到实收建退款意图不重开。
  • T010 持久幂等履约通知/失败重试,预约按旧规则时点开放;补普通平台配送预约的旧时点扫描,夜市自配送/自取及旧单期限不受影响。

Phase 3:取消、退款与券(US3)

  • T011 测试未生效整批取消、已生效未接单店取消、已接用户拒绝、商家已接未取不能出餐取消;线上真实实收全退、到付未收不退款,余单不补差。
  • T012 LINE 原渠道全额退款与新批次意图关联;OMG 正式退款执行/查询/重试/结果未知/人工处理,测试环境硬拒绝正式 URL,测试仅验证意图不宣称到账。
  • T013 新批次取消成员的优惠券条件返还:仅原子单绑定、原有效期、不复活已过期券、重复取消幂等,不影响旧单券流程。

Phase 4:同骑手配送(US4)

  • T014 测试按组计 1 个外卖任务、跨闪送总任务、加急独占、字典非法回退 1;接组/取消/另一个骑手竞争及组内混合进度释放。
  • T015 待抢任务组去重、旧单笔接单拒绝拆组、新接组 API 在同一骑手锁与事务中统一校验并分配全部成员;组门店上限实时重验。
  • T016 骑手逐子单取餐/送达、商家逐单出餐和到付现金/账单继续沿原有效入口;不增加全组取齐、整组送达/结算。

Phase 5:查询、PC 与交付(US5)

  • T017 测试批次/子单/组归属及越权、用户列表未选/部分付款/Apple Pay/缓冲/退款状态,旧单分类不变。
  • T018 批次详情/进度/继续结算接口、平台退款跟进 PC 页四语言;配置页已在 T002 完成;App 只写 frontend-app-integration.md。
  • T019 定向测试、受影响模块构建及回归普通 LINE/OMG/到付/转账、自取、夜市自配送、预约、促销券/发票;检查 SQL、编码、换行和差异范围,记录正式 OMG 退款未联调限制。

2026-10-16 两端列表联合规划(展示细节待确认)

已编写 frontend-display-plan.md 供讨论,不代表下列实现任务已完成。

  • T020 将用户批次卡与骑手组任务卡、单一工作页签和取送双进度(参考闪送多点)、角标/容量、金额分项和通知跳转收口到 contracts 与 App 文档;先确认展示选择及旧 App 接入策略。
  • T021 在 T014–T018 中实现服务端按批次/组聚合后分页及计数,验证普通单混排、跨页不拆组、骑手 A 已取/B 待取和部分取消时单页签归类、双进度及组计数;不得依赖 App 对分页子单临时合并。
  • T022 用户已确认项目审查四项建议,更新 spec/plan/data-model/contracts 及对应验收;该项只代表规格收口,业务实现见 T023–T026。
  • T023 接入 037 多店无人接单取消:统一生效/首次开放时间持久化及 SQL、按组计时/取消与接组互斥、逐交易退款/返券和原独立单回归;部分取消不重置,预约用最晚基准,见 FR-042/SC-030。
  • T024 激活与恢复扫描检查未生效预约批次已到/超过结束时间,整批取消及真实退款/迟到补偿,不转即时、不取消已生效任务,见 FR-043/SC-031。
  • T025 建批保存同一收货地址与坐标快照,后续不随地址簿改变;新旧入口拒绝改动已建批单个地址,取消重下仍按既定权限,见 FR-044/SC-032。
  • T026 配置下调最大店数时保护超限未接组,含未生效组;与建批/取消/接组并发一致,无冲突才保存且不影响已接组和费用快照,见 FR-045/SC-033。

依赖与交付闸门

T001→T002→T003→T005;T004 在 T005 前。T005→T006–T010→T011–T013→T014–T016→T017–T019。未完成持久状态、支付事实、取消/退款和接组防护前不得把配置开关视为可上线;测试数据库迁移由开发者手动执行。最终状态仅按真实验证报告,不把文档或局部代码称作整功能完成。

展示增量依赖:T020 先收口展示与兼容契约,T021 随 T014–T018 实现,结果纳入 T019 验证。新增任务编号不表示可以跳过前面的批次、支付和接组防护。

审查增量依赖:T023 随 T005–T015 的生效/开放/退款和接组边界实施,T024–T025 随 T005/T008–T009,T026 随 T002/T005/T015;四项结果均纳入 T019 统一验收,普通 037 行为保持回归覆盖。