新增: 审批超时后端兜底,覆盖重启恢复场景
前端早已有审批超时定时器(AdvancedSection.vue 0/5/15/30/60 分钟 可配置),负责会话内运行的审批超时检测。但重启后前端定时器丢失, 恢复的 pending_approvals(经 audit/restore.rs 从 DB 重建)无人 计时,会永久卡死会话。 本次补充后端兜底机制: - PendingApproval 新增 created_at 字段(SystemTime),记录创建时刻 - 新增 agentic/approval_timeout.rs,在 try_continue_agent_loop 入口检测超时,自动取消并写入审计(rejected) - AppState 新增 approval_timeout_minutes 字段 + 启动从 KV 恢复 - IPC 新增 ai_get_approval_timeout / ai_set_approval_timeout - KV 复用前端 df-approval-timeout key(值为毫秒),保持单一真相源 同时更新 todo.md / 待决策.md,把已实现项标记为完成。
This commit is contained in:
@@ -79,6 +79,9 @@ pub async fn restore_pending_approvals(state: &AppState) {
|
||||
// 阶段4:重启恢复的审批 retry_count=0(恢复语义即"待用户首次决策",非重试)。
|
||||
// 即便审计表已有 pending 记录,恢复后用户审批执行属首次正常执行,不断路。
|
||||
retry_count: 0,
|
||||
// 恢复审批 created_at=重启时刻(无原挂起时间记录,按当前系统时间计)。
|
||||
// 超时取消计数仍从此刻起,避免恢复后立即被误判超时。
|
||||
created_at: Some(std::time::SystemTime::now()),
|
||||
},
|
||||
);
|
||||
}
|
||||
@@ -133,6 +136,7 @@ mod tests_f09_batch8_restore {
|
||||
kind: ApprovalKind::Risk { diff: None },
|
||||
// 阶段4:恢复的审批 retry_count=0(首次用户决策,非重试)。
|
||||
retry_count: 0,
|
||||
created_at: None,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user