refactor(v1.3.1): Phase 3 报告横幅、评分逻辑收敛与成本闭环 #35

Merged
solahqb merged 1 commits from refactor/v1.3.1-phase3-code-quality into main 2026-08-25 18:02:52 +00:00
Owner

Summary

v1.3.1 执行计划 Phase 3(代码质量),基于 v1.3.0 PR #27-#32 审查结论。

3.1 报告渲染 Go/No-Go 横幅

  • HTML:彩色 verdict banner(go 绿 / no_go 红 / conditional 黄),含判定摘要与逐项验收结果
  • Markdown:引用块形式,位于元信息之后、汇总表之前

3.2 LLM 规则共享逻辑收敛

  • 新增 rules/scored_llm.pycall_scored_llm(直连 OpenAI 兼容端点)+ parse_scored_content(0-10 clamp)
  • llm_score / fluency 删除各自的 _call_llm / _parse_score 副本,改调共享模块

3.3 成本跟踪闭环重构

  • 网关新增 chat_with_usage / embed_with_usage:按次返回用量,并发规则下不做总量差值(避免竞态)
  • EvalRule.llm_usage 累加器 + _record_llm_usage;llm_score / fluency / safety(幻觉检测)/ semantic 全部接入
  • 引擎分岗位归集 _usage_by_purpose(judge/generator/embedding/moderation,按 RULE_PURPOSE),写入 RunSummary.eval_usage_by_purpose
  • cost_tracking 重构:get_pricing(data/model_pricing.json 覆盖 → DEFAULT_PRICING)+ build_eval_cost_section
  • 报告 summary 增加 eval_cost 分岗位成本段,Markdown 导出渲染成本表

计划偏差说明

原计划提到 Turn 维度成本函数,但 tutu-api 通道不返回被评侧用量、Turn token 字段从未填充,故删除 aggregate_token_usage / calculate_turn_cost / calculate_case_cost / calculate_run_cost 死代码,成本口径改为评测自身 LLM 消耗(经 ModelGateway 统计)。

Test plan

  • pytest tests/unit/ 707 passed(基线 699 + 新增 8)
  • ruff check backend/ 全绿
  • test_phase3_wiring.py:横幅渲染 ×4、规则用量归集、scored_llm 直连、报告成本段端到端
  • test_cost_tracking.py 重写:计价覆盖文件、未知模型降级、分岗位成本
  • test_llm_score.py patch 目标随模块迁移更新;FakeGateway 补 chat_with_usage
## Summary v1.3.1 执行计划 Phase 3(代码质量),基于 v1.3.0 PR #27-#32 审查结论。 ### 3.1 报告渲染 Go/No-Go 横幅 - HTML:彩色 verdict banner(go 绿 / no_go 红 / conditional 黄),含判定摘要与逐项验收结果 - Markdown:引用块形式,位于元信息之后、汇总表之前 ### 3.2 LLM 规则共享逻辑收敛 - 新增 `rules/scored_llm.py`:`call_scored_llm`(直连 OpenAI 兼容端点)+ `parse_scored_content`(0-10 clamp) - `llm_score` / `fluency` 删除各自的 `_call_llm` / `_parse_score` 副本,改调共享模块 ### 3.3 成本跟踪闭环重构 - 网关新增 `chat_with_usage` / `embed_with_usage`:按次返回用量,并发规则下不做总量差值(避免竞态) - `EvalRule.llm_usage` 累加器 + `_record_llm_usage`;llm_score / fluency / safety(幻觉检测)/ semantic 全部接入 - 引擎分岗位归集 `_usage_by_purpose`(judge/generator/embedding/moderation,按 RULE_PURPOSE),写入 `RunSummary.eval_usage_by_purpose` - `cost_tracking` 重构:`get_pricing`(data/model_pricing.json 覆盖 → DEFAULT_PRICING)+ `build_eval_cost_section` - 报告 summary 增加 `eval_cost` 分岗位成本段,Markdown 导出渲染成本表 ### 计划偏差说明 原计划提到 Turn 维度成本函数,但 tutu-api 通道不返回被评侧用量、Turn token 字段从未填充,故删除 `aggregate_token_usage` / `calculate_turn_cost` / `calculate_case_cost` / `calculate_run_cost` 死代码,成本口径改为评测自身 LLM 消耗(经 ModelGateway 统计)。 ## Test plan - [x] `pytest tests/unit/` 707 passed(基线 699 + 新增 8) - [x] `ruff check backend/` 全绿 - [x] test_phase3_wiring.py:横幅渲染 ×4、规则用量归集、scored_llm 直连、报告成本段端到端 - [x] test_cost_tracking.py 重写:计价覆盖文件、未知模型降级、分岗位成本 - [x] test_llm_score.py patch 目标随模块迁移更新;FakeGateway 补 chat_with_usage
solahqb added 1 commit 2026-08-25 18:01:38 +00:00
refactor(v1.3.1): Phase 3 报告横幅、评分逻辑收敛与成本闭环
All checks were successful
CI / test (pull_request) Successful in 3m58s
2f09ee2bfc
- 报告渲染 Go/No-Go 上线评估横幅(HTML 彩色 banner + Markdown 引用块)
- 抽取 scored_llm 共享模块:llm_score / fluency 直连调用与评分解析收敛
- 网关新增 chat_with_usage / embed_with_usage,规则按次归集 llm_usage
- 引擎分岗位用量归集(judge/generator/embedding/moderation)写入
  RunSummary.eval_usage_by_purpose,并发下不做总量差值
- cost_tracking 重构:data/model_pricing.json 覆盖 + 默认计价表,
  删除从未有数据支撑的 Turn 维度成本函数(偏差说明见 PR)
- 报告 summary 增加 eval_cost 分岗位成本段并在 Markdown 渲染
solahqb merged commit ef27d2260e into main 2026-08-25 18:02:52 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: solahqb/AgentEvalTool#35
No description provided.