# 任务:闪送配送服务 ## Phase 1:测试红灯与数据层 - [x] T001 编写计价、状态机、路线测试并确认因实现缺失而失败 - [x] T002 编写 MyBatis XML 契约测试,覆盖映射、原子抢单和自动完成条件并确认失败 - [x] T003 在 `updatesql/sql.md` 记录四张新表、地址字段、索引、计价种子和后台权限 SQL - [x] T004 新增闪送实体、Mapper、XML 与地址置顶/安全条件方法,使数据层测试转绿 ## Phase 2:US1 报价与订单创建 - [x] T005 [US1] 先写报价边界、路线降级、配置停用、无效地址、重算和幂等测试并确认红灯 - [x] T006 [US1] 实现 Routes 客户端、Haversine 降级、计价器和配置读取 - [x] T007 [US1] 实现 home/quote/create DTO、服务与 Controller,保存快照和创建日志 - [x] T008 [US1] 运行 US1 定向测试转绿 ## Phase 3:US2 骑手抢单和配送 - [x] T009 [US2] 先写骑手角色、脱敏、排序、原子抢单、越权、图片必填测试并确认红灯 - [x] T010 [US2] 实现骑手 available/mine/detail/accept/pickup/deliver - [x] T011 [US2] 同事务保存图片和状态日志,运行 US2 测试转绿 ## Phase 4:US3 安全共享地址簿 - [x] T012 [US3] 先写跨用户拒绝、userId 忽略和搜索排序测试并确认红灯 - [x] T013 [US3] 新增地址 DTO,修复匿名删除/详情和实体直绑,提供 DELETE/top - [x] T014 [US3] 更新地址 Mapper/XML 并运行地址安全测试转绿 ## Phase 5:US4 用户跟踪、取消和签收 - [x] T015 [US4] 先写本人查询、越权、取消、签收、终态和自动完成并发测试并确认红灯 - [x] T016 [US4] 实现用户列表/详情/cancel/confirmReceipt - [x] T017 [US4] 实现 24 小时自动完成任务,运行 US4 测试转绿 ## Phase 6:US5 平台配置和介入 - [x] T018 [US5] 先写权限注解、计价版本、查询、异常取消和平台完成测试并确认红灯 - [x] T019 [US5] 实现平台 pricing 和 orders API - [x] T020 [US5] 运行 US5 测试转绿 ## Phase 7:交付 - [x] T021 为五个 i18n 文件添加一致的闪送/地址错误 key 与一致性测试 - [x] T022 核对 API 契约、实现、权限和 SQL,更新任务状态 - [x] T023 JDK 21 运行定向测试、模块构建和 `git diff --check` - [x] T024 核对暂存范围并准备中文提交 ## Phase 8:补充用户端/骑手端原型 - [x] T025 更新包裹、预约、PIN、寄件凭证、费用明细和角色脱敏规格/API/SQL - [x] T026 先写计价明细、预约抢单条件、PIN、寄件凭证、状态分组和安全响应测试并确认红灯 - [x] T027 扩展订单/计价/凭证实体、Mapper XML 和数据库迁移记录 - [x] T028 实现包裹信息、预约配送、40 公里限制和服务端费用明细 - [x] T029 实现 PIN 送达与 SENDER/PICKUP/DELIVERY 三类凭证 - [x] T030 实现用户/骑手状态分组分页、角色业务视图和骑手公开摘要 - [x] T031 更新 API 契约与 i18n,并运行 JDK 21 定向测试、模块构建和差异检查 ## Phase 9:US6 平台管理前端 - [x] T032 [US6] 在 `foodie-admin-vue/tests/flash-delivery.test.cjs` 和 `package.json` 增加闪送定向测试,直接执行请求配置、分页归一化、价格校验、状态操作和四语言对象,并确认因目标模块缺失而红灯 - [x] T033 [US6] 新增 `src/api/flashDelivery/contracts.js`、`index.js` 和 `src/views/flashDelivery/shared.js`,封装六个平台请求及纯函数,使请求、分页、价格校验和状态规则测试转绿 - [x] T034 [US6] 新增 `src/views/flashDelivery/pricing/index.vue`,实现三类价格读取、编辑校验、启停、版本展示和保存后服务端回填 - [x] T035 [US6] 新增 `src/views/flashDelivery/orders/index.vue` 与 `OrderDetail.vue`,实现服务端分页筛选、详情分区、图片预览、取消原因和已送达完成操作 - [x] T036 [US6] 在四个 `src/api/language/language.*.js` 文件增加一致的 `flashDelivery` 文案,并使语言与页面契约测试转绿 - [x] T037 [US6] 在 `updatesql/sql.md` 追加幂等的“闪送管理/价格配置/闪送订单”动态菜单 SQL,将现有六项权限归入对应页面 - [x] T038 [US6] 运行 `npm run test:flash-delivery`、新增文件 ESLint、`npm run build:prod` 和两个仓库 `git diff --check`,核对暂存范围后分别使用中文提交 ## Phase 10:外卖同规则时段运价 - [x] T039 [US1] 先重写 `FlashDeliveryPricingCalculatorTest`,覆盖起送内、0.49/0.50/0.99/1.20 公里边界、非 1 公里计价距离、整数 HALF_UP 和非法配置,并确认旧计价实现红灯 - [x] T040 [US1] 重写 `FlashDeliveryPricing`、`FlashDeliveryOrder`、费用 DTO、订单 XML 和计价器,删除最低价、分钟价、尖峰与启停字段,实现整数 TWD 的外卖同规则距离计价 - [x] T041 [US5] 先扩展 `FlashDeliveryApplicationServiceTest` 与 `FlashDeliveryControllerContractTest`,覆盖当前时段、无时段、重叠、新增、按 ID 修改、版本冲突、删除和新订单快照,并确认旧服务接口红灯 - [x] T042 [US5] 实现 `FlashDeliveryPricingMapper` 当前时段/重叠查询、服务类型行锁、时段 CRUD、home/quote/create 当前时段唯一性检查、完整快照及四语言业务错误,使后端定向测试转绿 - [x] T043 [US6] 先更新 `tests/flash-delivery.test.cjs`,覆盖价格 GET/POST/PUT/DELETE、六字段载荷、时段与整数校验、页面权限和四语言 key,并确认旧前端红灯 - [x] T044 [US6] 更新前端 API、`shared.js`、价格时段新增/编辑/删除页面、订单费用详情和四语言,删除启停、最低价、分钟价与尖峰展示,使定向测试转绿 - [x] T045 在 `updatesql/sql.md` 追加开发阶段重建脚本:删除旧闪送测试表并创建运价锁、时段配置、新订单快照与索引的最终结构;只记录不执行 - [x] T046 使用 JDK 21 运行后端定向测试和模块构建,运行前端定向测试、强制 ESLint、生产构建、CRLF 与两个仓库差异检查 - [x] T047 核对两个仓库暂存范围,分别使用中文提交并推送当前 `test` 分支,不包含后端仓库原有脏文件 ## Phase 11:App 订单列表与详情精简 - [x] T048 先改 Controller 反射、列表字段白名单和详情直接响应测试,确认旧 `/available`、`/mine`、多筛选参数及 `{order,images,logs}` 契约红灯 - [x] T049 新增用户列表、骑手列表、骑手分页 DTO,将 App 详情 DTO 改为直接订单字段和三类明确照片 URL 数组,删除旧待抢/图片/日志 App DTO - [x] T050 先改应用服务测试,覆盖用户轻量列表、五个骑手页签、外卖同规则附近范围/排序、摘要、预约条件、本人边界、接单前地址权限和固定详情结构并确认红灯 - [x] T051 将用户列表收敛为 `page,size`,将骑手 `/orders` 收敛为 `page,size,tab,longitude,latitude`,在数据库分页前完成条件与距离排序 - [x] T052 重写 App 详情映射,直接返回订单字段并按类型聚合照片 URL,不查询或返回原始状态日志;补齐五语言参数错误 - [x] T053 更新 `docs/flash-delivery-app-api.md` 与 quickstart,删除旧列表路由、筛选、近似坐标及 App 包装响应说明 - [x] T054 使用 JDK 21 运行闪送定向测试、i18n 契约、模块构建和差异检查,核对暂存范围后使用中文提交并推送 `test` ### 2026-09-01 中断点(已于 2026-09-02 收口) - T048–T053 的生产代码、测试源码、五语言文案和接口文档已在 2026-09-01 写入工作区;2026-09-02 完成修复、验证并提交。 - 收口时修复两处阻塞:`FlashDeliveryApplicationService.riderOrders` 改用 `effectiveLongitude/effectiveLatitude` 有效坐标变量解决 lambda 捕获编译错误;`FlashDeliveryApplicationServiceTest.assertRiderTab` 改为先渲染 `getSqlSegment()` 再断言参数表(MyBatis-Plus 条件参数为惰性写入,原断言在渲染前读取恒为空)。 - 验证结果:JDK 21 定向测试 40 项全部通过(0 失败、0 错误);`mvn -pl ruoyi-admin -am -DskipTests package` 成功;`git diff --check` 清洁。 - 另按审核结论补记 `sys_job` 闪送自动完成调度 SQL(见 `updatesql/sql.md` 2026-09-02 节),并在 `plan.md` 修订并发描述与实现一致。 - 已有规格提交:`17888f8`(明确闪送 App 订单列表与详情契约)、`8a3ea64`(制定闪送 App 订单接口精简计划)。