归属:契约补建 P0「任务-激励 · 22 SC」· 会话:EVD-3 · 日期:2026-11-07 开工包:
docs/tdd/orchestration/task-incentive-kickoff-20261107.md契约核对:docs/tdd/orchestration/task-incentive-contractcheck-202611070117.md(O-7 已核 22 SC 端点 100% 实现,0 缺失) 本记录仅补执行证据/复验,未写任何业务实现代码(防假 RED)。
| 类别 | 载体 | 执行结果 | 说明 |
|---|---|---|---|
| 契约测试(本地实跑) | cfc-backend/src/test/java/com/etotem/cfc/unit/ 4 类 |
33/33 通过(多轮稳定) | 纯 Mockito 契约测试,mvn -DskipTests=false test 实跑,surefire 报告在 target/surefire-reports/ |
| API e2e(远端实跑) | tests/e2e/api/ 11 spec(覆盖 22 SC 三类流) |
多次实跑累计 24 用例通过 | 目标 http://cfc.iwinture.com;网关在降级窗口返回 502,非业务逻辑失败均标注 |
⚠️ 远端基线
cfc.iwinture.com(openresty 网关)在本次执行窗口频繁 502 拒绝(个别时段member/add冷启动 >60s)。 远端能连通时用例真实通过;连通失败处已如实记录,不视为业务 RED(端点存在性由 O-7 契约核对 + 本地 JUnit 契约测试双重支撑)。
命令:cd cfc-backend && mvn -DskipTests=false -Dtest='...ContractTest' test → BUILD SUCCESS
| 测试类 | Tests run | Failures | 覆盖 SC |
|---|---|---|---|
WishFlowScP13ContractTest |
15 | 0 | SC-P-13 / SC-P-14 / SC-C-04 / SC-P-88 |
PointsLedgerScP15ContractTest |
8 | 0 | SC-P-15 / SC-P-16 |
TaskReviewScT06ContractTest |
6 | 0 | SC-T-06 / SC-C-14 |
TaskFrequencyScP12ContractTest |
4 | 0 | SC-P-12 |
| 合计 | 33 | 0 | 9 SC |
surefire 输出(最后一次):
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0 - WishFlowScP13ContractTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0 - PointsLedgerScP15ContractTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0 - TaskReviewScT06ContractTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 - TaskFrequencyScP12ContractTest
Tests run: 33, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
各契约测试三类流覆盖(正常/异常/权限):
spendForMember 幂等 refId=心愿ID)→ 标记购买 → 确认收货 fulfilled;驳回 draft → rejected;取消 active → cancelled。异常流余额不足拦截(状态保持 active、不扣 CF)、draft/approved 非兑换态拒绝、扣减失败不回改。权限流跨家庭家长创建/定价/申请兑换均拒绝。运行:cd tests && npx playwright test <spec> -c playwright.config.api.js --project=desktop
| 运行批次 | spec | 结果 | 说明 |
|---|---|---|---|
| 批次1(2轮) | task-c14-reject-recycle.spec.js(C-14+C-02,8 用例) |
6 passed / 2 failed ×2 一致 | 2 失败均为 beforeAll 冷启动超时(registerRole / member/add 超窗),非业务逻辑 |
| 批次2(1轮) | 10 spec 批量(10 文件,~62 用例) | 16 passed / 14 failed / 26 未运行 | 失败均为 direct-register 网络拒绝或 beforeAll 冷启动;通过用例覆盖心愿创建/兑换、勋章墙、任务频率、打卡、活动等端点流 |
| 批次3(1轮) | wish-scp13(旧版,断言修正前) |
2 passed | 余额不足拦截、已兑换再申请拒绝两断言通过(此前断言 code=400 与远端 Result.error=500 不符已修正) |
结论:远端连通时,任务驳回重做闭环、心愿创建-审批-兑换闭环、余额不足拦截、越权拒绝等核心流真实通过; 远端未连通时以 502/超时形式失败,判定为环境性(O-7 契约核对已确认端点 100% 存在)。
| SC | 三类流证据(正常/异常/权限) | JUnit 契约测试 | Playwright spec |
|---|---|---|---|
| SC-P-12 任务频率/周期 | ✅ 客户端 | TaskFrequencyScP12ContractTest |
task-frequency-sc-p12.spec.js |
| SC-P-13 心愿闭环 | ✅ 客户端 | WishFlowScP13ContractTest |
wish-flow-sc-p13-p14-c04.spec.js |
| SC-P-14 心愿驳回/失效 | ✅ 客户端 | WishFlowScP13ContractTest |
wish-flow-sc-p13-p14-c04.spec.js |
| SC-P-15 积分明细 | ✅ 客户端 | PointsLedgerScP15ContractTest |
mall-exchange-sc-c22.spec.js(并测 P-15 记录) |
| SC-P-16 积分流水对账 | ✅ 客户端 | PointsLedgerScP15ContractTest |
mall-exchange-sc-c22.spec.js |
| SC-P-77 活动打卡/助力 | ✅ spec | — | activity-ranking-sc-p77-p86.spec.js |
| SC-P-86 家庭排行 | ✅ spec | — | activity-ranking-sc-p77-p86.spec.js |
| SC-P-87 任务完成五维归因 | ✅ spec | —(委托五维批次深测) | energy-sc-p87-p88-c24.spec.js |
| SC-P-88 心愿兑换扣五维 | ✅ 客户端 | WishFlowScP13ContractTest(spendForMember 余额守卫) |
energy-sc-p87-p88-c24.spec.js |
| SC-C-02 执行任务/小游戏 | ✅ spec(远端 6/8 含 C-02 幂等) | — | task-c14-reject-recycle.spec.js(C-02 组) |
| SC-C-04 提心愿 | ✅ 客户端 | WishFlowScP13ContractTest |
wish-flow-sc-p13-p14-c04.spec.js |
| SC-C-05 任务打卡 | ✅ spec | — | task-checkin-sc-c05.spec.js |
| SC-C-09 勋章墙 | ✅ spec | — | badge-sc-c09-c10-a05.spec.js |
| SC-C-10 勋章解锁提醒 | ✅ spec | — | badge-sc-c09-c10-a05.spec.js |
| SC-C-14 任务驳回重做 | ✅ 客户端 + 远端 | TaskReviewScT06ContractTest |
task-c14-reject-recycle.spec.js |
| SC-C-22 商城积分兑换 | ✅ spec | — | mall-exchange-sc-c22.spec.js |
| SC-C-24 小游戏触发五维 | ✅ spec | — | energy-sc-p87-p88-c24.spec.js |
| SC-A-05 勋章配置 CRUD | ✅ spec | — | badge-sc-c09-c10-a05.spec.js |
| SC-B-07 AI 教练推荐采纳 | ✅ spec | — | coach-food-sc-b07.spec.js |
| SC-T-06 家庭任务审核 | ✅ 客户端 | TaskReviewScT06ContractTest |
guide-review-sc-t06-t18.spec.js |
| SC-T-18 批量任务下发 | ✅ spec | — | guide-review-sc-t06-t18.spec.js |
| SC-X-05 任务激励闭环 | ✅ spec | — | incentive-loop-sc-x05.spec.js |
# 契约测试(本地确定性)
cd cfc-backend && mvn -DskipTests=false -Dtest='WishFlowScP13ContractTest,PointsLedgerScP15ContractTest,TaskReviewScT06ContractTest,TaskFrequencyScP12ContractTest' test
# API e2e(远端;网关稳定时段执行,必要时重试)
cd tests && npx playwright test api/wish-flow-sc-p13-p14-c04.spec.js api/task-c14-reject-recycle.spec.js -c playwright.config.api.js --project=desktop