diff --git a/backend/app/engine/nodes/challenge.py b/backend/app/engine/nodes/challenge.py index f1902e78..b7aa24dd 100644 --- a/backend/app/engine/nodes/challenge.py +++ b/backend/app/engine/nodes/challenge.py @@ -19,7 +19,8 @@ 上限:句数、每句查询次数、每句时长、全局每日金额(核查和裁判各记各的账,engine/spend.py)。都按发起时快照的核查 设置(run.options["verify"]),节点上写了的盖过它:审批停下期间改了设置,恢复、接着跑仍按发起时的那份。没有快照 -的运行按设置的当前值。全局关闭且节点没写「启用」时直通;报告没有可审的结论句也直通。 +的运行按设置的当前值。「启用」节点上写了就按节点(写开启时全局关闭也照审),没写跟随设置;不启用时直通,报告没有 +可审的结论句、报告文档读不到时也直通(都记一条 challenge_skipped)。 逐句串行反查:并行的话几句的工具调用在时间线上交错,看不出哪条查询在审哪一句;每日余额按先后扣,结果也才确定。 整个反查连同存审稿记录、发日志都在一个 @task 里:接着跑时取 checkpoint 里的结果,不重复查库、不重复记账,时间线 diff --git a/backend/app/engine/schema.py b/backend/app/engine/schema.py index 58d8a337..db1e5692 100644 --- a/backend/app/engine/schema.py +++ b/backend/app/engine/schema.py @@ -707,8 +707,9 @@ def _check_challenge(node: GraphNode, spec: GraphSpec, result: ValidationResult) for field, message in challenge_problems(node.config): result.add(message, node_id=node.id, field=field, code="challenge.config_invalid") report, problem = challenge_report(spec, node) - if problem or report is None: - result.add(problem or "", node_id=node.id, field="report", code="challenge.report_invalid") + if report is None: + result.add(problem or f"「{type_label(NodeType.CHALLENGE)}」找不到要审的报告", node_id=node.id, field="report", + code="challenge.report_invalid") return writer = spec.node_map()[report] model = node.config.get("model")