修复: Wave5 审批子系统收尾(R7补 types.ts + R9⑪ failed_node + R8 Request 测试)

- R7补: types.ts event.type string→WorkflowEventType 字面量联合(11 变体 snake_case),静态拦截写错 type
- R9⑪: workflow.rs WorkflowFailed failed_node String::new()→状态机取首个 Failed/Cancelled 节点
- R8: human_node 加 request_is_emitted_to_bus 测试,验证 R6(Request 真发到 EventBus)
cargo/vue-tsc 0 err / df-nodes 15 test pass
This commit is contained in:
2026-06-14 16:40:43 +08:00
parent 0ec2b3fd56
commit 3e1f119003
3 changed files with 51 additions and 2 deletions

View File

@@ -132,11 +132,20 @@ pub async fn run_workflow(
state_registry.lock().await.remove(&exec_id);
// 执行失败时补发 WorkflowFailed执行器内部只发 NodeFailed
// failed_node 从状态机取首个失败/取消节点(R9⑪: 原 String::new() 空值)
if let Some(error) = error {
use df_core::types::NodeStatus;
let failed_node = executor
.state_machine()
.snapshot()
.into_iter()
.find(|(_, s)| matches!(s, NodeStatus::Failed | NodeStatus::Cancelled))
.map(|(id, _)| id)
.unwrap_or_default();
event_bus
.send(WorkflowEvent::WorkflowFailed {
error,
failed_node: String::new(),
failed_node,
})
.await;
}