- 归档 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>
41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
# 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** 系统记录告警日志,业务请求照常返回成功结果
|