feat(gateway): 敏感操作审计日志(T4.B)

- store.AuditLog 表(sundynix_audit_log) + AppendAudit/ListAudit
- middleware.Audit(db):只审计变更类(POST/PUT/DELETE/PATCH),收尾 best-effort
  落库(独立超时 ctx,失败静默不拖垮主流程);挂管理组 + prompt 激活/撤销 + HITL 审批
- GET /api/v1/admin/audit:倒序审计流(limit/offset 翻页)
- live:PUT pricing / POST prompts/deactivate 留痕(actor/path/status/ip),GET 不记
- DEPTH_ROADMAP T4.B:overview + audit 打勾

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-07-02 09:19:52 +08:00
parent 30e80c0eed
commit 16c67dcb4f
7 changed files with 122 additions and 9 deletions
+5 -4
View File
@@ -165,11 +165,12 @@ RBAC 未做,暂以单管理员账号代理;概览口径必须是**系统级*
- [ ] 用户管理接口:列举 / 禁用 / 改角色(现仅注册/登录/查我,handler/auth.go| M
- [ ] 多租户:Task/Eval/KB/Agent 加 tenant_idowner_id 之上补租户隔离边界 + 租户表/关联表(store 全表,单租户假设)| L
### [ ] 🔴 T4.B 审计 / 可溯源 + 管理端聚合(推荐先做,内聚且喂管理端)
- [ ] `audit_log` 表 + 中间件:改模型/删模型/改密钥/激活 prompt 等敏感操作落库(handler/admin.go 全无留痕)| M
### [~] 🔴 T4.B 审计 / 可溯源 + 管理端聚合(推荐先做,内聚且喂管理端)
- [x] `GET /api/v1/admin/overview`(RequireAdmin) 系统级聚合 ✅ —— 全平台用户/KB/任务/评测/模型态/prompt 覆盖/健康;概览页已切过去(5调用→2)live 验证 users=7/kb 22/50 全平台口径。
- [x] `audit_log` 表 + 中间件 ✅ —— `store.AuditLog` + `middleware.Audit(db)` 挂管理组 + prompt 激活/撤销 + HITL 审批;只审计变更类(POST/PUT/DELETE/PATCH)best-effort 落库不拖垮主流程;`GET /admin/audit` 列表(倒序翻页)。livePUT pricing / POST deactivate 留痕,GET 不记。
- [ ] 护栏拦截事件落库 `guardrail_event`middleware/guardrail.go:29 现只打日志,无法复盘"谁触发多少次")| M
- [ ] HITL 审批决定落库(task_handler.go:172 现只发 NATS,无审批历史| S
- [ ] `GET /api/v1/admin/overview`(RequireAdmin) 系统级聚合:用户/租户/全局任务/评测/模型态/prompt 覆盖(替代概览现借的个人 stats/overview,见 [T1.3]| M
- [ ] HITL 审批决定明细落库(现审批已进 audit_log 但只有 who/when/status,无 approve/reject 决定与理由;可 enrich audit Detail 或单独表| S
- [ ] 前端:管理端加「审计流 / 安全事件」页或概览接 /admin/audit(把留痕可视化| S
### [ ] T4.C 真实成本计费
- [ ] token×单价 落库 `token_usage`(现仅 Redis 按天计数 TTL48htask_handler.go:532| L