Kaynağa Gözat

test(测试负责人·16:13轮): admin真实登录链路回归(B-46升级U04+U05双失败) | 浏览器10/11→9/11 | langgraph51绿+台账3780

E2E Test Bot 5 gün önce
ebeveyn
işleme
7f1c238cdc

+ 158 - 0
docs/tdd/orchestration/report-test-2026-11-07-1613.md

@@ -0,0 +1,158 @@
+# 测试负责人工作汇报 · TDD 闭环自动化测试
+
+> 轮次:2026-11-07 16:13 GMT+8(定时巡检,第 13 轮 / 11-07 第 5 轮)
+> 汇报人:cfc-tester(测试负责人,本地无人值守,review 档;本机直跑 + 远程派发)
+> 范围:全栈测试闭环 —— cfc-frontend / cfc-web / cfc-langgraph + 浏览器自动化(admin / frontend)
+
+---
+
+## 基本信息
+
+| 项目 | 内容 |
+|------|------|
+| 汇报人 | `cfc-tester`(测试负责人,本会话/用户) |
+| 汇报周期 | 2026-11-07(第 13 轮 / 11-07 第 5 轮 / 定时巡检) |
+| 负责模块/单元 | 全栈测试闭环:cfc-frontend / cfc-web / cfc-langgraph + 浏览器自动化(admin / frontend) |
+
+---
+
+## 一、本轮工作数据汇总
+
+### 1.1 测试用例建设
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **本轮新增测试用例数** | 0 个 | 用例建设已在 13:25 轮完成(e2e-live 11 例 + shop-sort-api 4 例);本轮为回归巡检,未新增用例 |
+| **本轮验证执行测试数** | 464 个 | cfc-frontend 313 + cfc-web 90 + cfc-langgraph 51 + 浏览器 11(langgraph 12 skipped 不计入执行) |
+| **用例通过率** | 99.4% | 462 PASS / 464 执行;浏览器套件 9/11 = 81.8%,失败 2 例均为 admin 真实登录链路 |
+
+**分套件明细:**
+
+| 套件 | 执行 | 通过 | 失败 | 跳过 | 结论 |
+|------|------|------|------|------|------|
+| cfc-frontend (Jest) | 313 | 313 | 0 | 0 | ✅ EXIT 0 |
+| cfc-web (Jest) | 90 | 90 | 0 | 0 | ✅ EXIT 0 |
+| cfc-langgraph (pytest, `--ignore=tests/qna`) | 63 | 51 | 0 | 12 | ✅ EXIT 0 |
+| 浏览器自动化 admin-desktop(本机 web-4091) | 5 | 3 | 2 | 0 | ❌ TC-A-U04 + TC-A-U05(登录按钮 disabled 超时,见 B-46 升级) |
+| 浏览器自动化 frontend-mobile(本机 web-4091) | 6 | 6 | 0 | 0 | ✅ |
+
+### 1.2 会话与任务分发
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **分派任务数** | 0 个 | 本机 web-4091 直跑已覆盖 admin + frontend,本轮未额外派发 web-189 |
+| **直接执行数** | 1 个 | web-4091 本机直跑 live 全量(admin-desktop + frontend-mobile 串行,单节点单任务) |
+| **恢复智能体会话数** | 0 个 | — |
+| **当前在用会话数** | 0 个 | 本机直跑会话已结束 |
+
+### 1.2b 各会话当前工作状态列表
+
+| 会话标签 | 会话 ID | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
+|----------|---------|----------|----------|---------------|----------|------|
+| web-4091(localhost:4091,本机) | 本机直跑(非 opencode 会话) | idle | — | — | 干净 | Playwright+Chromium 本地就绪,已出权威结果(admin 3/5 + frontend 6/6) |
+| web-189-4090(192.168.16.189:4090) | — | idle | — | — | — | 189:4090=200 可达(15:38 轮已验证可用),本轮未派发 |
+| opencode.iwintrue.com(192.168.16.251,langgraph 派发目标) | — | blocked | langgraph pytest | — | — | 9000/4090 closed,无法派发;langgraph 改本地 pytest 兜底(本轮 51 绿) |
+
+### 1.3 问题处置
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **新测试发现问题数** | 1 个 | TC-A-U04(admin 真实登录)本轮新增失败,与 TC-A-U05 同因(B-46 升级,见附录 C) |
+| **已解决测试相关问题数** | 0 个 | — |
+| **待解决测试相关问题数** | 1 个 | B-46(升级为 P0 候选,admin 登录链路回归) |
+
+### 1.4 本轮 git 提交与推送证据
+
+> 见文末「提交与推送」段;commit 后回填 sha 与 `merge-base --is-ancestor` 核验结果。
+
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
+|----------|-----------------|------|--------------|----------|------------|------|
+| _本轮提交_ | 测试负责人巡检汇报 + B-46 升级 | 报告/台账 | 文档(md) | origin/cfclub | 待 push | 见文末 |
+
+### 1.5 状态机阶段分布(全局进度)
+
+本轮为回归巡检,未激活 TDD red→yellow→green 主循环;覆盖台账见 1.6 与 ledger。
+
+### 1.6 数据源健康度
+
+| 数据源 | 读取键数 | 是否正常 | 备注 |
+|--------|----------|----------|------|
+| 需求侧(SRS 池) | 0 | 异常(未启用) | srs_section 锚点 0,CFC 未启用 SRS 需求池 |
+| 契约常量(contract) | 正常 | 正常 | ops_file 扫描正常 |
+| 测试用例引用(test_case_map) | 784 | 正常 | 结构化用例 784 条 |
+| 执行结果回填(case_results) | 1185 | 正常 | 侧车 `test-progress.json` 1185 条 progress |
+
+**Ledger(discover + inventory EXIT 0,与 15:38 一致):**
+- 控制器 361|handler 1953(覆盖 434)|测试文件 290(@Test 2367,部分 4)
+- 覆盖分布:covered=32 / partial=198 / uncovered=130 / no-handler=1
+- 结构化 784 + Playwright 562 + Python 67 + Java @Test 2367 + 场景 11 = **3780**(用例/方法合计)
+- 说明:本轮 `git diff` 显示研发侧对 23 个测试文件 +568/−162 行(含 cfc-langgraph 8 个测试文件 +102/+89/+74 等大幅扩展、cfc-backend 11 个 ControllerTest、tests/integration 2 个 spec),但**执行层结果未变**(pytest 仍 51/0/12、@Test 仍 2367、Playwright 仍 562),推测为夹具/断言/覆盖扩充而非新增收集级用例;langgraph 的 Python 计数维持 67。
+
+---
+
+## 二、向研发提出的改进建议
+
+| 序号 | 建议标题 | 问题描述 | 根因分析 | 建议方案 | 优先级 | 状态 |
+|------|----------|----------|----------|----------|--------|------|
+| 1 | **admin 真实登录链路回归(B-46 升级·P0 候选)** | 浏览器 admin-desktop 的 TC-A-U04(真实登录)与 TC-A-U05(菜单遍历)本轮**均失败**,登录按钮在滑块+凭据后始终 `disabled`;15:38 轮 U04 同流程通过、仅 U05 失败,本轮 U04 亦失败 → 登录按钮启用链路疑似随部署变更劣化 | e2e-live 用例代码未变(研发本轮仅改 integration spec,未改 e2e-live),故非测试侧改动;失败稳定复现 2 次,非偶发 flake;需研发确认 admin 登录页「滑块/角色校验就绪 → 登录按钮 enable」判定逻辑是否被部署变更影响 | 研发确认 admin 登录按钮 enable 判定 + 滑块/角色校验就绪链路;必要时回滚相关部署或修复启用条件 | P0 候选 | 升级待评估(B-46) |
+| 2 | LangGraph 部署包落后于仓库(B-43 复发) | 线上问卷生成 500 | 修复未发布到 251 | 重新构建发布 + 回归 | P0 | 待评估(B-43) |
+| 3 | pom.xml 默认 skipTests=true(B-39) | 标准 mvn test 假绿零执行 | 默认 true | 改 false / CI 守卫 0 XML 报红 | P0 | 待评估(B-39) |
+
+---
+
+## 三、本轮阻塞与风险
+
+| 阻塞项 | 影响范围 | 阻塞类型 | 处置进展 | 需要协调 |
+|--------|----------|----------|----------|----------|
+| **B-46 admin 真实登录链路回归(U04+U05)** | admin 登录 + 菜单遍历验收全缺口 | 测试(自处置)/ 需研发确认(疑似 app 部署回归) | 升级:由单测试 U05 扩展为 U04+U05 同因失败,连续 2 跑复现 | 研发确认登录按钮启用链路是否随部署变更失效 |
+| 251 langgraph 派发不可达 | langgraph 远程实测 | 测试/运维 | B-42 部分解除(189 通,251 仍闭) | 运维开通 251 opencode 端口或改本地兜底为常态 |
+| SRS 池未启用 | 目标②覆盖率不可量化 | 需求/测试 | 待启用 | 产品/测试建 SRS 池 |
+
+---
+
+## 四、下轮工作计划
+
+| 计划项 | 预计完成时间 | 前置依赖 | 备注 |
+|--------|--------------|----------|------|
+| 等研发确认/修复 B-46 后重跑 admin-desktop 确认 11/11(或 U04+U05 转绿) | 下轮 | B-46 修复 | 回归 |
+| 启用 SRS 需求池 | 本迭代 | 产品口径 | 覆盖率可量化 |
+| 189 派发结果接入回写(opencode transcript 取回) | 下轮 | 189 节点 API | 目前仅本地节点权威 |
+
+---
+
+## 附录 C:新发现问题明细
+
+| 问题 ID | 能力键/任务号 | 问题类型 | 路由去向 | 登记时间 | 处置状态 | 关联 sha |
+|---------|---------------|----------|----------|----------|----------|----------|
+| B-46(升级) | e2e-live/admin-live.spec.js · TC-A-U04 + TC-A-U05 | 缺陷/回归(浏览器·admin 登录) | 测试自处置 + 研发确认(疑似 app 部署回归) | 2026-11-07 16:13(升级自 15:38 登记) | 待处理(P0 候选) | 本轮(报告 + blockers.md) |
+
+---
+
+## 对照用户双目标
+
+- **① 所有测试用例通过**:❌
+  - 失败项:TC-A-U04 + TC-A-U05(admin 真实登录链路,2 例,本轮由「U05 单失败」升级为「U04+U05 双失败」);后端 2367 @Test / 全量 Playwright 因 251 不可派发、本环境无 Maven 未跑 JUnit(按配置应由 251 远程执行)。
+  - 通过项:cfc-frontend 313 ✅、cfc-web 90 ✅、cfc-langgraph 51 ✅、浏览器 frontend 6/6 ✅。
+- **② 覆盖所有 SRS + 用户场景含异常流**:❌
+  - SRS 池未启用(0 锚点);784 结构化用例 + 11 场景零执行级验证;异常流 TC-*-E/-P 仅文档标注零执行;后端 130 uncovered handler。
+
+## 门禁结论
+
+**不通过**(双目标均未达成)。本轮关键变化:
+1. **浏览器 admin 真实登录链路回归(B-46 升级)**:15:38 轮 TC-A-U04 通过、仅 TC-A-U05 失败(10/11);本轮 admin-desktop 隔离复跑连续 2 次 **U04+U05 同因失败**(登录按钮始终 `disabled`,`element is not enabled` 超时),浏览器套件由 10/11 退至 **9/11**。e2e-live 用例代码未变,提示 admin 登录按钮启用链路可能随部署变更劣化,需研发确认(升级为 P0 候选)。
+2. cfc-frontend 313/313 ✅、cfc-web 90/90 ✅、cfc-langgraph 51/0/12 ✅(与 15:38 基线一致)。
+3. 研发侧本轮对 23 个测试文件 +568 行扩展(langgraph 测试大幅扩充),但执行层结果零漂移(pytest 收集数/通过数不变)。
+
+## 变更触发动作(用户要求「结果有变化时提交远程 + 通知研发」)
+
+- **对比上一轮(15:38)**:浏览器自动化由 10/11(admin 4/5)→ 9/11(admin 3/5),**admin 真实登录 TC-A-U04 由通过转为失败**,属明确回归;B-46 由「U05 单失败」升级为「U04+U05 双失败·P0 候选」。
+- **处置**:本报告 + B-46 升级(blockers.md)→ 提交并 push `origin/cfclub`(Agent Mail 不可用,以仓库报告 + 台账为通知载体)。
+
+---
+
+## 提交与推送
+
+> 待 `git stash`(隔离研发 WIP + 本机产物)→ `git pull --rebase origin cfclub`(remote 现 9d774bcdd,本机 f6e58b0c9 已上游)→ `git stash pop` → `git add` 指定文档 → `git commit` → `git push origin cfclub` 后回填:
+> - 提交 sha:`<TBD>`
+> - `git merge-base --is-ancestor <sha> origin/cfclub`:`<TBD>`
+> - 若 push 被拒(non-fast-forward):不 force,记录于 blockers / 待人工 `git pull --rebase` 后重推。

