Просмотр исходного кода

docs(tdd): TR-25 登记——用户管理「推荐团队」查看实现 6c0f05701 已合入但零契约/零场景覆盖,请测试侧补契约级单测+e2e(研发负责人 错峰轮 2026-11-10 22:4x)

Agnes Agent 2 дней назад
Родитель
Сommit
39ddf4e6fa
1 измененных файлов с 29 добавлено и 0 удалено
  1. 29 0
      docs/tdd/dev/test-requests.md

+ 29 - 0
docs/tdd/dev/test-requests.md

@@ -230,3 +230,32 @@
 | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 |
 | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 |
 |---|---|---|---|---|---|---|
 |---|---|---|---|---|---|---|
 | TR-24 | health.dataSource.bridgeWrite(S-cfc-129/130) | 复验 + mark-green | **研发负责人1 第94轮回执(2026-11-10 03:30)**:本键已完成 RED→YELLOW 全链路——① RED 契约 `6da900595`(S-cfc-129,HealthDataSourceBridgeContractTest 547 行,11-09 21:35 合入)已在 origin/cfclub 链上;② GREEN 实现 `47d203981`(S-cfc-130,HealthDataSourceBridgeService 174 行 + 同步引擎同事务接线 + 死注入解除 + schema.sql,11-10 02:42 提交)已推 origin/cfclub;③ 两者 `git merge-base --is-ancestor origin/cfclub` 均核验 ✓;④ 状态机 health.dataSource.bridgeWrite 已置 YELLOW;⑤ 部署 pending 1(testing@47d203981,03:03 登记)在途待部署会话回报。**请测试侧:复跑 HealthDataSourceBridgeContractTest 契约测试核验 GREEN 后 `--mark-green health.dataSource.bridgeWrite` 收口**(注意 pom.xml:28 `<skipTests>true</skipTests>`,`mvn test` 须显式 `-DskipTests=false`);部署确认(`--deploy-done testing --commit 47d203981`)由编排侧按部署会话回报落地。O-14「D/X 域不纳入 241 基线」口径不变,本键 P1 不阻塞主线 | 研发负责人1(本自动化 ce26ad68 第94轮) | 2026-11-10 03:30 | 待测试处理 |
 | TR-24 | health.dataSource.bridgeWrite(S-cfc-129/130) | 复验 + mark-green | **研发负责人1 第94轮回执(2026-11-10 03:30)**:本键已完成 RED→YELLOW 全链路——① RED 契约 `6da900595`(S-cfc-129,HealthDataSourceBridgeContractTest 547 行,11-09 21:35 合入)已在 origin/cfclub 链上;② GREEN 实现 `47d203981`(S-cfc-130,HealthDataSourceBridgeService 174 行 + 同步引擎同事务接线 + 死注入解除 + schema.sql,11-10 02:42 提交)已推 origin/cfclub;③ 两者 `git merge-base --is-ancestor origin/cfclub` 均核验 ✓;④ 状态机 health.dataSource.bridgeWrite 已置 YELLOW;⑤ 部署 pending 1(testing@47d203981,03:03 登记)在途待部署会话回报。**请测试侧:复跑 HealthDataSourceBridgeContractTest 契约测试核验 GREEN 后 `--mark-green health.dataSource.bridgeWrite` 收口**(注意 pom.xml:28 `<skipTests>true</skipTests>`,`mvn test` 须显式 `-DskipTests=false`);部署确认(`--deploy-done testing --commit 47d203981`)由编排侧按部署会话回报落地。O-14「D/X 域不纳入 241 基线」口径不变,本键 P1 不阻塞主线 | 研发负责人1(本自动化 ce26ad68 第94轮) | 2026-11-10 03:30 | 待测试处理 |
+
+## TR-25:新实现 6c0f05701 用户管理「推荐团队」查看(/api/admin/referral/* 三端点)已合入主线但零契约测试 → 请测试侧补契约级单测 + 管理端 e2e(研发 → 测试,2026-11-10 22:4x 错峰轮)
+
+### 1. 背景与缺口(同类先例 O-14/O-17「实现先于测试登记」)
+
+- **实现提交**:`6c0f05701`(2026-11-10 12:55,author=Xiaogang Liao)「feat(admin): 用户管理新增「推荐团队」查看(上级/直推/间推/团队树)」已合入 origin/cfclub(4 文件 +468 -2:`AdminReferralController.java` 131 行 / `AdminReferralTreeService.java` 131 行 / cfc-web `admin.js` +25 / `Users.vue` +183),`git merge-base --is-ancestor 6c0f05701 origin/cfclub` ✓ IN CHAIN;位于部署前沿 63cf7455a(B-69 15:38 confirmed)之后,未随 B-69 部署,待后续部署轮覆盖。
+- **缺口实证(研发侧本轮核验)**:① 状态机 70 键无 `admin.referral.*` 键(未入 TDD 池);② `cfc-backend/src/test` 无任何 AdminReferral* 契约测试(find 实证);③ 用户场景 241 SC 与 `tests/test-cases/*.md` 无对应条目;④ `docs/superpowers/api/API_REFERENCE.md` 无 /api/admin/referral 契约登记;⑤ test-requests.md TR-1~24 均非此对象。判定:**已合入实现、零契约/零场景覆盖**。
+
+### 2. 待测端点契约(供测试侧建用例)
+
+| 端点 | 方法 | 请求体(Map) | 响应 | 功能 |
+|------|------|--------------|------|------|
+| `/api/admin/referral/summary` | POST | 含 userId | `Result<Map>` | 用户基本信息 + 上级推荐人 + 直推/间推人数 + 团队累计佣金(复用 CommissionService 口径) |
+| `/api/admin/referral/members` | POST | 含 userId 及分页参数 | `Result<Map>` | L1 直推 / L2 间推分页(昵称、注册时间、消费额、贡献佣金) |
+| `/api/admin/referral/tree` | POST | 含 userId、层级 1-8 | `Result<Map>` | `users.referrer_id` 逐层 BFS 构树(不用 referral_tree 表——生产漏写;不用 MySQL 递归 CTE——当前 RDS 内部临时表不可用) |
+
+鉴权:`@RequestAttribute("role")`/`roles` 手动校验(仅后台角色);`/api/admin/**` 受 JwtInterceptor 登录保护(与既有 admin 端点一致)。
+
+### 3. 建议覆盖用例(测试侧自决,非研发指令)
+
+1. 三端点:匿名 401 / 有 token 正常 / 非后台角色拒绝;
+2. summary:无推荐人(hasReferrer=false 类边界)、佣金为 0、userId 不存在;
+3. members:分页正确性(L1/L2 边界、空列表)、消费额/贡献佣金字段形态;
+4. tree:1 层 / 8 层上限、循环引用防护(BFS visited)、空树;
+5. HTTP 方法契约:GET 应 405(本仓接口统一 @PostMapping)。
+
+### 4. 请测试侧
+
+① 依 §2 契约补 `AdminReferral*ContractTest`(MockMvc 风格,同包既有惯例);② 管理端 Users.vue「团队」弹窗 e2e(Playwright:admin 登录 → 用户列表 → 团队按钮 → 概览/L1/L2/团队树可见);③ 完成后在本文件追加「回复」段并置状态(push 即送达);④ 如需纳入状态机键/组 TDD 池,按 O-7 契约补建流程办理(研发侧本轮不预建键,避免与用户直接实现语义冲突)。优先级 P2(管理端辅助查看,不阻塞 241 SC 主线)。