liuyun 1790fb30a8 chore(openspec): archive close-phase-0, sync backend specs to main
- 归档 close-phase-0(RBAC 权限 + 审计/登录日志 + seed 收口)
- 新增主 spec:backend/auth、backend/res、backend/audit、backend/login
- 追踪 sysmgr-nest passwordHash 泄漏修复

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-10 23:23:56 +08:00

1.6 KiB
Raw Permalink Blame History

Audit Log Specification

Purpose

定义操作日志(审计)的自动落库行为:写操作与登录/登出由装饰器与拦截器统一记录,异步写入不阻塞业务。

Requirements

Requirement: 写操作自动审计

系统 SHALL 对标注 @AuditLog(module, action) 的写接口(增/删/改)在请求完成后异步写入 sys_audit_log,记录操作人、模块、动作、请求方法、路径、入参、结果状态、IP、UA 与耗时。

Scenario: 写操作成功

  • WHEN 标注 @AuditLog 的写接口执行成功
  • THEN 系统写入一条 audit_log,status=success,含 module/action/method/path/user_id/username/ip/user_agent/duration_ms

Scenario: 写操作失败

  • WHEN 标注 @AuditLog 的写接口执行失败
  • THEN 系统写入一条 audit_log,status=fail,并记录 error_message

Scenario: 查询不审计

  • WHEN 查询类(读)接口执行
  • THEN 系统不写入审计日志

Requirement: 登录登出审计

系统 SHALL 记录登录成功与登出事件到 audit_log(module=auth,action=login/logout)。

Scenario: 登录成功审计

  • WHEN 用户登录成功
  • THEN 系统写入 audit_log(module=auth, action=login, status=success)

Scenario: 登出审计

  • WHEN 用户登出
  • THEN 系统写入 audit_log(module=auth, action=logout)

Requirement: 审计异步不阻塞

审计日志 SHALL 异步写入;写入失败仅告警,不得影响业务请求结果。

Scenario: 审计写入失败

  • WHEN 审计日志写库失败
  • THEN 系统记录告警日志,业务请求照常返回成功结果