|
@@ -0,0 +1,254 @@
|
|
|
|
|
+# 自动化运行证据(第 88 轮 · 2026-11-08 14:00 ~ 15:10)
|
|
|
|
|
+
|
|
|
|
|
+> 触发:定时自动化「作为测试负责人执行自动化测试闭环(全部用例通过 + 覆盖 SRS/场景 + 浏览器走 cfc.iwintrue.com + langgraph 派 251)」。
|
|
|
|
|
+> 执行档:`review`(离线)——不联网装依赖、不启停服务、不改生产代码;仅改测试侧装置文件(有据可查,见 §6)。
|
|
|
|
|
+> 基线:`cfclub` @ `49d7bccac`(= `origin/cfclub`,跑前跑后一致,窗口内零提交)。
|
|
|
|
|
+> 工作区:已跟踪文件 **0 修改**(`git status --porcelain | grep -v '^??'` = 0)→ 后端在本工作区直接跑全量,无需隔离树。
|
|
|
|
|
+> 原始日志:`_r88_backend.log`(后端全量)· `_r88_lg.log` / `_r88_lg2.log`(langgraph 修前/修后)· `_r88_targeted2.log`(定向复跑)· `_r88_agg.json`(聚合)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 1. 实测结果总表
|
|
|
|
|
+
|
|
|
|
|
+| 套件 | 命令 | 结果 | 通过率 | 退出码 |
|
|
|
|
|
+|---|---|---|---|---|
|
|
|
|
|
+| cfc-backend(全量单元+集成) | `mvn -o -B test`(JDK1.8.0_25 + Maven 3.9.9) | **311 类 / 2628 例 / 40F / 34E / 4S → 2550 过** | **97.03%** | 1(有红) |
|
|
|
|
|
+| cfc-frontend(Jest) | `node node_modules/jest/bin/jest.js --ci` | 21 suites · 354 passed / 1 skipped / 355 | 99.72% | 0 |
|
|
|
|
|
+| cfc-web(Jest) | 同上 | 12 suites · 90 passed / 90 | 100% | 0 |
|
|
|
|
|
+| cfc-langgraph(pytest,本机 venv py3.12) | `.venv/Scripts/python.exe -m pytest tests/ --ignore=tests/qna` | 44 collected · **32 passed / 12 failed** | 72.73% | 1 |
|
|
|
|
|
+| admin-desktop(E2E 真浏览器) | `npx playwright test -c playwright.config.live.js --project=admin-desktop` | **5 passed**(TC-A-U01~U05) | 100% | 0 |
|
|
|
|
|
+| frontend-mobile(E2E 真浏览器) | `... --project=frontend-mobile` | **6 passed**(TC-F-U01~U06) | 100% | 0 |
|
|
|
|
|
+| shop-api(E2E 契约) | `... --project=shop-api` | **4 passed**(TC-S-U01~U04) | 100% | 0 |
|
|
|
|
|
+| health-contract(E2E 契约) | `npx playwright test -c playwright.config.health.js` | **13 passed**(TC-H-U01~U10 + TC-HP-U01~U03) | 100% | 0 |
|
|
|
|
|
+
|
|
|
|
|
+**合计 3145 例 / 3054 过 = 97.11%**(剔除 5 skip 后 97.26%);红例 86(后端 74 + langgraph 12)。
|
|
|
|
|
+
|
|
|
|
|
+### 1.1 后端关键度量
|
|
|
|
|
+
|
|
|
|
|
+| 指标 | 值 | 说明 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 测试类 / 用例 | 311 / 2628 | surefire XML 实测,含参数化展开 |
|
|
|
|
|
+| 失败 / 错误 / 跳过 | 40 / 34 / 4 | `@Disabled` 4 例 |
|
|
|
|
|
+| 红类 / 红例 | 27 / 74 | 逐类见 §3 |
|
|
|
|
|
+| 完整性 | **311/311 XML** | 无静默丢失、无 0 字节 XML、`.dump` 0 |
|
|
|
|
|
+| testCompile | **317 源 / 0 错** | 含本轮测试侧修订后重编 |
|
|
|
|
|
+| 恒等式 | `@Test 2618 + 参数化展开 26 − @Disabled 4 − 早退截断 12 = 2628`(误差 0) | 早退截断 12 未逐类取证,标注为「待核实」 |
|
|
|
|
|
+| Maven 总时长 | **46:18** | XML 耗时总和 2361.2s |
|
|
|
|
|
+| 慢类 Top3 | GuideRolePermissionTest 274.3s / ArticleControllerTest 244.7s / ActivityControllerTest 241.5s | B-60(单类超 120s)仍成立 |
|
|
|
|
|
+
|
|
|
|
|
+### 1.2 与上轮基线对比(重要:方向性改善)
|
|
|
|
|
+
|
|
|
|
|
+| 项 | R77 基线(采信值) | 本轮 R88 实测 | Δ |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| 后端用例 | 2398 | 2628 | **+230** |
|
|
|
|
|
+| 后端通过率 | 95.07% | **97.03%** | **+1.96pp** |
|
|
|
|
|
+| 后端红例 | 115 | **74** | **−41** |
|
|
|
|
|
+| 后端红类 | 35 | **27** | **−8** |
|
|
|
|
|
+| 浏览器 E2E | 25/25 | **28/28** | +3(health 13 全绿) |
|
|
|
|
|
+| 契约鉴权(B-61) | 3 红(P0 连续 8 轮) | **13/13 绿** | **闭环** |
|
|
|
|
|
+
|
|
|
|
|
+> 说明:R78~R87 一直未跑后端全量(多轮以「指令排除编译」采信 R77 数字),**本轮首次实测到研发侧修复后的真实基线**。方向:红例 115→74 主要由研发修复(Article/Auth/GuideOrder/GuideTeam 等历史红类已转绿)+ 测试侧装置跟进。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 2. 环境与节点分派实测
|
|
|
|
|
+
|
|
|
|
|
+| 目标 | 结果 | 说明 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| cfc.iwintrue.com:443 | OPEN | `/admin` 302 → 登录页;`/frontend` H5 正常 |
|
|
|
|
|
+| 192.168.16.189:4090 | **OPEN**(HTTP 200,opencode Web UI) | 浏览器节点可用;本机与 189 每节点单任务约束下,本轮**全部浏览器任务在本机串行执行**(`workers:1`),未并发 |
|
|
|
|
|
+| 192.168.16.189:22 | CLOSED(Connection refused) | 无 SSH 通道 |
|
|
|
|
|
+| 192.168.16.251:9000 / :8000 | **CLOSED** | langgraph 服务未监听 → **无法按指令派发 251**,降级本机 venv 直跑(标注未实测项) |
|
|
|
|
|
+| 192.168.16.251:22 | OPEN 但 `publickey,password` 均被拒 | 无可用凭据,不可远程执行 |
|
|
|
|
|
+| 192.168.16.251:8080 | Gogs Git 服务(非 langgraph) | 不可用于 langgraph 派发 |
|
|
|
|
|
+
|
|
|
|
|
+> 分派结论:**langgraph 派 251 未达成**(B-55 延续第 N 轮);浏览器任务按「每节点单任务」在本机单节点串行完成 4 个套件,未触发并发。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 3. 后端 74 例红因三层归因
|
|
|
|
|
+
|
|
|
|
|
+### 3.1 按异常类型(实测统计)
|
|
|
|
|
+
|
|
|
|
|
+| 异常类型 | 例数 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| AssertionFailedError | 24 |
|
|
|
|
|
+| NullPointerException | 16 |
|
|
|
|
|
+| IllegalStateException(均 `Failed to load ApplicationContext`) | 8 |
|
|
|
|
|
+| WantedButNotInvoked(Mockito verify) | 8 |
|
|
|
|
|
+| AssertionError | 5 |
|
|
|
|
|
+| NoSuchElementException(`No value present`) | 4 |
|
|
|
|
|
+| InvalidUseOfMatchersException | 3 |
|
|
|
|
|
+| ArgumentsAreDifferent | 3 |
|
|
|
|
|
+| MockitoException | 2 |
|
|
|
|
|
+| DataIntegrityViolationException(DB 字段截断) | 1 |
|
|
|
|
|
+
|
|
|
|
|
+### 3.2 归因分桶
|
|
|
|
|
+
|
|
|
|
|
+| 归因桶 | 例数 | 判定依据 | 归属 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| **A-1 本轮已修(契约/装置漂移)** | **8** | `guide-bind` 改「提交申请待审批」、`getXxxByChild`→`getXxxByFamilyMember`、`checkMemberOnly` 需 `taskMapper.selectById` 打桩 | 测试侧 |
|
|
|
|
|
+| A-2 Mockito 误用族 | 8 | `InvalidUseOfMatchersException` 3 + `ArgumentsAreDifferent` 3 + `MockitoException` 2 | 测试侧 |
|
|
|
|
|
+| A-3 verify 未触发(未打桩) | 8 | `CfCommissionServiceSettleTest` 8 例 `WantedButNotInvoked: cfBalanceService.earnByRule(...)`,档位/规则查询未 stub | 测试侧 |
|
|
|
|
|
+| A-4 夹具 NPE | 13 | 16 例 NPE 中 **16/16 堆栈首帧均在测试方法内、无生产帧**(B-27 判据),扣除已修 3 例 | 测试侧 |
|
|
|
|
|
+| A-5 Optional 空值 | 4 | `DimensionScoreServiceImplTest` 4 例 `NoSuchElementException: No value present`(repo 未 stub) | 测试侧 |
|
|
|
|
|
+| A-6 上下文加载失败 | 8 | `auditLogAspect` → `auditLogService` 注入链失败(`AdminFamilyOverviewControllerTest` 3 / `FamilyAdminOverviewServiceTest` 3 / `UserServiceFamilyNameLinkTest` 2) | 测试侧(需补 @MockBean) |
|
|
|
|
|
+| A-7 断言基线未细分 | 23 | 剩余 `AssertionFailed`/`AssertionError`,需逐例判定「装置 vs 产品」 | 待核实 |
|
|
|
|
|
+| P-1 产品缺口 | 1 | `MindFortuneControllerTest` 期望 `code=401` 实得 `400` → `/api/mind/` 未入 `LOGIN_REQUIRED_PATHS`(详见 B-69) | 研发 |
|
|
|
|
|
+| E-1 环境/数据 | 1 | `GuideModuleIntegrationTest` MySQL `Data truncation: Out of range` | 环境 |
|
|
|
|
|
+
|
|
|
|
|
+**量化结论**:A 类合计 **72 例**(含已修 8)、产品 1、环境 1、待核实 23。
|
|
|
|
|
+若 A-2~A-6 全部修完(41 例),后端通过率 → **98.59%**、红例 74→33;叠加 A-7 全绿则 → 99.47%。
|
|
|
|
|
+
|
|
|
|
|
+### 3.3 27 个红类清单(按红例数降序)
|
|
|
|
|
+
|
|
|
|
|
+`CfCommissionServiceSettleTest 8` · `EnergySystemFlowTest 6F+1S` · `ProductOrderServiceFulfillmentMultiModeTest 6E` · `GuideFamilyTaskControllerTest 5`(已修)· `PlannerBindInviteFlowTest 5` · `DimensionScoreServiceImplTest 4E` · `FamilyJoinRequestServiceReferrerBindTest 4E` · `AdminFamilyOverviewControllerTest 3E` · `FamilyAdminOverviewServiceTest 3E` · `GrowthRecordSyncFlowTest 3` · `ArticleWorkflowTest 3` · `DimensionRegistryMapContractTest 3F` · `ProductOrderServiceUpdateExpressFieldTest 3F` · `GuideRolePermissionTest 2`(已修)· `FortuneServiceTest 2E` · `UserServiceFamilyNameLinkTest 2E` · `OrchestrationEngineTest 1` · `OrchestrationIntegrationTest 1` · `MembershipPaySwitchTest 1` · `PaymentServiceORDRoutingTest 1` · `DailyCheckinStreakFlowTest 1E` · `GuideModuleIntegrationTest 1E` · `FamilyControllerTest 1`(已修)· `MindFortuneControllerTest 1`(产品)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 4. langgraph 12 例红因(本机 venv 兜底,251 未派发)
|
|
|
|
|
+
|
|
|
|
|
+修前后对比:**17 红 → 12 红**(+6 绿,44 收集 / 32 过)。
|
|
|
|
|
+
|
|
|
|
|
+| 类 | 例数 | 归因 | 类型 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| `test_analyze.py` | 2 | `ValueError: Checkpointer requires ... thread_id` → `/api/v1/analyze` 恒 500 | **产品缺陷(B-65)** |
|
|
|
|
|
+| `test_chat.py` | 1 | 500,`ImportError: chromadb_rust_bindings` DLL 缺失 | 环境(B-54) |
|
|
|
|
|
+| `test_auto_tag.py` | 5 | 依赖 `/api/v1/chat`(RAG/chromadb)→ 同上 | 环境 |
|
|
|
|
|
+| `test_intent.py` | 4 | `prompt_service` 连 `localhost:9082` 失败 + 意图分类降级 `chat` | 环境(需本机后端 + LLM) |
|
|
|
|
|
+
|
|
|
|
|
+**本轮测试侧修复(+6 绿)**:
|
|
|
|
|
+- `test_memory.py` 3 红 → **4 绿**(B-64 闭环):对齐 `MemoryManager` 真实契约(`__init__(embeddings)` / `save_conversation` / `recall`),并以 `patch("langchain_chroma.Chroma")` 隔离原生 DLL 依赖 → 单测不再被宿主机环境拖红;新增守护「旧接口不回潮」。
|
|
|
|
|
+- `test_report_parse.py` 2 红 → **5 绿**(B-66 闭环):样本 PDF 路径由写死容器路径 `/app/cfc/...` 改为 `__file__` 上溯 3 级解析,附 `requires_sample_pdf` 缺样本即 skip。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 5. 浏览器自动化明细(单节点串行)
|
|
|
|
|
+
|
|
|
|
|
+| 套件 | 用例 | 结果 | 耗时 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| admin-desktop | TC-A-U01 登录页渲染 / U02 滑块人机验证 / U03 未登录拦截 / U04 真实登录进主框架 / U05 核心菜单 | **5/5** | 1.7m |
|
|
|
|
|
+| frontend-mobile | TC-F-U01 首页渲染 / U02 五维沙盘 / U03 TabBar 健康 / U04 TabBar 成长 / U05 未登录「我的」鉴权引导 / U06 关键资源无 failed | **6/6** | 1.4m |
|
|
|
|
|
+| shop-api | TC-S-U01 price asc / U02 price desc / U03 默认排序 / U04 非法排序列白名单拦截 | **4/4** | 9.6s |
|
|
|
|
|
+| health-contract | TC-H-U01~U10 华为/小米 10 端点 401 + TC-HP-U01~03 健康方案 3 端点 401 | **13/13** | 7.7s(第 3 次复跑) |
|
|
|
|
|
+
|
|
|
|
|
+> **B-61 闭环证据**:13:41(R87)TC-HP-U01~03 仍 200 直通;本轮 14:14 起转为 **401 `{"code":401,"message":"请先登录"}`**,独立 curl 7 端点全部 401 → 部署已含 `cfclub@de16f40b0`(`JwtInterceptor.java:114` 含 `/api/health/plan/`)。连续 8 轮的 P0 缺口闭环。
|
|
|
|
|
+> **首跑假红已排除(B-67)**:14:11 首次执行 health 出现 10 红(10 例无任何 console 输出、单轮 1.1m),紧接 14:14 `--workers=1 --reporter=list`(13.1s)与 14:38 `--reporter=line`(7.7s)两次独立复跑均 13/13 绿 → 判定瞬时上游抖动,非产品回归、非并发(配置本就 `workers:1`)。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 6. 本轮代码改动(仅测试侧,逐条可复核)
|
|
|
|
|
+
|
|
|
|
|
+| 文件 | 改动 | 依据 | 验证 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| `cfc-langgraph/tests/test_memory.py` | 重写对齐 `MemoryManager` 真实契约 + 隔离 chromadb 原生依赖 + 旧接口守护 | B-64 | `pytest tests/test_memory.py` → **4 passed** |
|
|
|
|
|
+| `cfc-langgraph/tests/test_report_parse.py` | 样本路径可移植化 + `requires_sample_pdf` | B-66 | `pytest tests/test_report_parse.py` → **5 passed**(234.5s) |
|
|
|
|
|
+| `cfc-backend/.../GuideFamilyTaskControllerTest.java` | 3 处服务方法更名(`...ByFamilyMember`)、断言键 `totalChildren`→`totalFamilyMemberren`、2 处 `taskMapper.selectById` 打桩 | 生产重构(孩子→成员)+ `checkMemberOnly` 前置校验 | 定向复跑见 §6.1 |
|
|
|
|
|
+| `cfc-backend/.../GuideRolePermissionTest.java` | 2 处 `taskMapper.selectById` 打桩 | 同上 | 同上 |
|
|
|
|
|
+| `cfc-backend/.../FamilyControllerTest.java` | 新增 `@MockBean TeacherFamilyBindingRequestService` + 断言改为「申请已提交,请等待家庭主账号审批」 | `guide-bind` 契约变更(直接绑定 → 申请审批) | 同上 |
|
|
|
|
|
+
|
|
|
|
|
+> 未改任何生产代码、未放宽断言强度(NPE 类改为「补齐桩」而非「删断言」;契约类改为「对齐新契约」而非「忽略差异」)。
|
|
|
|
|
+
|
|
|
|
|
+### 6.1 定向复跑结果(实测,2026-11-08 15:06)
|
|
|
|
|
+
|
|
|
|
|
+命令:`mvn -o -B test "-Dtest=GuideFamilyTaskControllerTest,GuideRolePermissionTest,FamilyControllerTest" -DfailIfNoTests=false` → **BUILD SUCCESS**
|
|
|
|
|
+
|
|
|
|
|
+| 类 | 全量基线 | 定向复跑 | 结论 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| GuideFamilyTaskControllerTest | 20 例 / 3F+2E | **20 / 0F / 0E**(253.2s) | 5 红全转绿 |
|
|
|
|
|
+| GuideRolePermissionTest | 21 例 / 1F+1E | **21 / 0F / 0E**(59.5s) | 2 红转绿(耗时 274.3s→59.5s,上下文复用) |
|
|
|
|
|
+| FamilyControllerTest | 8 例 / 1F | **8 / 0F / 0E**(181.9s) | 1 红转绿 |
|
|
|
|
|
+| **合计** | 49 例 / 8 红 | **49 / 0 / 0** | **8 例全修复,且同文件其余 41 例无回归** |
|
|
|
|
|
+
|
|
|
|
|
+**预测(未入台账,待下轮全量 clean 复跑确认)**:后端红例 74→66、通过率 97.03%→**97.34%**;全量 3145 例 → **97.37%**。
|
|
|
|
|
+> 方法论纪律(承 B-57):**定向绿不写入基线**,必须由下轮全量 clean 复跑升级为全量证据后才可入台账。
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 7. 覆盖矩阵(20 类 · 三态)
|
|
|
|
|
+
|
|
|
|
|
+| # | 测试类型 | 状态 | 证据 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| 1 | 单元测试 | 已发现 | 后端 311 类 / Jest 355+90 |
|
|
|
|
|
+| 2 | 测试覆盖率 | 未发现 | 无 JaCoCo;N/A |
|
|
|
|
|
+| 3 | 变异测试 | 未发现 | 无 PIT |
|
|
|
|
|
+| 4 | 集成测试 | 已发现 | `integration/` 包 + SpringBootTest |
|
|
|
|
|
+| 5 | 契约测试 | 已发现 | `tests/e2e-live/*contract*`、`*MapContractTest` |
|
|
|
|
|
+| 6 | 接口 API 测试 | 已发现 | shop-api / health-contract / 3194 handler |
|
|
|
|
|
+| 7 | 系统/端到端 | 已发现 | Playwright live 4 套件 28 例 |
|
|
|
|
|
+| 8 | 验收 UAT | 待核实 | 无显式 UAT 记录/签署 |
|
|
|
|
|
+| 9 | BDD 规格 | 未发现 | 无 feature 文件 |
|
|
|
|
|
+| 10 | 冒烟测试 | 已发现 | `tests/e2e/ci-smoke.spec.js` |
|
|
|
|
|
+| 11 | 回归测试 | 已发现 | CI `test-blocking` 两级门禁 |
|
|
|
|
|
+| 12 | 探索性测试 | 未发现 | 无 charter/记录 |
|
|
|
|
|
+| 13 | 性能测试 | 未发现 | 无 k6/JMeter;B-60 有慢类观测 |
|
|
|
|
|
+| 14 | 可靠性测试 | 未发现 | 无故障注入 |
|
|
|
|
|
+| 15 | 安全测试 SAST/DAST | 未发现 | 无扫描器;仅鉴权契约 13 例 |
|
|
|
|
|
+| 16 | 依赖漏洞扫描 | 未发现 | 无 SCA |
|
|
|
|
|
+| 17 | 兼容性测试 | 待核实 | 仅 Chromium;无多浏览器/机型矩阵 |
|
|
|
|
|
+| 18 | 可用性测试 | 未发现 | 无真实用户可用性证据 |
|
|
|
|
|
+| 19 | 无障碍测试 | 未发现 | 无 axe/WCAG |
|
|
|
|
|
+| 20 | QA 流程与度量 | 已发现 | `docs/tdd`、CI、台账、blockers |
|
|
|
|
|
+
|
|
|
|
|
+> 「未发现」仅表示扫描未命中,**不等于项目没做**;扫描未覆盖处一律「待核实」。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 8. SRS / 场景覆盖
|
|
|
|
|
+
|
|
|
|
|
+| 维度 | 数值 | 说明 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| SRS 规格章节(`docs/superpowers/api/API_REFERENCE.md` §4.x) | **170** | — |
|
|
|
|
|
+| 被 E2E 用例显式引用的章节 | **3**(§4.43 / §4.44 / §4.49) | `grep -rhoE '§4\.[0-9]+' tests/ --include=*.spec.js` 去重 |
|
|
|
|
|
+| 章节级锚点覆盖率 | **1.8%** | G9 未达标 |
|
|
|
|
|
+| 今日 SRS 变更 | 2 项(HL-03/R2+R3、HL-04/R4,`87ffb4e3e` / `e7c379e17`) | 已有 TC-HP-U01~03 覆盖,本轮 13/13 绿 → **变更已绑定用例** |
|
|
|
|
|
+| 结构化 TC 台账 | 784(异常流 474 = 60.5%) | `docs/tdd/test/doc-case-execution-report.md` |
|
|
|
|
|
+| 用例可自动化推导 | 253 | 同上 |
|
|
|
|
|
+
|
|
|
|
|
+> 结论:**最新 SRS 变更已覆盖且有实测证据**;但全量 SRS 的章节级锚点覆盖仍极低(3/170),SRS 全覆盖目标未达成。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 9. 门禁结论
|
|
|
|
|
+
|
|
|
|
|
+| 门禁 | 判据 | 实测 | 判定 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| G1 全量通过率 | ≥95% | 97.11%(后端 97.03%) | ✅ |
|
|
|
|
|
+| G2 红例数 | ≤20 | 86(后端 74 + langgraph 12) | ❌ |
|
|
|
|
|
+| G3 小程序 Jest | 0 失败 | 354 过 / 1 skip | ✅ |
|
|
|
|
|
+| G4 管理端 Jest | 0 失败 | 90/90 | ✅ |
|
|
|
|
|
+| G5 编译与完整性 | 0 错 + 无静默丢失 | 317 源 0 错;311/311 XML | ✅ |
|
|
|
|
|
+| G6 浏览器 E2E | 全绿 | 28/28 | ✅ |
|
|
|
|
|
+| G7 langgraph | 0 失败 | 12 失败 | ❌ |
|
|
|
|
|
+| G8 鉴权契约 | 全绿 | 13/13(B-61 闭环) | ✅ |
|
|
|
|
|
+| G9 SRS 锚点覆盖 | ≥60% | 1.8%(3/170) | ❌ |
|
|
|
|
|
+| G10 节点分派 | langgraph 派 251 | 251:9000 CLOSED,本机兜底 | ❌ |
|
|
|
|
|
+| G11 CI 硬门禁 | 流水线可绿 | CI 存在;`langgraph-blocking-pytest` 因 12 红会阻断 | ❌ |
|
|
|
|
|
+| G12 未实测项标注 | 全标注 | 已标注(见 §10) | ✅ |
|
|
|
|
|
+
|
|
|
|
|
+**总判定:⛔ 不通过(有条件)** — 8 项达标 / 5 项未达标(含 1 项不可自主闭环的分派环境)。
|
|
|
|
|
+
|
|
|
|
|
+### 使绿优先级(按性价比)
|
|
|
|
|
+
|
|
|
|
|
+| 序 | 动作 | 预期收益 | 归属 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| P-1 | 修 `auditLogAspect→auditLogService` 注入链(补 @MockBean) | 8 例转绿 | 测试 |
|
|
|
|
|
+| P-2 | `CfCommissionServiceSettleTest` 档位查询补桩 | 8 例 | 测试 |
|
|
|
|
|
+| P-3 | Mockito 误用族(matcher/doNothing/verify)修订 | 8 例 | 测试 |
|
|
|
|
|
+| P-4 | 夹具 NPE 13 例补桩 | 13 例 | 测试 |
|
|
|
|
|
+| P-5 | `MindFortune` 401 口径(`/api/mind/` 入清单) | 1 例 + 安全口径 | 研发 |
|
|
|
|
|
+| P-6 | langgraph `analyze` thread_id(B-65) | 2 例 + 1 端点可用 | 研发 |
|
|
|
|
|
+| P-7 | 251 放通 9000 或提供 SSH 凭据 | G10 | 运维 |
|
|
|
|
|
+| P-8 | 剩余 23 例断言逐例定性 | 23 例 | 测试 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 10. 未实测项(如实标注)
|
|
|
|
|
+
|
|
|
|
|
+- **langgraph 远程派发(251 节点)**:251:9000/8000 CLOSED、22 拒绝公钥/口令 → 本机 venv 兜底,**非 251 环境结果**。
|
|
|
|
|
+- **后端全量未带 `clean`**:复用 `target/`,但以 311/311 新 XML + 时间戳过滤统计,无旧报告混入。
|
|
|
|
|
+- JaCoCo 覆盖率 / PIT 变异 / 压测 / DAST / SCA:本机无工具且 review 档不装依赖 → 未实测。
|
|
|
|
|
+- 无障碍 / 多浏览器兼容 / 真实用户可用性:无资产、无环境。
|
|
|
|
|
+- UAT / BDD / 探索性测试:无记录,标「待核实」。
|
|
|
|
|
+- 恒等式「早退截断 12」未逐类取证。
|