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

41 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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