All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
3.3 KiB
3.3 KiB
ADDED Requirements
Requirement: 资产域操作日志使用独立数据模型
系统 SHALL 为资产域操作日志使用独立数据模型与数据表,不得复用账号域日志表;资产日志模型 MUST 支持记录资产类型、资产ID、资产标识符、操作动作、操作结果、前后镜像和请求上下文。
Scenario: 新增资产日志表并独立于账号日志
- WHEN 系统初始化资产域审计能力
- THEN 系统使用独立的
tb_asset_operation_log存储资产日志,且不写入tb_account_operation_log
Scenario: 资产日志表不使用外键约束
- WHEN 创建资产日志表结构
- THEN 表间关联通过 ID 字段维护,不创建数据库外键和 GORM 关联标签
Requirement: 资产敏感写操作必须全量记录
系统 SHALL 对卡和设备相关敏感写操作进行全量审计记录,结果态 MUST 覆盖 success、failed、denied。
Scenario: 成功操作写入 success 日志
- WHEN 设备分配、卡绑定、手动实名、停用等写操作执行成功
- THEN 系统写入
result_status=success的资产操作日志
Scenario: 业务失败写入 failed 日志
- WHEN 写操作执行过程中发生网关失败或数据库失败
- THEN 系统写入
result_status=failed的资产操作日志,并记录错误码与错误摘要
Scenario: 权限或规则拒绝写入 denied 日志
- WHEN 操作被权限规则、保护期规则或业务前置条件拒绝
- THEN 系统写入
result_status=denied的资产操作日志,并记录拒绝原因
Requirement: 审计日志必须包含完整上下文
系统 SHALL 在资产日志中记录“谁、何时、做了什么、从什么变成什么”,并包含请求链路上下文。
Scenario: 记录操作人和时间
- WHEN 生成任一资产操作日志
- THEN 日志包含
operator_id、operator_type、operator_name与created_at
Scenario: 记录前后镜像
- WHEN 记录状态流转或配置修改类操作
- THEN 日志同时包含
before_data和after_data,可直接体现变更差异
Scenario: 记录请求上下文
- WHEN 记录资产操作日志
- THEN 日志包含
request_id、ip_address、user_agent、request_path、request_method
Requirement: 审计写入异步且不阻塞主流程
系统 SHALL 采用异步方式写入资产审计日志,日志写入失败 MUST 不影响业务主流程结果。
Scenario: 异步写入
- WHEN 业务操作完成并触发审计记录
- THEN 主流程先返回业务结果,日志由异步流程落库
Scenario: 日志写入失败降级
- WHEN 资产日志落库失败
- THEN 系统仅记录 Error 级别应用日志,不回滚已成功的主业务操作
Requirement: 敏感字段脱敏与日志体积控制
系统 SHALL 对敏感字段执行脱敏处理,并对日志体积设置上限,避免泄露与性能风险。
Scenario: 远程配置敏感字段脱敏
- WHEN 记录设备 WiFi/密码等敏感配置变更日志
- THEN
before_data/after_data中不得出现明文密码,仅保留掩码或摘要
Scenario: 超长数据裁剪
- WHEN 业务上下文数据超过日志体积阈值
- THEN 系统对超长字段进行裁剪并保留裁剪标记,保证日志写入稳定