|
|
@@ -4,6 +4,35 @@
|
|
|
|
|
|
---
|
|
|
|
|
|
+## v1.0.2404 (2026-11-12)
|
|
|
+
|
|
|
+### 其他
|
|
|
+- S-cfc-168: membership.plan.purchase 契约 RED 测试(SC-P-58 购买会员/套餐)
|
|
|
+- - 正常流: MembershipService#purchasePlan 契约方法 + POST /api/membership/plan/purchase 端点存在性
|
|
|
+- - 边界流: 重复购买幂等(有效会员拦截 no-new-order / 待支付订单复用 no-dup-insert)
|
|
|
+- + markMembershipOrderFailed 失败回滚入口 + 回调开通失败订单状态须回滚(不留 paid 半态)
|
|
|
+- - 权限流: familyId=null 购买入口 fail-fast 拒绝
|
|
|
+- 预期红 7/7:契约入口未落地、createOrder 无幂等守卫、
|
|
|
+- processPaymentCallback 失败后订单停留 paid(半态不回滚)。
|
|
|
+-
|
|
|
+- 契约溯源:SC-P-56 订单查询/退款(tests/user-scenarios/应用场景总览.md)
|
|
|
+- + API_REFERENCE.md §4.8 商品与订单(/api/product/order/my、/refund/apply)。
|
|
|
+- 反射结构契约(纯反射、无 Spring/DB/外部服务,沿用同批 RED 测试风格):
|
|
|
+- - 正常流:ProductOrderService 应声明 queryRefund(orderNo,userId) 查询入口
|
|
|
+- - 控制层:ProductOrderController 应暴露 POST /refund/query 路由
|
|
|
+- - 边界流:queryRefund 入参应为 (orderNo,userId) 二元组(买家归属作用域)
|
|
|
+- - 权限流:queryRefund 应按买家归属校验(横向越权被拒,TC-P-56-P)
|
|
|
+- RED 结果:4 测试全红(queryRefund 方法 / /refund/query 路由均未落地)。
|
|
|
+- GREEN 指引:实现 queryRefund 入口 + /refund/query 路由后自动转绿。
|
|
|
+-
|
|
|
+
|
|
|
+### 测试
|
|
|
+- S-cfc-169 supplier.order.fulfill RED 契约测试 — SC-S-04 到店核销未落地(pickupCode 生成未消费,缺 redeem 入口)
|
|
|
+- S-cfc-167 shop.coupon.apply 契约级单测 —— 实现已链上 origin/cfclub(CouponController /api/coupon/apply + CouponService.apply),20 契约用例全绿,转测试登记
|
|
|
+- shop.order.create 特价下单分支契约测试 - 实现已合入 origin/cfclub(10/10 绿,非红)
|
|
|
+- RED 契约单测 shop.order.queryRefund 退款状态查询
|
|
|
+
|
|
|
+
|
|
|
## v1.0.2403 (2026-11-12)
|
|
|
|
|
|
### 文档
|