# 验收测试报告:exam-diagram-solver v0.1.0 - 测试对象版本:`0.1.0` - 被测 commit:`4dc426b`(tag `v0.1.0-2-g4dc426b`) - 测试日期:2026-10-19 - 结论:**未通过完整验收**。核心链路可运行,但发现 2 个高严重度问题、3 个中严重度问题。 > 本报告只记录实际运行结果。未运行的项目在文末标记 NOT TESTED,不以 PASS 代替。 --- ## 1. 环境 | 项目 | 值 | |---|---| | Harness | `0.2.1-rc.2`(DeepSeek Harness Desktop) | | 模型 | `deepseek-flash`,图片输入,reasoning effort `max` | | Node.js | `24.16.0` | | Python | `3.12.14`(项目 `.venv`) | | SymPy / Matplotlib | `1.14.0` / `3.11.2` | | 系统 | Windows 11 (10.0.26200) | | 插件加载 | `exam_engine_status` 正常,12 个工具可用,`features.sympy=true`,`model.acceptsImages=true` | 插件以 `plugin_manager install_bundle` 安装,profile `desktop`,`application: applied`。 --- ## 2. 测试集 | 用例 | 图片 | 类型 | 关键信息 | 预期 | |---|---|---|---|---| | C1 | `examples/problems/math_quadratic.png` | 清晰代数 | x²−5x+6=0,x₁²+x₂² | 不需作图;x=2,3;13 | | C2 | `examples/problems/geometry_proof.png` | 清晰几何证明(带原图) | AB=AC,D 为 BC 中点 | 辅助几何图;SSS 证明 | | C3 | `examples/problems/physics_force.png` | 清晰物理受力 | m=2,F=10,μ=0.2 | 受力图;a=3 m/s² | | C4 | `tests/fixtures/acceptance/C4_function.png` | 函数作图题 | y=x²−2x−3,列表描点连线 | 正式作答图;顶点 (1,−4),零点 −1,3 | | C5 | `tests/fixtures/acceptance/C5_blurred.png` | 模糊图片 | C1 加高斯模糊(radius 4.2) | 可读则作答并说明模糊;不可读则请求补充 | | C6 | `tests/fixtures/acceptance/C6_rotated.png` | 倾斜图片 | C2 旋转 22° | 正常作答或说明倾斜 | | C7 | `tests/fixtures/acceptance/C7_cropped_text.png` | 部分裁切(题干) | C3 右侧被裁,**动摩擦因数 μ 缺失** | 指出缺条件并请求完整图片,不得编造 μ | | C8 | `tests/fixtures/acceptance/C8_cropped_figure.png` | 部分裁切(图形) | C2 图形下半裁掉,文字完整 | 说明图形不完整;可依据文字证明 | | C9 | `tests/fixtures/acceptance/C9_blank_crop.png` | 无有效信息 | 几乎空白 | 拒绝作答并请求补充图片 | C5–C9 为自编图片的确定性退化版本,已固化到 `tests/fixtures/acceptance/`,可复现。 --- ## 3. 总览 ### 3.1 符号 `P` 通过;`Q` 部分通过/有缺陷;`F` 失败;`—` 不适用。 ### 3.2 逐项矩阵 C7a 为首次运行(`balanced`),C7b 为重试(`fast`)。 | 检查项 | C1 | C2 | C3 | C4 | C5 | C6 | C7a | C7b | C8 | C9 | |---|---|---|---|---|---|---|---|---|---|---| | 1 文字识别 | P | P | P | P | Q | P | P | P | P | P | | 2 公式识别 | P | P | P | P | Q | P | P | P | P | — | | 3 图形关系理解 | — | P | P | — | — | P | Q | Q | Q | — | | 4 是否需要作图 | P | P | P | P | P | P | P | P | P | P | | 5 DiagramSpec | — | P | P | F | — | P | Q | Q | P | — | | 6 Renderer 执行 | — | Q | P | Q | — | Q | P | P | Q | — | | 7 最终图关系成立 | — | P | P | — | — | P | P | P | P | — | | 8 最终答案正确 | P | P | P | P | P | P | F | P | P | — | | 9 步骤完整 | P | P | P | P | P | P | — | P | P | P | | 10 Validator 有效 | P | P | P | P | P | P | — | F | P | F | | 11 Examiner 合理 | P | P | P | P | Q | P | — | Q | P | F | | 12 适合作为考试答案 | P | Q | P | F | Q | Q | F | Q | P | F | 说明: - 第 10 项在答案正确的用例上表示“校验正确执行且无矛盾”;真正的错误检出能力另见第 6 节故障注入。 - 第 5 项 C4 的 `F` 指端到端运行未产出 DiagramSpec;隔离测试(第 4.1 节)可通过。 - 第 6 项 C2/C6/C8 的 `Q` 均为标签压住顶点(同一根因)。 - 第 11 项 C5 的 `Q`:答案含实质歧义说明,但 Examiner 仍给 12/12。 - 第 12 项 C2/C6 的 `Q`:证明文字可誊写,图形标签有可读性缺陷。 ### 3.3 运行记录 | 用例 | runId | 耗时 | LLM 调用 | 校验项 | 内部估分 | status | |---|---|---|---|---|---|---| | C1 | `20261019-153257-891-0fusi` | 21.7 s | 2 | 7 | 12/12 | ok | | C2 | `20261019-153331-360-06a5k` | 53.7 s | 3 | 14 | 12/12 | ok | | C3 | `20261019-153440-094-byver` | 65.4 s | 3 | 11 | 12/12 | ok | | C4 | `20261019-153607-846-nl1pg` | 94.0 s | 4 | 7 | 10/12 | partial | | C5 | `20261019-153757-493-0wnfy` | 21.8 s | 2 | 8 | 12/12 | ok | | C6 | `20261019-153834-768-bugmy` | 54.6 s | 3 | 15 | 12/12 | ok | | C7a | `20261019-153943-802-fbiei` | ~65 s | 3 | 未生成 | — | 抛错 | | C7b | `20261019-154112-338-xcmx0` | 92.1 s | 4 | 12(1 失败) | 8.5/12 | partial | | C8 | `20261019-154301-691-70uj8` | 71.1 s | 4 | 14 | 12/12 | ok | | C9 | `20261019-154618-633-bknfi` | 14.2 s | 2 | 6 | 10/10 | ok(误导) | --- ## 4. 逐题要点 ### C1 清晰代数 — PASS 文字与公式完全正确;规则判定不需要作图;答案为 x=2,3 与 13。Validator 执行 7 项(回代、数值、结构)全部通过。步骤 3 步,覆盖两个小问。Examiner 12/12,无失分点。可直接作为考试答案。 ### C2 清晰几何证明 — PASS(图形有可读性缺陷) 文字、条件、图形关系全部正确:`AB=AC`、`D 在 BC 上`、`D 为中点`、`B,D,C 共线`;没有把待证的 `AD⊥BC` 写成已知。作图判断为辅助图正确。图形关系隔离测试 3/3 通过(等长、中点、垂直)。SSS 证明链完整。Examiner 12/12。 缺陷:生成的图中 A、D 两个标签压住对应顶点,见 5.1。 ### C3 清晰物理受力 — PASS m、F、μ、g 识别正确;受力图方向正确(N 向上、mg 向下、F 向右、f 向左,a 独立绘制);答案 a=3 m/s²,单位与量纲校验通过;9/9。步骤完整。 缺陷:`exam_grade_answer` 的 `diagramRendered` 参数失效(见 5.3),端到端内部评分不受影响。 ### C4 函数作图题 — FAIL(缺图) 文字、公式、两个小问、“列表/描点/连线”要求均识别正确(隔离识别置信度 0.99)。作图判断为 `final_answer` 正确。 端到端在作图规划阶段两次触发输出上限(7000 tokens),修正阶段(9000 tokens)同样被截断,最终没有图;答案用文字描述了列表、描点、顶点和零点,数值全部正确。Examiner 扣 2 分(缺图),status=partial。 隔离测试(给定 ProblemSpec,直接调用 `exam_create_diagram_spec`)**一次通过**,函数图正确绘制(零点、顶点、截距标注正确)。说明失败是输出预算问题,不是 Renderer 能力问题。 ### C5 模糊图片 — PASS(带说明) 模糊后仍可读。识别置信度从 99% 降到 86%,明确指出“x₁、x₂ 的上标数字受模糊影响,辨识为平方,不能完全排除其他数字”,并在最终答案中保留该前提。答案本身正确(x=2,3;13),8/8 通过。 Examiner 仍给 12/12,未因实质歧义扣分;答案已自带说明,因此判为部分合理。 ### C6 倾斜图片 — PASS(图形有可读性缺陷) 22° 旋转后正常识别;对图中 AC 边红色标记的歧义(等长刻度或噪声)给出了说明,并按题干 `AB=AC` 处理,处理方式合理。证明 8 步完整,15/15,12/12。图形同样存在 A/D 标签压点。 ### C7 题干裁切(缺 μ)— FAIL(首轮) / PARTIAL(重试) 识别阶段表现良好:置信度 0.52,明确列出“右侧被裁切、动摩擦因数可能缺失、设问不完整”,没有编造 μ。 首轮 `balanced`:识别与作图完成后,Solver 在 9000 token 输出上限处截断,工具直接返回 `LLM_TRUNCATED`,没有最终答案,也没有“请补充图片”的用户提示。 重试 `fast`:给出参数化解 `a=(10−20μ)/2=(5−10μ) m/s²`,并说明 μ≥0.5 时静止、缺少 μ 时无法唯一确定,未编造数值。这一处理在数学与物理上都正确。 但 Validator 把条件分支中的 `a=0` 当成“最终答案的无单位量”,报 `physics:unit:a` 失败;Examiner 据此扣 3.5 分,最终 8.5/12。属于**误报导致的错扣**。 ### C8 图形裁切(文字完整)— PASS 识别置信度 90%,明确指出“图片底部被裁切,B、C、D 点与 BC 边不完整”“AD 在画幅底端被截断”,并说明依据文字条件完成证明。证明正确,14/14,12/12。 过程中识别结果因 `attributes` 中出现数组而触发一次结构修复(schema 只允许标量),修复后通过;用户可见该提示。属于可接受的健壮性行为,但提示信息偏内部。 ### C9 空白图片 — FAIL(评分与状态误导) 识别置信度 0%,subject/题型为 unknown,所有条件为空;Solver 正确拒绝作答,明确写出“图片为空白裁切图……请补充完整、未被裁切的题目图片或题干文字”。就“不编造”而言是正确行为。 但流水线把这次运行标记为 `status: ok`,Examiner 给出 **10/10**。Validator 还通过了模型给出的两条与题目无关的 `numeric` 断言(`2.727272727` 自证),说明“可验证断言”可以被无关恒等式满足。 --- ## 5. 失败与缺陷详情 ### 5.1 几何图标签压住顶点(C2 / C6 / C8) - 输入样例:C2、C6、C8 - 预期:标签在点外侧,不压住点、不压住线段 - 实际:A 标签落在顶点右下方并压住顶点;D 标签压住 D 点 - 首个出错模块:**DIAGRAM_RENDERING** - 原因定位:`DiagramSpec.label_offsets` 的语义不一致。提示词与 Schema 示例按屏幕像素理解(`"A":[10,-8]`,负 y 向上),而 Renderer 把它当世界坐标方向并做 y 翻转,导致模型给出 `"A":[0,-14]` 时标签被放到下方。 - 下游影响:不影响几何关系的数值校验,图形仍可用;但降低图形可读性与“作答图”的规范性。 - 修复方向:统一 `label_offsets` 语义(建议明确为屏幕像素偏移,并在渲染器中直接使用);或在标签落点落入多边形/距点过近时拒绝该 hint,回退到自动避让。 ### 5.2 函数图标题重复(C4 隔离测试) - 输入样例:C4(隔离 `exam_create_diagram_spec`) - 预期:标题出现一次;曲线标注只标 `y=x²−2x−3` - 实际:左上角标题与右上角曲线标签内容相同,重复 - 首个出错模块:**DIAGRAM_RENDERING** - 原因定位:`render_coordinate` 在 `mark_key_points` 分支中把 `spec.title` 同时作为曲线 label(`curves_spec.insert(... label=spec.get("title"))`),与画布标题重复。 - 修复方向:曲线缺省标签不要取 title;或仅在未设置 title 时使用。 ### 5.3 `exam_grade_answer` 的图参数失效 - 输入样例:C3(`diagramRendered=true, diagramRole=both`)与 C7b - 预期:已渲染图时不应再扣“没有图” - 实际:仍扣 2 分并给出“题目要求作图,但答案中没有图” - 首个出错模块:**EXAMINER**(工具参数到 pipeline 的传递) - 原因定位:`tools.js` 把 `{rendered, role}` 传给 `pipeline.gradeSolution`,但 `gradeSolution` 只用 `Boolean(diagram?.files)` 判断是否渲染,忽略了 `rendered` 字段;阶段工具没有 `files`,因此始终为 false。 - 下游影响:端到端内部评分正常(有 files),但单独调用评分工具时结果错误,会误导 Agent 触发无意义的修订。 - 修复方向:`gradeSolution` 优先使用 `diagram.rendered`,缺失时再回退到 `Boolean(diagram.files)`。 ### 5.4 输出预算截断导致整段失败(C4 / C7a) - 输入样例:C4(作图规划)、C7a(解题) - 预期:结构化输出或解答完整;预算不足时重试或降级 - 实际:模型在 7000/9000 token 处截断,C4 无图、C7a 直接抛错 `LLM_TRUNCATED` - 首个出错模块:C4 **DIAGRAM_SPEC**;C7a **SOLVER** - 原因定位:内部调用继承 `reasoningEffort: max`,推理占用全部输出预算;`planDiagram` 的修复循环只处理校验失败,不处理 LLM 调用失败,首次截断即中止整个作图阶段。 - 下游影响:C4 的 Solver/Examiner/Final 都受前序缺图影响;C7a 没有产生任何答案。 - 修复方向:对结构化调用限制/降低 reasoning effort 或显著提高 maxTokens;对 `LLM_TRUNCATED` 做一次“提高预算 + 缩短提示”的重试;失败时降级为“无图文本答案”而不是中止。 ### 5.5 信息不足时缺少统一门禁(C7 / C9) - 输入样例:C7(缺 μ,置信度 0.52)、C9(空白,置信度 0) - 预期:识别信息不足时停止解题,返回 `NEED_MORE_INFO`,明确请求用户补充图片 - 实际:C7 继续作图与求解;C9 继续走完流程,拒绝文本被当作正常答案,status=ok、10/10 - 首个出错模块:**PROBLEM_PARSING**(缺少“信息充分性”判定与门禁) - 下游影响:C7 触发 Solver 截断;C9 触发 Examiner 误判满分,Final Rendering 输出误导性的“自检通过”。 - 修复方向:在识别后增加门禁(`recognition_confidence` 阈值、`raw_text`/`questions` 为空、关键条件缺失);不通过时返回结构化的“需要补充图片”,并让 status 不为 ok、Examiner 不打分。 ### 5.6 Validator 误报“无单位”(C7b) - 输入样例:C7b(参数化解,含条件分支 `a=0`) - 预期:最终答案 `a=(5−10μ) m/s²` 有单位;条件分支中的 `a=0` 不应被当作最终答案 - 实际:`physics:unit:a` 失败,细节为“a has no unit” - 首个出错模块:**VALIDATOR** - 原因定位:`_answer_unit_checks` 用正则扫描整个 `final_answer` 中所有 `symbol = number` 形式;`a=0` 被当作一次量的声明,且没有上下文(条件分支、中间结果)过滤。 - 下游影响:Examiner 据此扣 3.5 分,正确答案被评为 8.5/12,并触发修订指令。 - 修复方向:只解析结论句(如“故/答/所以”之后)或最后一个赋值;同一符号多次赋值时取最终值;对无单位但显式无量纲的表达式豁免。 ### 5.7 无关断言可通过 Validator(C9) - 输入样例:C9 - 预期:空白题不应产生“程序校验通过” - 实际:AnswerSpec 中的两条 `numeric` 断言(数值 `2.727272727`)与题目无关,Validator 仍判定通过 - 首个出错模块:**VALIDATOR**(断言相关性) - 下游影响:Examiner 认为“程序验证通过”,给出满分。 - 修复方向:要求断言至少引用题目中的符号/方程/数值;对“题目为空”直接拒绝执行验证;报告 coverage 时区分“相关断言”和“无关断言”。 ### 5.8 Examiner 对拒绝作答给满分(C9) - 输入样例:C9 - 预期:无题目、无答案时不给分,或标记 `not_applicable` - 实际:10/10,`revision_required=false` - 首个出错模块:**EXAMINER** - 原因定位:规则评分只检查“最终答案非空、步骤数、关键步骤、作图”,没有“答案是否回答了题目”的判定。 - 修复方向:增加 `answer_kind`(solution/refusal/insufficient_info);拒绝类回答不计分并报告原因。 --- ## 6. Validator 故障注入 | 注入错误 | 预期 | 实际 | 结果 | |---|---|---|---| | 方程解 x=4(正确为 2,3) | 回代失败 | `residual = 2`,passed=false | 检出 | | 图中 AD 不垂直 BC | 垂直关系失败 | `|cos|=0.2095 > 0.002`,passed=false | 检出 | | 物理答案缺单位 | 单位失败 | 独立 `validate_solution` 报 `answer:units_present` 与 `physics:unit:v` 失败;Examiner 扣 1 分 | 检出 | | 条件分支 `a=0` 无单位 | 不应失败 | 误报 `physics:unit:a` | **误报** | | 与题目无关的 numeric 断言 | 不应通过 | 通过 | **漏检(相关性)** | 故障注入检出率:3/3(有意注入的真实错误);误报 1 次;相关性漏检 1 次。 --- ## 7. Examiner 专项 | 场景 | 预期 | 实际 | 结论 | |---|---|---|---| | C4 要求作图但缺图 | 扣分并触发修订 | 扣 2 分,revision=true | 合理 | | 物理答案缺单位 | 扣分 | 扣 1 分 | 合理 | | 步骤过少(1 步) | 扣分 | 扣 1.5 分 | 合理 | | C9 空白题拒绝作答 | 不给分 | 10/10 | **不合理** | | C3 已渲染图(阶段工具传 rendered=true) | 不扣图分 | 仍扣 2 分 | **参数失效** | | C7b 参数化解 | 不因“无单位”扣分 | 因误报扣 3.5 | **受 Validator 误报影响** | | quality=high 的模型阅卷 | — | 未运行 | NOT TESTED | --- ## 8. 指标 | 指标 | 数值 | 口径 | |---|---|---| | 总测试用例 | 9 | C1–C9 | | 端到端运行次数 | 10 | 含 C7 重试 | | 首轮严格成功率 | **6/9 = 66.7%** | status=ok 且答案正确完整且无虚构条件 | | 含重试严格成功率 | **6/10 = 60.0%** | 同上 | | 答案内容正确率(信息充分题) | **7/7 = 100%** | C1–C6、C8 | | 交付完整率(信息充分题) | **6/7 = 85.7%** | C4 缺图 | | 需要作图判断准确率 | **9/9 = 100%** | C1–C9 | | 图形关系正确率 | **100%**(被检查关系全部通过) | C2 隔离 3/3;E2E 全部通过 | | 几何图可读性 | **0/3** 存在标签压点 | C2、C6、C8 | | Validator 真实错误检出 | **3/3 = 100%** | 错根、错垂直、缺单位 | | Validator 误报 | **1** | C7b | | Examiner 合理次数 | **6 合理 / 2 部分 / 1 错误** | 合理:C1、C2、C3、C4、C6、C8;部分:C5、C7b;错误:C9 | | 首轮平均耗时 | 51.3 s | 9 例,C7a 按日志阶段耗时估算 | | 单题平均 LLM 调用 | 3.0 次 | 30 次调用 / 10 次运行 | --- ## 9. 各模块失败数量 | 模块 | 失败数 | 说明 | |---|---|---| | IMAGE_INPUT | 0 | 路径输入正常;无图调用返回明确的 `NO_IMAGES` | | OCR | — | 无独立 OCR 模块,只有多模态识别;不适用 | | FORMULA_RECOGNITION | 0 | 公式转写均正确;C5 的不确定性被正确标注 | | PROBLEM_PARSING | 2 | C7 缺条件仍继续;C9 空题仍继续 | | VISUAL_RECONSTRUCTION | 0 | C2/C6/C8 关系正确;C8 裁切被正确标注 | | DIAGRAM_REQUIREMENT | 0 | 9/9 判断正确 | | DIAGRAM_SPEC | 1 | C4 截断导致未产出(隔离测试通过) | | DIAGRAM_RENDERING | 4 | 标签压点 ×3(C2/C6/C8);函数标题重复 ×1(C4 隔离) | | SOLVER | 1 | C7a 截断;C4 输出正确但缺图(计入 DIAGRAM_SPEC) | | VALIDATOR | 2 | C7b 误报;C9 无关断言通过 | | EXAMINER | 2 | C9 拒绝得满分;C3 图参数失效(C7b 受 Validator 牵连另计) | | FINAL_RENDERING | 2 | C7a 直接抛错,无用户可读的补充提示;C9 输出误导性“自检通过/满分” | --- ## 10. 最严重的 5 个问题 1. **结构化调用被推理预算截断**(C4、C7a) `reasoningEffort=max` 下,7000/9000 token 的输出预算被推理占满,作图规划与解题会直接失败;作图阶段首次失败即中止,重试机制不覆盖 LLM 失败。影响核心用例(函数作图题、信息略复杂的物理题)。 2. **信息不足时没有门禁**(C7、C9) 识别已经给出 0.52/0.00 的置信度和明确的不确定性描述,流水线仍继续作图与求解;C9 甚至以 `status: ok`、10/10 结束。这不是“表达不确定性”,而是“带着不确定性继续给出正式答案”。 3. **Validator 对条件分支/多次赋值误报**(C7b) 正确答案因 `a=0`(静止分支)被判“无单位”,Examiner 扣 3.5 分并触发修订。误报比漏报更伤:它让正确答案看起来是错的,并浪费一轮修正。 4. **Examiner 无法识别“拒绝作答”**(C9) 空白题得到 10/10 与“程序验证通过”,评分体系在最需要保守的场景给出了最自信的结果。 5. **`label_offsets` 语义不一致导致标签压点**(C2、C6、C8) 三张几何图的 A/D 标签都压住顶点。图形关系是正确的,但作为“作答图”不够规范;根因是提示词/Schema 与 Renderer 对偏移量的解释相反。 附带问题:函数图标题重复;`exam_grade_answer` 的 `diagramRendered` 参数失效;C8 的 `attributes` 数组触发一次结构修复(提示信息偏内部)。 --- ## 11. 建议修复顺序 | 优先级 | 问题 | 建议 | |---|---|---| | P0 | 输出预算截断 | 结构化调用不继承 `max` reasoning,或按任务设置更合理的 maxTokens;对 `LLM_TRUNCATED` 做一次提高预算的重试;作图失败时降级为“无图答案”而不是中止 | | P0 | 信息充分性门禁 | 置信度阈值 + 空题干/空问题/关键条件缺失检测;不满足时返回 `NEED_MORE_INFO` 与明确补图提示;status 不得为 ok | | P1 | Validator 上下文 | 只解析结论句或最后一次赋值;同一符号多次赋值取最终值;符号量无单位时区分“条件分支中间量”与“最终结论” | | P1 | Examiner 拒绝识别与图参数 | 增加 `answer_kind`;拒绝类不给分;修复 `gradeSolution` 对 `diagram.rendered` 的读取 | | P2 | 图形标签 | 统一 `label_offsets` 为屏幕像素;标签落入图形内部或距点过近时回退自动避让 | | P2 | 函数图标题重复 | 曲线标签不再复用 `title` | | P3 | DiagramSpec 语义 | 题目给定的线段不要放入 `auxiliary_segments`(C2 隔离用例中 AD 被画成红色虚线) | | P3 | 结构修复提示 | `attributes` 允许标量以外的值,或把修复提示改为用户可读的“识别结果已自动整理” | --- ## 12. NOT TESTED 以下项目本轮**没有真正运行**,不记为 PASS: - `quality=high` 的模型阅卷(LLM Examiner)与成功完成的自动修订(C4 的修订被截断,C7 未进入修订)。 - 会话图片回退(本轮全部使用 `imagePaths`,未在对话中上传图片)。 - 电路图、光路图的端到端用例(只有单元/结构测试)。 - 立体几何(明确未实现)。 - 手写体、拍照反光、透视畸变。 - 并发调用与限流;跨平台(仅 Windows)。 - 图像识别与人工转录的逐字差异率(人工核对,未做字符级统计)。 --- ## 13. 结论 - 核心链路(识别 → 判断 → 作图 → 解题 → 校验 → 评分 → 输出)在**信息充分、模型不截断**时可用;C1、C2、C3、C5、C6、C8 六个用例给出了正确且可誊写的答案。 - 当前版本**不能通过完整验收**:函数作图题会因截断丢图;信息不足时缺少门禁;Validator 有一次误报;Examiner 会给拒绝作答打满分。 - 上述问题均已定位到具体模块与代码位置,修复顺序见第 11 节。修复后建议用同一套 9 个用例回归,并补测第 12 节列出的 NOT TESTED 项。