新增: AiNode自审闸门阶段3(gate_should_block+verdict=fail阻断下游)
This commit is contained in:
@@ -51,14 +51,22 @@ fn in_progress_template() -> DagDef {
|
||||
|
||||
/// in_review → testing:AiNode 自审 → HumanNode 核对。
|
||||
///
|
||||
/// 拓扑:ai → human 串行。HumanNode reject 走 Err(②-5 已做)→ 工作流 failed →
|
||||
/// ②-4 失败回调退回 in_review(review_rounds+=1)。
|
||||
/// 拓扑:ai → human 串行。阶段3(本批)起 ai_self_review 启用 gate:true:
|
||||
/// - verdict=fail → AiSelfReviewNode 返回 Err → 工作流 failed(不经 human_review)
|
||||
/// → ②-4 失败回调退回 in_review(review_rounds+=1)。
|
||||
/// - verdict=unknown/pass → 放行 human_review,人定最终是否推进。
|
||||
/// HumanNode reject 走 Err(②-5 已做)→ 工作流 failed → ②-4 失败回调退回 in_review。
|
||||
/// 通过则完成回调(②-3)推进 status 到 testing。
|
||||
fn testing_template() -> DagDef {
|
||||
let mut dag = DagDef::new();
|
||||
// 决策 a 步骤③:ai_self_review 节点类型对齐 state.rs 注册的独立自审节点
|
||||
// (四维度 prompt + JSON 解析兜底 + 写回 output_json 加 review 子字段)。
|
||||
dag.add_node("ai_self_review", "ai_self_review", serde_json::json!({}));
|
||||
// 阶段3:gate=true 启用自审闸门(verdict=fail 阻断下游,工作流 failed)。
|
||||
dag.add_node(
|
||||
"ai_self_review",
|
||||
"ai_self_review",
|
||||
serde_json::json!({ "gate": true }),
|
||||
);
|
||||
dag.add_node(
|
||||
"human_review",
|
||||
"human",
|
||||
@@ -127,6 +135,13 @@ mod tests {
|
||||
// 节点类型(决策 a 步骤③:ai_self_review 独立节点类型)
|
||||
let ai = dag.nodes.get("ai_self_review").expect("ai_self_review 存在");
|
||||
assert_eq!(ai.node_type, "ai_self_review");
|
||||
// 阶段3:gate=true 启用自审闸门(verdict=fail 阻断下游)
|
||||
let gate = ai
|
||||
.config
|
||||
.get("gate")
|
||||
.and_then(|v| v.as_bool())
|
||||
.expect("ai_self_review config 应含 gate");
|
||||
assert!(gate, "testing 模板 ai_self_review 应启用 gate:true(阶段3 闸门)");
|
||||
let human = dag.nodes.get("human_review").expect("human_review 存在");
|
||||
assert_eq!(human.node_type, "human");
|
||||
// 边方向:ai → human
|
||||
|
||||
Reference in New Issue
Block a user