新增: 任务推进链(7态状态机+advance_task CAS原子写)+软删除+前后端7态对齐

This commit is contained in:
2026-06-16 02:33:15 +08:00
parent f30df333b3
commit d2cb38cdac
21 changed files with 1628 additions and 167 deletions

View File

@@ -3,7 +3,7 @@
mod commands;
mod state;
use tauri::Manager;
use tauri::{Emitter, Listener, Manager};
use state::AppState;
@@ -29,7 +29,40 @@ pub fn run() {
) {
tracing::warn!("[FR-S1] 启动密钥迁移失败(非阻断): {}", e);
}
// B-260616-01: L0 握手 — 提前 clone ai_session(Arc),因 manage() 会 move app_state
let session_for_handshake = app_state.ai_session.clone();
app.manage(app_state);
// B-260616-01: L0 握手 — 监听前端就绪事件,清除 HMR/刷新导致的残留 generating 状态
let app_handle = app.handle().clone();
app.listen("ai-client-ready", move |_event| {
let session_arc = session_for_handshake.clone();
let app_h = app_handle.clone();
tauri::async_runtime::spawn(async move {
let mut session = session_arc.lock().await;
let was_generating = session.generating;
let conv_id = session.active_conversation_id.clone();
if was_generating {
session.generating = false;
session.pending_approvals.clear();
drop(session);
// 补偿事件:通知前端收尾(复位 streaming / generatingConvId
let _ = app_h.emit(
"ai-chat-event",
commands::ai::AiChatEvent::AiCompleted {
total_tokens: 0,
prompt_tokens: 0,
completion_tokens: 0,
conversation_id: conv_id,
},
);
} else {
session.pending_approvals.clear();
}
tracing::info!("[L0-handshake] 前端重连握手完成, was_generating={}", was_generating);
});
});
Ok(())
})
.invoke_handler(tauri::generate_handler![
@@ -53,7 +86,9 @@ pub fn run() {
commands::task::create_task,
commands::task::update_task,
commands::task::delete_task,
commands::task::restore_task,
commands::task::get_task_by_id,
commands::task::advance_task,
// 灵感
commands::idea::list_ideas,
commands::idea::create_idea,
@@ -69,6 +104,7 @@ pub fn run() {
commands::workflow::cancel_workflow_node,
// AI 聊天
commands::ai::ai_chat_send,
commands::ai::ai_chat_force_send,
commands::ai::ai_chat_stop,
commands::ai::ai_approve,
commands::ai::ai_pending_tool_calls,