claude-code-handoff.md 6.8 KB

Claude Code 实施交接:满额免运(2026-10-19)

直接任务

请在当前仓库的现有分支实施008促销功能新增“满额免运”,按spec-kit已有增量文档推进。后端和商家PC一起做,App/平台PC不动,不创建或切换分支/工作树,不恢复暂停的036工作。无需重新询问已确认的原价门槛与免运优先规则;本轮没有自动commit/push授权。

必读顺序:仓库AGENTS.md → spec.md FR-028~FR-036 → plan.md 2026-10-19章节 → contracts/free-delivery.md → tasks.md T074~T078。

工作目录为D:/QtwCode/foodie/foodie-server,商家PC为D:/QtwCode/foodie/foodie-store(实际D盘路径已核对;AGENTS中E盘是历史路径)。规划时服务端分支为codex/036-multi-store-checkout,商家PC分支为test-202609v2;执行前只确认位置,两个仓库都不自行创建或切换分支。PosFoodController.java存在原有未提交修改,保留、不混入本功能。

已确定规则

  • 商家在现有“促销活动”创建type=5满额免运,不新增领券流程;门槛由商家填,按商品原价判断,100为示例。
  • 命中后先全免R,允许R超过预算B;其余受限优惠使用max(0,B−R),用完则不再追加;保留原第二份半价预算豁免。
  • 用户支付商品应付G及客户实际配送费D;免运D=0,商家承担R,骑手毛配送费仍R,不额外入账第二次。
  • 商家PC含创建、编辑、详情、列表、结束及四语言。后端旧finalAmount仍为商品金额,新完整报价与订单显式version2接入;App本轮未接入,旧请求保持原行为。

执行与验收

按T074→T075→T076→T077→T078,每批先写有业务断言的测试、确认红测,再实现并验证;文档规划不是已通过测试。SQL只在updatesql/sql.md最后按执行日期追加,由开发者手动执行,禁止直接迁移测试/生产数据库。

以下为实施完成后的命令示例,本轮规划没有执行这些构建或测试:

$env:JAVA_HOME = 'C:/Users/99029/.jdks/graalvm-jdk-21.0.12+7.1'
$env:PATH = "$env:JAVA_HOME/bin;$env:PATH"
java -version
# 在foodie-server目录,命令行参数整体加引号以符合PowerShell。
mvn -pl ruoyi-system -am test '-Dtest=PromotionActivityServiceImplFreeDeliveryTest,PromotionDiscountLimitCheckerTest,PromotionCalcServiceImplFreeDeliveryTest,PromotionCalcServiceImplDiscountLimitTest' '-Dsurefire.failIfNoSpecifiedTests=false'
mvn -pl ruoyi-admin -am test '-Dtest=ShPromotionActivityFreeDeliveryTest,FoodDeliveryPromotionQuoteServiceTest,OrderPromotionHelperFreeDeliveryTest,UserOrderFreeDeliveryCreateTest,OrderFreeDeliverySettlementTest,OrderInvoiceFreeDeliveryTest,PayMethodSwitchServiceTest' '-Dsurefire.failIfNoSpecifiedTests=false'
mvn -pl ruoyi-admin -am verify
# 在D:/QtwCode/foodie/foodie-store目录
npm run build:test

定向用例名与最终测试类一致;运行后读取测试计数与FAILURE/ERROR,不能仅根据命令退出或surefire未找到测试的选项宣称通过。前端没有现成test/lint脚本,不编造npm test;构建与手工四语言验收按T078完成。

远程地图/支付/退款在单元测试中mock,不把外部测试环境退款失败改成假成功。需要手工联调的项目明确标为未验证。只触及本功能相关支付金额读取,不重做OMG全套接口或启用废弃支付代码。

最终交付需列出

  1. T074~T078实际完成项、修改文件与接口/字段;未执行任务保持未勾选。
  2. 实际运行的测试/构建结果及仍受外部服务限制的验证项;SQL待手动执行的日期和位置。
  3. 商家PC四语言、免运/预算/真实核销、线上/到付、切换支付、旧订单、发票/退款的验收结果;明确App代码未修改、旧App未完成新结算展示。
  4. 运行git diff --check并检查范围/CRLF;不含原有PosFoodController改动。用户另行要求提交后才按各仓库实际分支提交,中文commit,报告SHA与push目标。

实施结果(2026-10-19,Claude Code)

已完成:T074~T077 全部子项与 T078 自动化项;未创建分支/工作树、未改 App、未动平台 PC、未触碰 PosFoodController(该文件当前已不在工作区改动中,系并行会话处理)。

代码落点:

  • 活动:PromotionActivityServiceImpl(type=5 校验/台北整天归一化/有效状态/归属+PosStoreMapper.lockStoreRow 行锁/重叠)、PromotionActivityMapper.selectActiveFreeDeliveryByStoreId+selectActivityPage(SQL 内 CASE 计算有效状态)、PromotionActivitySaveRequest DTO、ShPromotionActivityController(DTO+操作者ID)。
  • 算价:IPromotionCalcService 三参重载(PromotionDeliveryContext)、PromotionCalcServiceImpl 逐路径预算评估(goodsBudget=max(0,B−F)、半价豁免、互斥不释放F、按 A=G+D 选路、type=5 明细、剩余预算、appliedCouponId)、PromotionCalcRequest.CartItem.specValueIds、PromotionCalcResponse 版本2扩展字段。
  • 报价:FoodDeliveryPromotionQuoteRequest/FoodDeliveryPromotionQuoteService(门店/自配送/地址/商品/规格核实、Google 路线+跳表运费、POST /app/userPromotionCalc/deliveryQuote)。
  • 订单:OrderCreatItem.promotionPricingVersion、UserOrderController.prepareVersionTwoQuote(权威重算+quoteChanged 拒绝+ddId 幂等+父单金额服务端确定)、OrderPromotionHelper(汇总排除 subType=5、applyVersion2Pricing/buildServerFoodJson/resolveCouponToConsume)、PosOrder 三列+三派生 getter、PosOrderMapper.xml。
  • 结算:OrderService.setSanghuBilling 版本2按 G=A−D(不查 VipUserQuanyi)、OrderInvoiceService.invoiceGoodsTotal(两处 A−D)、骑手分成沿用 R 不变。
  • i18n:后端 6 包新增16个 promotion.freeDelivery.* key(新键 duplicateOrder/configConflict 超出列表下限)+新建 messages_vi.properties;商家PC promoActivity 6 key×4语言。

已运行验证(JDK 21.0.12,均通过):定向 ruoyi-system 40/40(含矩阵第2行 F=B 边界);定向 ruoyi-admin 45/45;mvn -pl ruoyi-admin -am verify 全量 1109/1109;npm run build:test 成功(dist 2026-10-19 11:34 产出,webpack 缓存告警不影响);后端6包/前端4语言 key 一致性脚本核对通过;git diff --check 无空白错误(4个 LF 文件已转回 CRLF)。

待人工:①updatesql/sql.md 末尾 2026-10-19 三条 ALTER 由开发者手动执行;②商家 PC 浏览器手工验收(第五Tab/四语言/重叠拒绝/结束操作);③Google 路线与运价真实调用仅单测 mock,联调未做;④App 端未接入 deliveryQuote/version2,旧App保持旧行为。

未提交:本轮无 commit/push 授权,全部改动保留在工作区(foodie-server 分支 codex/036-multi-store-checkout、foodie-store 分支 test-202609v2)。