mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 00:21:58 +00:00
评测前端认两种分析期望:题目编辑器在预览之后选贡献或判定(分析方法、模式、按哪几列、期次、点名前几段),试算写出服务端算的判定和判定语;结果页逐题写期望和答案的判定,点开写判定语、引用了哪一份结论或正文那一句;总览按期望的种类分开写结论
- typesEval.ts:期望种类加 contribution、verdict,期望带 op、mode、params;EvalAnalysisOp、EvalAnalysisMode、EvalJudgement(同服务端契约和 judgements.JUDGEMENTS);期望值、评分带判定类、点名的段、方向、判定语;总表加 outcomes_by_kind - termsEval.ts:贡献、判定的叫法;分析方法、模式的叫法和契约的 OP_LABELS、MODE_LABELS 一字不差(test_frontend_eval_unions 逐个对照,连同判定类);判定类、方向、参数的叫法;指纹差异一句补上分析设置 - parts.tsx:期望写成「变化拆解(可加) · 按地区 · 销售额」;判定写成「主要来源:华东(下降)」「超出常规波动(上升)」「差异站得住(西南高于华东)」,算不了的照实写原因;判定类、段、方向都是服务端给的,界面只套叫法 - CaseEditor.tsx:分析期望的表单按分析方法列参数(参数名同分析工具,列从预览结果里选),换方法、模式只留新方法还认的参数;编辑配了几个期望的题时另外的期望列出来、保存时照旧带上(以前只留第一个,第二个期望会丢) - EvaluationPage.tsx:逐题表、展开的明细、总览按种类 - scripts/check-evals.mjs:夹具补分析期望(加题选算子、试算、保存的请求体不带来源方向判定,编辑保留另外的期望;结果页四种结论、点开的明细、总览按种类),共 130 项
This commit is contained in:
@@ -27,8 +27,8 @@ def _union(name: str) -> list[str]:
|
||||
return re.findall(r"'([^']+)'", found.group(1))
|
||||
|
||||
|
||||
def _labels(path: str) -> list[str]:
|
||||
"""EVAL_TEXT 里某一张叫法表(a.b 这样的路径)的键,按写的顺序。只认一行写完、或几行写完的对象字面量。"""
|
||||
def _pairs(path: str) -> list[tuple[str, str]]:
|
||||
"""EVAL_TEXT 里某一张叫法表(a.b 这样的路径)的 (键, 叫法),按写的顺序。只认一行写完、或几行写完的对象字面量。"""
|
||||
text = _source(TERMS_EVAL)
|
||||
*parents, leaf = path.split(".")
|
||||
start = 0
|
||||
@@ -38,7 +38,12 @@ def _labels(path: str) -> list[str]:
|
||||
start += hit.end()
|
||||
hit = re.search(rf"\n\s*{leaf}: \{{(.*?)\}}( as Record<[^>]+>)?,", text[start:], re.S)
|
||||
assert hit is not None, f"EVAL_TEXT 里没有 {path}"
|
||||
return re.findall(r"(\w+): '", hit.group(1))
|
||||
return re.findall(r"(\w+): '([^']*)'", hit.group(1))
|
||||
|
||||
|
||||
def _labels(path: str) -> list[str]:
|
||||
"""EVAL_TEXT 里某一张叫法表的键,按写的顺序。"""
|
||||
return [key for key, _ in _pairs(path)]
|
||||
|
||||
|
||||
def test_statuses_triggers_and_kinds():
|
||||
@@ -93,3 +98,18 @@ def test_signal_bands_follow_the_server():
|
||||
assert _union("EvalE1Band") == [c["band"] for c in SIGNAL_CRITERIA["e1"]]
|
||||
assert _union("EvalE3Band") == [c["band"] for c in SIGNAL_CRITERIA["e3"]]
|
||||
assert set(_labels("signals.band")) == {c["band"] for c in [*SIGNAL_CRITERIA["e1"], *SIGNAL_CRITERIA["e3"]]}
|
||||
|
||||
|
||||
def test_analysis_expectations_follow_the_server():
|
||||
"""分析期望:判定类和服务端 app/eval/judgements 一致;分析方法、模式的叫法和契约(app/analysis/contract 的 OP_LABELS、
|
||||
MODE_LABELS)一字不差——界面上的「变化拆解(可加)」和服务端拼的、证据面板写的是同一种说法。"""
|
||||
from app.analysis.contract import MODE_LABELS, MODES, OP_LABELS, OPS
|
||||
from app.eval.judgements import JUDGEMENTS
|
||||
|
||||
assert _union("EvalJudgement") == list(JUDGEMENTS)
|
||||
assert _labels("analysis.judgement") == list(JUDGEMENTS)
|
||||
assert _union("EvalAnalysisOp") == list(OPS)
|
||||
assert _pairs("analysis.op") == list(OP_LABELS.items())
|
||||
assert _union("EvalAnalysisMode") == list(MODE_LABELS)
|
||||
assert _pairs("analysis.mode") == list(MODE_LABELS.items())
|
||||
assert {m for modes in MODES.values() for m in modes} == set(MODE_LABELS)
|
||||
|
||||
Reference in New Issue
Block a user