+ 1 - 1
docs/tdd/test/blockers.md

@@ -50,4 +50,4 @@
 | B-43 | 线上 LangGraph 部署包落后于仓库(问卷生成 500,B-34 复发) | 研发/运维 | 部署态实测(`https://ai.etotem.com.cn`,`cfc-langgraph v0.3.0`):`POST /api/v1/questionnaire/generate` → **500** `'GenerateRequest' object has no attribute 'prompt_template'`;线上 `/openapi.json` 的 `GenerateRequest` 无 `prompt_template` 字段 → 部署的是修复前版本。仓库侧修复(`GenerateRequest` 补字段 + `build_prompt` 防御)已在 cfclub,但**未发布到 251**。后果:`/api/family/questionnaire` AI 生成 100% 失败并静默降级为模板。建议:重新构建并发布 LangGraph 服务,发布后按同一 curl 回归。闭环:该接口 200 且问卷 JSON 非空 + 线上 openapi 出现 `prompt_template` | 测试(13:25 轮线上实测登记) | 2026-11-07 13:25 | 待处理 |
 | B-44 | 管理端「运营驾驶舱」文案与统一用户模型冲突(孩子总数) | 研发 | 真实登录后驾驶舱统计卡显示「**孩子总数 4256**」(截图 `_artifacts_live/admin-04-logged-in.png`),而 AGENTS.md 规定「新功能禁止再引入『孩子』概念,统一用能登录用户/不能登录用户(memberType=login/local)」。属口径遗留,非功能缺陷。建议改为「未开通登录的子成员」或拆为两卡。闭环:TC-A-U04 增断言「驾驶舱不出现『孩子总数』」,改文案后转绿 | 测试(13:25 轮 UI 实测登记) | 2026-11-07 13:25 | 待处理 |
 | B-45 | 两条需求变更的前端用例只在工作区、未入库(团队邀请分享 / 优惠券已领取按钮) | 测试/流程 | 合并远端后核对当日 4 条需求变更:`2026-11-06-我的团队收益口径与邀请分孚需求变更.md` 与 `2026-11-06-优惠券已领取券按钮修复需求变更.md` 的用例已存在并**随 cfc-frontend 16 套件 313 例实际执行通过**(`__tests__/specs/team-invite-share.test.js`、`__tests__/specs/coupon-claimed-actions.test.js`),但 `git status` 显示 `cfc-frontend/__tests__/specs/` 整体为 `??`(untracked)→ 只存在于主工作区,`git clean -fd` 即静默丢失。与 B-23(SC-X-22 契约未入库)同源。建议:由研发/资产作者 `git add cfc-frontend/__tests__/specs/` 后提交;测试侧不代提交研发 WIP。闭环:`git ls-files cfc-frontend/__tests__/specs/` 有命中且 `git status` 该路径干净 | 测试(13:25 轮实测登记) | 2026-11-07 13:25 | 待处理 |
