fix: 优先审批 + 首用户隔离 + 审批DB闭环 + memo错误

1. (High) 内置工具先审批再执行 — is_builtin 检查优先,
   High 风险通过 builtin_approve 后再调用 BuiltinRegistry
2. (High) 首用户 current_user_id — 移除 !is_empty() 守卫
3. (Medium) 审批 DB 状态闭环 — 取消/错误时按 user_id 更新最近 pending
4. (Medium) manage_memos 写入失败 — .ok() → 完整错误返回
This commit is contained in:
2026-06-02 15:30:53 +08:00
parent 88de5597b3
commit 065229b9da
3 changed files with 20 additions and 10 deletions
+2 -2
View File
@@ -126,12 +126,12 @@ impl ApprovalManager {
ApprovalDecision::Approved => "approved",
_ => "rejected",
};
// 按 user_id + 最近 pending 记录更新
let _ = sqlx::query(
"UPDATE pending_approvals SET status = $1, consumed_at = NOW() WHERE user_id = $2 AND code_hash = $3 AND status = 'pending'",
"UPDATE pending_approvals SET status = $1, consumed_at = NOW() WHERE user_id = $2 AND status = 'pending' ORDER BY created_at DESC LIMIT 1",
)
.bind(status)
.bind(user_id)
.bind(&format!("{:x}", Sha256::digest(reply.as_bytes())))
.execute(pool.as_ref())
.await;
}