修复: B-260617-01 run_workflow审批执行(抽取run_workflow_inner+ai_approve后端分支)

This commit is contained in:
2026-06-17 01:39:28 +08:00
parent f2a56b6982
commit e23b316faf
4 changed files with 129 additions and 17 deletions

View File

@@ -73,6 +73,25 @@ pub async fn run_workflow(
// F-260616-06 ②-2: 工作流联动任务的关联 ID 与目标态(同时 Some 才联动)
task_id: Option<String>,
target_status: Option<String>,
) -> Result<String, String> {
// 瘦转发到 run_workflow_inner(B-260617-01:抽取共用核心供 ai_approve 经
// execute_run_workflow_for_tool 直接调,无需构造 tauri::State)。
run_workflow_inner(&app, &state, name, dag, config, task_id, target_status).await
}
/// 工作流执行核心逻辑(B-260617-01 抽取,命令层瘦转发)。
///
/// 原 `run_workflow` 命令体拆出,使 ai_approve 经 execute_run_workflow_for_tool 直接调用
/// (持 &AppState 而非 tauri::State,绕开 tauri::State 在非命令上下文不可构造的限制)。
/// 语义与原命令完全一致:模板选 DAG → 落执行记录 → spawn 事件转发 + DAG 执行 + 任务联动推进。
pub async fn run_workflow_inner(
app: &AppHandle,
state: &AppState,
name: String,
dag: DagDef,
config: serde_json::Value,
task_id: Option<String>,
target_status: Option<String>,
) -> Result<String, String> {
// 0. F-260616-06 ①-1: DagDef 来源选模板(方案A·最小)。
// 规则:
@@ -102,6 +121,10 @@ pub async fn run_workflow(
name,
dag_json,
status: "running".to_string(),
// B-260617-01: AI 工具经 ai_approve 触发时标 triggered_by=ai(区分人工手动触发)。
// 判据:有 task_id 联动(target_status Some)且当前调用来自 execute_run_workflow_for_tool
// → 由调用方在 name 前缀已含 "AI 推进任务" 字样,此处统一标 manual(向后兼容,不破坏旧记录语义)。
// 精细化 triggered_by=ai 留待后续(需加参数透传,本次最小改动)。
triggered_by: Some("manual".to_string()),
project_id: None,
task_id: task_id.clone(),