-| B-46 | e2e-live/admin-live.spec.js · TC-A-U05 后台核心菜单可访问 | 测试(自处置)/ 研发确认 | 浏览器自动化(本机 web-4091)TC-A-U05 失败:登录按钮点击时处于 `disabled` 态(is-disabled)超时 20s 失败;同文件 TC-A-U04(完全相同登录流程)在本轮实跑通过,故应用登录功能正常,失败源于登录助手对滑块/角色校验就绪判定不健全(或 admin 登录按钮启用逻辑存在竞态,需研发确认)。已隔离复跑 2 次均复现(非偶发 flake)。影响:admin 菜单遍历验收缺口。测试侧自处置:dragSliderToEnd 后显式 `waitForEnabled` 登录按钮 + 角色选择加 wait 后再判定;研发侧:确认登录按钮 enable 判定无竞态。闭环:TC-A-U05 隔离复跑通过 + 全量浏览器套件 11/11 绿 | 测试负责人(本轮巡检登记) | 2026-11-07 15:38 | 待处理 | |
+| B-46 | e2e-live/admin-live.spec.js · TC-A-U04(管理员真实登录)+ TC-A-U05(后台核心菜单可访问) | 测试(自处置)/ 研发确认 | **16:13 轮升级(P1→P0 候选)**:admin-desktop 项目 TC-A-U04(真实登录进后台主框架)与 TC-A-U05(菜单遍历)**均失败**,错误一致为 `TimeoutError: locator.click` —— 登录按钮 `<button ... disabled="disabled" class="... is-disabled">` 在滑块拖动 + 凭据填充后**始终不启用**,`element is not enabled` 超时 20s。15:38 轮 TC-A-U04 同流程通过(按钮可启用)、仅 TC-A-U05 失败;**16:13 轮隔离复跑 admin-desktop 连续 2 次均 U04+U05 同因失败**(e2e-live 用例代码未变,故非测试侧改动)→ 由「单测试偶发竞态」升级为「admin 真实登录按钮启用链路回归/确定性失效」,提示部署变更(滑块/角色校验就绪→按钮启用)可能劣化。影响:admin 登录 + 菜单遍历验收全缺口(浏览器套件由 10/11 退至 9/11)。测试侧自处置:dragSliderToEnd 后显式 `waitForEnabled` + 角色选择加 wait(本轮仍不生效,佐证非测试时序问题);研发侧:**必须确认 admin 登录按钮 enable 判定 + 滑块/角色校验就绪链路**是否随部署变更失效。闭环:U04+U05 隔离复跑通过 + 全量浏览器套件 11/11 绿 | 测试负责人(15:38 登记,16:13 轮升级) | 2026-11-07 15:38(登记)/ 2026-11-07 16:13(升级) | 待处理(升级·P0 候选) | |