新增: AR-11 数据变更联动(AI 工具执行后 emit df-data-changed+store listen 刷新列表)

audit.rs data_change_for_tool 映射(create_project/idea/task→create,update_*→update,delete_*/purge→delete,restore/bind_directory→update)+emit_data_changed(process_tool_calls 已有 app_handle 无需透传);commands.rs ai_approve 成功路径 emit;types.ts DfDataChangedPayload;project.ts barrel listen df-data-changed + start/stopDataChangedListener 单例;App.vue onMounted 全局挂载+onUnmounted 清理。AI 工具(create/update/delete project/task/idea)执行后前端 Projects/Tasks/Ideas 列表自动刷新。批7,cargo+vue-tsc 0
This commit is contained in:
2026-06-15 05:54:15 +08:00
parent b08adcb9da
commit dc27e79fd2
5 changed files with 107 additions and 1 deletions

View File

@@ -13,7 +13,7 @@ use crate::state::AppState;
use crate::commands::{err_str, now_millis};
use super::agentic::{run_agentic_loop, try_continue_agent_loop};
use super::audit::audit_finalize;
use super::audit::{audit_finalize, emit_data_changed};
use super::conversation::save_conversation;
use super::knowledge_inject::build_knowledge_context;
use super::prompt::build_system_prompt;
@@ -172,6 +172,12 @@ pub async fn ai_approve(
// 审计:人工审批后无论成败回填(决策者=human
audit_finalize(&state, &tool_call_id, audit_status, Some(result_val.to_string())).await;
// AR-11方案A人工审批通过且工具执行成功(非 failed)后 emit df-data-changed,
// 前端 store listen 刷新列表(仅命中映射的工具 emit见 emit_data_changed
if exec_result.is_ok() {
emit_data_changed(&app, &approval.tool_name);
}
// 重新获取锁,替换占位 tool_result 为真实结果失败时为错误信息LLM 据此决定下一步)
let mut session = state.ai_session.lock().await;
session.messages.replace_tool_result_content(&id, &result_val.to_string());