## Purpose 定义操作日志(审计)的自动落库行为:写操作与登录/登出由装饰器与拦截器统一记录,异步写入不阻塞业务。 ## ADDED 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** 系统记录告警日志,业务请求照常返回成功结果