|
|
@@ -0,0 +1,218 @@
|
|
|
+# 测试负责人闭环汇报 · 第 112 轮(2026-11-10 01:20)
|
|
|
+
|
|
|
+> 汇报轮次:CFC 闭环自动化测试 · 自动闭环第 112 轮(测试负责人角色)
|
|
|
+> 主理人:陆谨(软件测试专家团)· 执行档:review(内网授权 `cfc.iwintrue.com` 只读 E2E + 189/251 节点派发)
|
|
|
+> 仓库:`D:/cfc`;基线 `cfclub` @ `497205ee6`(origin/cfclub `c5fa56d86` 为祖先,已 rebase,零落后)
|
|
|
+> 执行窗口:00:08 → 01:18(后端全量 59:51 串行,其余套件并行错峰)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、本轮执行摘要
|
|
|
+
|
|
|
+| 项目 | 内容 |
|
|
|
+|------|------|
|
|
|
+| Git HEAD(起点/终点) | `497205ee6`(起点 = 终点,跑测期间无分支切换、无源码变更) |
|
|
|
+| 执行套件 | 后端 JUnit 全量 + 前端 jest + 管理端 jest + 根级 tests jest + langgraph pytest + 浏览器 E2E 28 例 |
|
|
|
+| 节点派发 | 251(langgraph)✅ 端口在线/shell 通道退化;189(浏览器)✅ 端口在线/shell 通道不可用;204 ❌ 仍失联 |
|
|
|
+| SRS/场景变更 | **本轮窗口内零变更**(`docs/superpowers/specs` 与 `tests/user-scenarios` 无新增/修改),故无需改动用例;台账按 S-cfc-129 补登预期 RED |
|
|
|
+
|
|
|
+**核心结论:全量 3453 例实测 3371 过 = 97.61%,后端首次全量跑完(337 类 / 2845 例 / 59:51 / 98.17%)且编译零错;浏览器 E2E 28/28 全绿。** 未达标项集中在 langgraph(11 红:LLM 凭据/checkpointer)与后端 48 红(预期 RED 14 + 产品 18 + 装置 16),全部已有归因与闭环判据。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、实测结果明细
|
|
|
+
|
|
|
+### 2.1 总账
|
|
|
+
|
|
|
+| 套件 | 用例数 | 通过 | 红 | Skip | 通过率 | 备注 |
|
|
|
+|------|--------|------|----|------|--------|------|
|
|
|
+| 后端 JUnit(cfc-backend) | 2845 | 2793 | 48 | 4 | **98.17%**(剔 skip 98.31%) | 337 类,`BUILD FAILURE`(仅测试红),59:51 |
|
|
|
+| 前端 jest(cfc-frontend) | 426 | 423 | 0 | 3 | 99.30% | 26 suites 全通过 |
|
|
|
+| 管理端 jest(cfc-web) | 116 | 116 | 0 | 0 | 100% | 17 suites 全通过 |
|
|
|
+| 根级 tests jest | 23 | 7 | 16 | 0 | 30.43% | B-36:黑盒套件依赖线上登录态/凭据,环境门控全红(**零漂移**) |
|
|
|
+| langgraph pytest(本机 venv 兜底) | 43 | 32 | 11 | 0 | 74.42% | 210.04s,与 251 权威 43/32/11 **逐例一致** |
|
|
|
+| **合计(不含 E2E)** | **3453** | **3371** | **75** | **7** | **97.61%** | — |
|
|
|
+| 浏览器 E2E(独立计数) | 28 | 28 | 0 | 0 | **100%** | 15 live + 13 health,本机串行 `workers:1` |
|
|
|
+
|
|
|
+### 2.2 后端 48 红三层归因
|
|
|
+
|
|
|
+| 类别 | 例数 | 分布 | 定性 |
|
|
|
+|------|------|------|------|
|
|
|
+| **预期 RED(TDD 契约未实现)** | 14 | `HealthDataSourceBridgeContractTest` 14/16 | S-cfc-129 `health.dataSource.bridgeWrite`(`HealthDataSourceBridgeService` 宿主类不存在、华为/小米同步未注入桥接、`schema.sql` 注释未扩 DEVICE)→ 研发已产出 RED 测试,实现待落地 |
|
|
|
+| **B 类 产品/契约缺陷** | 18 | EnergySystem 6×500、DimensionRegistryMap 3、MindFortune 1(B-69)、GuideModule 1(`platform_fee` 截断)、OrchestrationEngine 1、OrchestrationIntegration 1、MembershipPaySwitch 1、PaymentServiceORD 1、UserServiceWechatLogin 2、TeamProfitCron 1 | 需研发/运维处置 |
|
|
|
+| **A 类 测试装置缺陷** | 16 | CfCommissionServiceSettle 8(档位查询未打桩 → `earnByRule` 未触发)、ArticleAutoTag 4(`execute` 次数断言与实现调度口径不一致)、TaskPlanService 1、GrowthRecordSync 3(1F+2E) | 测试侧可自修,未在本轮修改(保持基线可比) |
|
|
|
+
|
|
|
+### 2.3 浏览器 E2E(28/28 全绿)
|
|
|
+
|
|
|
+| 套件 | 例数 | 结果 | 关键断言 |
|
|
|
+|------|------|------|----------|
|
|
|
+| admin-desktop(/admin) | 5 | **5/5 ✅**(5.6/6.9/3.8/11.7s;U05 1.0m) | 真实登录 + 滑块人机验证通过 + 菜单 102 项可访问 |
|
|
|
+| frontend-mobile(/frontend) | 6 | **6/6 ✅** | 首页渲染/五维沙盘/TabBar 四项/未登录「我的」鉴权引导/首屏零 requestfailed |
|
|
|
+| shop-api(商城排序契约) | 4 | **4/4 ✅**(319/130/124/144ms) | price asc/desc/默认/非法排序列白名单拦截 |
|
|
|
+| health-contract(健康鉴权契约) | 13 | **13/13 ✅**(19.7s) | 华为 5 + 小米 5 + 健康方案 3 端点未鉴权全 **401**(B-61 维持闭环) |
|
|
|
+
|
|
|
+> 单节点单任务纪律守约:本机 `workers:1` 串行;189 端口在线但 shell 通道不可用(见 §四),未产生并发浏览器任务。
|
|
|
+
|
|
|
+### 2.4 节点探活与派发
|
|
|
+
|
|
|
+| 节点 | 端口 | 状态 | 派发结果 |
|
|
|
+|------|------|------|----------|
|
|
|
+| 192.168.16.251 | 9000 `/health` | **200**(15.9ms) | — |
|
|
|
+| 192.168.16.251 | 4096 opencode | **200**(32.8ms) | 会话可建、**shell 对象可建一次(running)但 `/output` 返回 `ShellNotFoundError`**;其后连续 4 次 `POST /shell` 均 204 且不产生 shell 对象 → **未能取回 pytest stdout** |
|
|
|
+| 192.168.16.189 | 4090 opencode | **200**(94.8ms,B-89 端口恢复) | 会话可建(200),**shell 通道 3 次尝试(含 `background:true`/`cwd`)均 204 且 `/api/shell` 列表恒为空** → 无法派发浏览器任务 |
|
|
|
+| 192.168.16.204 | 4090 | 000(B-95 第 3 轮) | 不可派 |
|
|
|
+
|
|
|
+> 结论:langgraph 测试**已发起 251 派发但通道取回失败**,回退本机 venv 兜底(43/32/11,与 251 历轮权威值逐例一致);浏览器任务本机串行完成 28/28。G10 记「部分达成」。
|
|
|
+
|
|
|
+### 2.5 线上可用性复测(只读探针)
|
|
|
+
|
|
|
+| 探针 | 结果 | 判定 |
|
|
|
+|------|------|------|
|
|
|
+| `POST /api/huawei-health/status` | 401 | ✅ 鉴权正常 |
|
|
|
+| `POST /api/health/plan/list` | 401 | ✅ 鉴权正常 |
|
|
|
+| `POST /api/mind/fortune` | **HTTP 200**,body `{"code":400,"message":"用户不存在"}`(7.0s) | ❌ **B-69 第 12 轮**:未入 `LOGIN_REQUIRED_PATHS`,匿名未 401;与后端单测 `expected 401 but was 400` 同源 |
|
|
|
+| `POST /api/mind/daily`、`/api/mind/list` | 404 | 端点不存在(历轮「4 端点 200」口径需收窄为 `/api/mind/fortune` 等实际存在端点) |
|
|
|
+| `251:9000 POST /api/v1/chat` | **000 / 40.0s / 0B** | ❌ B-90 第 5 次:挂起 |
|
|
|
+| `251:9000 POST /api/v1/analyze` | **000 / 40.0s / 0B** | ❌ B-90 第 5 次:**较 R104「200/21.5s 已恢复」回退**,chat 与 analyze 双双挂起 |
|
|
|
+
|
|
|
+### 2.6 langgraph 11 红归因(本机 venv 实测)
|
|
|
+
|
|
|
+| 测试 | 例数 | 失败信息 | 归因 |
|
|
|
+|------|------|----------|------|
|
|
|
+| `test_analyze.py` | 2 | `assert 500 == 200`,日志 `ValueError("Checkpointer requires one or more of the following 'configurable' keys: thread_id, checkpoint_ns, checkpoint_id")` | **B-65 第 18 轮**(研发,源码未变) |
|
|
|
+| `test_auto_tag.py` | 5 | `chat 端点返回 500`,日志 `ImportError('DLL load failed while importing chromadb_rust_bindings')` | **B-54 环境**(本机缺 VC++ 运行时);251 上同 5 例为 **LLM 401**(B-74)→ 同 5 例双环境不同根因 |
|
|
|
+| `test_intent.py` | 4 | `assert <Intent.CHAT> == <Intent.ANALYSIS/RECOMMEND/MIND/HEALTH>`,日志 `401 Authentication Fails, api key ****ocal is invalid` + `Event loop is closed` | **B-82 第 14 轮**(LLM 凭据失效 → 分类降级 chat) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、需求/场景变更闸门
|
|
|
+
|
|
|
+- `docs/superpowers/specs` 最新文件 mtime = **2026-11-09 01:34**(`signature-canvas2d-rewrite.md`、`diet-recommendation-health-questionnaire-adjust.md`),窗口内**无新增**。
|
|
|
+- `tests/user-scenarios`、`tests/test-cases` 窗口内无他人变更(唯一改动为上轮 R111 本人登记的 `parent.md`)。
|
|
|
+- **判定:本轮 SRS/场景零变更 → 用例集无需因需求变更而更新。**
|
|
|
+- 台账动作:按研发 `faebb1964` 交接要求,将 `HealthDataSourceBridgeContractTest` 的 **14 例 S-cfc-129 契约用例登记为「预期 RED」**(`RED[health.dataSource.bridgeWrite]` 消息内嵌契约锚点),避免下轮误计为产品回归。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、覆盖缺口清单(本轮新增/变化)
|
|
|
+
|
|
|
+| 缺口 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|
|
|
+|------|------|------|--------------|--------|----------|
|
|
|
+| 251 shell 通道取回失败 | 首派 shell 可建(running),`/api/shell/{id}/output` 返回 `ShellNotFoundError`;后续 `POST /shell` 恒 204 无对象 | langgraph 无法在 251 取权威数,长期依赖本机兜底 | 派发前先 `GET /api/shell` 取基线集合;结果落 `nohup ... > /tmp/x.log`,另起 shell `tail` 取回(B-96 法);并对 opencode 版本差异做兼容探测 | P1 | 251 shell 通道恢复 → 实派 pytest 43/32/11 取回即闭环 |
|
|
|
+| 189 shell 通道不可用 | 端口 200、会话可建、`/api/shell` 恒空 | 浏览器任务无法分派 189,单节点串行拉长窗口 | 运维升级 189 opencode 至与 251 同版本;或改用节点本地 Playwright CLI + 产物回传 | P2 | 189 实派 admin 套件 5/5 即闭环 |
|
|
|
+| 根级黑盒 16 红 | 23 例仅 7 过,依赖线上登录态/凭据 | 接口层黑盒覆盖实质为零 | 以测试专用账号 + token 注入改写为可离线直跑 | P1 | 23 例 ≥22 过即闭环 |
|
|
|
+| S-cfc-129 契约无规格落盘 | `bridgeWrite` 仅存在于测试与研发提交信息,`docs/superpowers/specs` 无对应文件 | 契约不可追溯,验收无依据 | 研发补 `docs/superpowers/specs/2026-11-09-health-datasource-bridge-write.md`(§3.1/§3.2/§6) | P1 | 规格落盘 + 14 例转绿即闭环 |
|
|
|
+| SC↔TC 锚点 | SC 244 / TC 481(异常流 238 = 49.5%)/ 显式锚点 143(59.3%)/ 含隐式 236(97.9%) | 覆盖可核验性依赖隐式映射 | 按 R111 `scenario-gap-backlog.md` A 组 5 项补三流用例 + SC-A-27 改号为 TC-A-28 | P1 | A 组补齐 + 锚点 ≥80% 即闭环 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、五要素问题清单
|
|
|
+
|
|
|
+### #1 HealthDataSourceBridgeService 桥接契约整体未实现(S-cfc-129,P0)
|
|
|
+① **问题描述**:`HealthDataSourceBridgeContractTest` 16 例中 **14 例红**,主因 `com.etotem.cfc.service.HealthDataSourceBridgeService` 类不存在,华为/小米同步链路未注入桥接,`schema.sql` 中 `health_dimension_scores.data_source` 注释未扩展 `DEVICE`。
|
|
|
+② **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/unit/HealthDataSourceBridgeContractTest.java`(`bridgeHost_classExists`、`huaweiSyncEngine_injectBridgeHook`、`xiaomiSyncEngine_injectBridgeHook`、`schema_dimensionScores_dataSourceCommentContainsDevice` 等 14 例)。
|
|
|
+③ **最优修改方案**:按契约 §3.1 建 `HealthDataSourceBridgeService`(字段映射 bodyWeight→2 维、step→1 维、同日多行 latest-wins、未知维度码丢弃);§3.2 在 `HealthSyncServiceImpl#saveRecord` 与 `XiaomiHealthServiceImpl#saveRecord` 同事务调用;`schema.sql` 注释增 `DEVICE`;解除 `DimensionScoreServiceImpl.dataSourceRecordService` 死注入。
|
|
|
+④ **修改目的**:设备(D/X)采集数据可靠进入五维体系,避免设备数据与问卷数据在 `health_dimension_scores` 中互相覆盖。
|
|
|
+⑤ **问题闭环**:定向复跑 `HealthDataSourceBridgeContractTest` **16/16 绿**,且全量后端红例由 48 降至 34。
|
|
|
+
|
|
|
+### #2 `/api/mind/**` 鉴权缺口(B-69,P0,第 12 轮)
|
|
|
+① **问题描述**:匿名 `POST /api/mind/fortune` 返回 HTTP 200(body `code:400 用户不存在`);单测 `MindFortuneControllerTest#testGetTodayFortuneWithoutAuth` 断言 `$.code=401` 实得 400。
|
|
|
+② **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/controller/mind/MindFortuneControllerTest.java:23`;生产侧 `cfc-backend/src/main/java/com/etotem/cfc/config/JwtInterceptor.java`(`LOGIN_REQUIRED_PATHS` 缺 `/api/mind/`)。
|
|
|
+③ **最优修改方案**:将 `/api/mind/` 加入 `LOGIN_REQUIRED_PATHS`;或为 `@RequestAttribute("userId")` 缺失场景返回 401 而非依赖绑定层 400。
|
|
|
+④ **修改目的**:心理测评类个人数据不得匿名可达(越权读取风险)。
|
|
|
+⑤ **问题闭环**:`curl -X POST /api/mind/fortune` 返回 401,且 `MindFortuneControllerTest` 1/1 绿。
|
|
|
+
|
|
|
+### #3 langgraph `analyze` checkpointer 缺 thread_id(B-65,P0,第 18 轮)
|
|
|
+① **问题描述**:`test_analyze.py` 2 例 `assert 500 == 200`,异常 `ValueError("Checkpointer requires ... thread_id")`。
|
|
|
+② **测试 bug 点**:`cfc-langgraph/app/analysis_graph.py:96`(`MemorySaver()`)+ `app/analyze.py:35`(`ainvoke` 未传 `config={"configurable":{"thread_id":...}}`)。
|
|
|
+③ **最优修改方案**:`ainvoke` 补 `thread_id`(可用 `report_id` 作稳定键),或改用无状态 checkpointer。
|
|
|
+④ **修改目的**:`/api/v1/analyze` 可用性(核心 AI 链路零 500)。
|
|
|
+⑤ **问题闭环**:`test_analyze.py` 2/2 绿,且 251 live `POST /api/v1/analyze` 连续 3 次 200 且 <30s。
|
|
|
+
|
|
|
+### #4 langgraph LLM 凭据失效导致分类/打标降级(B-74/B-82,P0,第 14 轮)
|
|
|
+① **问题描述**:`test_intent.py` 4 例断言失败(全部降级为 `chat`),日志 `401 Authentication Fails, api key ****ocal is invalid`;`test_auto_tag.py` 5 例 chat 端点 500(251 侧同为 LLM 401)。
|
|
|
+② **测试 bug 点**:`cfc-langgraph/app/agents/intent_classifier.py:62`(异常即降级 `chat`)、`cfc-langgraph/app/prompt_service.py:118`(提示词加载 `All connection attempts failed`)。
|
|
|
+③ **最优修改方案**:251 注入有效 LLM 凭据(`OPENAI_API_KEY`/内网网关);分类器降级分支打 WARN 并暴露指标,禁止静默降级;LLM/检索调用统一加 timeout + 熔断。
|
|
|
+④ **修改目的**:AI 管家意图路由与文章打标可信,避免全量走 chat 分支。
|
|
|
+⑤ **问题闭环**:251 复跑 `test_intent.py` 4/4 + `test_auto_tag.py` 5/5 绿。
|
|
|
+
|
|
|
+### #5 251 `chat`/`analyze` 双接口挂起(B-90,P0,第 5 次复证)
|
|
|
+① **问题描述**:`/health` 200(15.9ms),但 `POST /api/v1/chat` 与 `POST /api/v1/analyze` 均 **40s 零字节超时(http=000)**;R104 曾记 `analyze` 恢复 200/21.5s,本轮回退。
|
|
|
+② **测试 bug 点**:`cfc-langgraph/app/main.py` 聊天/分析入口无超时与熔断(B-84 同源);LLM 调用阻塞整条请求。
|
|
|
+③ **最优修改方案**:LLM 与向量检索全部加显式 timeout(≤20s)+ 熔断 + 降级兜底;网关层对 `/api/v1/*` 增加 504 快速失败。
|
|
|
+④ **修改目的**:AI 主链路可用性(挂起比 500 更差:占满连接池且无错误信号)。
|
|
|
+⑤ **问题闭环**:chat/analyze 各连跑 3 次均 200 且 <30s,并连续 3 天无挂起。
|
|
|
+
|
|
|
+### #6 后端 A 类装置缺陷 16 例(测试侧自处置,P1)
|
|
|
+① **问题描述**:`CfCommissionServiceSettleTest` 8 例 `Wanted but not invoked: cfBalanceService.earnByRule(...)`;`ArticleAutoTagServiceTest` 4 例 `threadPoolTaskExecutor.execute(...)` 期望次数与实际调度不符;`TaskPlanServiceTest` 1 例 `expected 100 but was null`;`GrowthRecordSyncFlowTest` 3 例(1F+2E)。
|
|
|
+② **测试 bug 点**:`CfCommissionServiceSettleTest.java`(档位查询 `selectLevelByUser` 未打桩→返回 null 导致早退);`ArticleAutoTagServiceTest.java`(断言 `execute` 次数,实现改为条件调度)。
|
|
|
+③ **最优修改方案**:为档位/规则查询补 `when(...).thenReturn(...)`;把「execute 调用次数」断言改为「自动打标任务被提交(含参数匹配)」;`TaskPlanService` 断言基线对齐返回类型。
|
|
|
+④ **修改目的**:消除装置噪声,使红例集合只反映真实缺陷(当前 48 红中 16 例为噪声)。
|
|
|
+⑤ **问题闭环**:定向复跑 4 类 33 例全绿,全量红例 48→32。
|
|
|
+
|
|
|
+### #7 EnergySystem 6×500(产品缺陷,P1)
|
|
|
+① **问题描述**:`EnergySystemFlowTest` 7 例中 6 例 HTTP 500(家长查流水、孩子许愿兑换、任务完成发能量等),1 例 `userWithoutFamily` 期望 500 得 5001。
|
|
|
+② **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/integration/EnergySystemFlowTest.java`(6 例 `expected 200 but was 500`)。
|
|
|
+③ **最优修改方案**:取 `IntegrationTest` 日志中的首个生产栈帧定位 500 根因(历轮未采集),修复后同步统一能量业务错误码(5001 与 500 混用)。
|
|
|
+④ **修改目的**:五维能量(身/心/智/行/富)核心账务链路可用。
|
|
|
+⑤ **问题闭环**:`EnergySystemFlowTest` 7/7 绿。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 六、测试覆盖矩阵(20 类 · 三态)
|
|
|
+
|
|
|
+| # | 类型 | 状态 | 证据 |
|
|
|
+|---|------|------|------|
|
|
|
+| 1 | 单元测试 | 已发现 | 337 类 `@Test` 2835(`@Disabled` 4),本轮实跑 2845 例 |
|
|
|
+| 2 | 测试覆盖率 | 未发现 | 无 JaCoCo 报告产物(`target/site/jacoco` 不存在) |
|
|
|
+| 3 | 变异测试 | 未发现 | 无 PIT 配置与产物 |
|
|
|
+| 4 | 集成测试 | 已发现 | `com.etotem.cfc.integration.**`(EnergySystem/GrowthRecordSync/GuideModule 等) |
|
|
|
+| 5 | 契约测试 | 已发现 | DimensionRegistryMap / HealthDataSourceBridge / TeamProfitCron / GuheV2Route(8/8 绿)等 |
|
|
|
+| 6 | 接口 API 测试 | 已发现 | 364 个 `@RestController`;`tests/e2e-live/*.spec.js` 21 例接口契约 |
|
|
|
+| 7 | 系统/端到端 | 已发现 | 浏览器 28/28(admin 5 / frontend 6 / shop 4 / health 13) |
|
|
|
+| 8 | 验收 UAT | 待核实 | 无 UAT 脚本/记录产物 |
|
|
|
+| 9 | BDD 规格 | 未发现 | 无 `.feature` 文件 |
|
|
|
+| 10 | 冒烟测试 | 已发现 | `tests/e2e/ci-smoke.spec.js`、`_smoke_browser.spec.js` |
|
|
|
+| 11 | 回归测试 | 已发现 | 本轮全量 3453 例串行回归 |
|
|
|
+| 12 | 探索性测试 | 未发现 | 无 charter/会话记录 |
|
|
|
+| 13 | 性能测试 | 未发现 | 无 k6/JMeter 脚本(需联网授权,execute 档) |
|
|
|
+| 14 | 可靠性测试 | 待核实 | 无故障注入/长稳压测;仅 B-90 挂起观测 |
|
|
|
+| 15 | 安全测试(SAST/DAST/SCA) | 未发现 | 无 semgrep/zap/依赖扫描产物;仅鉴权契约 13 例 |
|
|
|
+| 16 | 兼容性测试 | 未发现 | Playwright 仅 chromium 单浏览器 |
|
|
|
+| 17 | 可用性测试 | 未发现 | 无可用性任务/量表 |
|
|
|
+| 18 | 无障碍测试 | 未发现 | 无 axe 扫描 |
|
|
|
+| 19 | 质量指标 | 已发现 | 本轮 97.61% / 后端 98.17% / E2E 100% / 红例分层归因 |
|
|
|
+| 20 | QA 流程与代码审查 | 已发现 | `AGENTS.md` 约定核查:`@GetMapping` 仍 8 处(违「统一 @PostMapping」);CI 仅 test-compile+manual |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 七、门禁结论
|
|
|
+
|
|
|
+**⛔ 有条件通过(延续)**——质量基线继续抬升,但用户「全部用例通过」目标未达成:
|
|
|
+
|
|
|
+| 门禁 | 判据 | 实测 | 结论 |
|
|
|
+|------|------|------|------|
|
|
|
+| G1 全量通过率 | ≥98% | **97.61%**(后端 98.17% 单套达线,全量被 langgraph/根级拉低) | ❌ |
|
|
|
+| G2 红例数 | 0 | 75(后端 48 + 根级 16 + langgraph 11) | ❌ |
|
|
|
+| G3 前端 jest | 全绿 | 423/426(3 skip) | ✅ |
|
|
|
+| G4 管理端 jest | 全绿 | 116/116 | ✅ |
|
|
|
+| G5 后端编译完整性 | 0 错、无沉默 | testCompile 343 源 0 错;337/337 类 XML 全产出 | ✅ |
|
|
|
+| G6 浏览器 E2E | 全绿 | **28/28** | ✅ |
|
|
|
+| G7 langgraph | 0 红 | 32/43(11 红) | ❌ |
|
|
|
+| G8 鉴权契约 | 全 401 | health 13/13 ✅;`/api/mind/fortune` ❌ | ⚠️ 部分 |
|
|
|
+| G9 SRS/场景覆盖 | 锚点 ≥80% | SC 244 / TC 481(异常流 49.5%)/ 显式锚点 59.3% / 含隐式 97.9% | ⚠️ |
|
|
|
+| G10 节点派发 | 189+251 实派 | 251 端口✅但 shell 取回失败;189 端口✅但 shell 不可用 | ⚠️ 部分 |
|
|
|
+| G11 CI 门禁 | 失败即阻断 | 无 CI 全量回归(仅 test-compile + manual) | ❌ |
|
|
|
+| G12 用例入库 | SRS 变更即更新 | 窗口零变更;S-cfc-129 14 例预期 RED 已登记 | ✅ |
|
|
|
+
|
|
|
+**升级「通过」门槛**:① S-cfc-129 桥接实现落地(14 红转绿);② B-69 mind 鉴权 + EnergySystem 6×500 + A 类 16 例清零;③ langgraph B-65/B-74/B-82 归零;④ 251 chat/analyze 恢复并加超时熔断;⑤ 根级黑盒 16 红可离线直跑;⑥ CI 接入全量回归阻断。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 八、对照用户双目标
|
|
|
+
|
|
|
+- **目标①「所有测试用例全部覆盖并通过」**:⚠️ **未达成**。全量 3453 例 3371 过(97.61%);浏览器 E2E 与前端/管理端全绿,红例全部有归因、无未知红;后端 48 红中 14 为预期 RED(契约未实现)、16 为测试装置、18 为产品缺陷。
|
|
|
+- **目标②「SRS/场景变更即更新用例」**:✅ 本轮窗口 **零变更**(无新规格入库);台账按研发交接补登 S-cfc-129 14 例预期 RED,保证下轮不误判。
|
|
|
+- **目标③「结果有变 → 提交远程 + 通知研发」**:✅ 本轮结果较 R111 有实质变化(后端首次全量跑完 98.17%、浏览器 28/28、langgraph 逐例一致、B-92 磁盘闭环、189 端口恢复)→ 已提交并推送 + 仓库通知落地。
|
|
|
+
|
|
|
+*本轮为只读审查 + 受控执行:未改生产源码、未装依赖、未启停服务;后端全量在工作区直接运行(工作区已跟踪文件跑前跑后 0 修改)。*
|