Files
shanxia2.0/openspec/changes/operation-audit-enhancement/proposal.md
T
2026-06-29 11:15:39 +08:00

2.5 KiB
Raw Blame History

Why

客户要求系统中用户操作可追溯:记录请求人姓名、请求时间、接口地址、入参与出参。shanxia2.0 已通过 ApiRequestLogMiddleware 写入 sys_api_request_log,但请求人多为账号而非姓名、缺少全局管理页、业务语义弱、无法按业务单据精确查询。

What Changes

增强现有 API 请求日志

  1. 中间件补齐 — JWT 解析 real_name → create_name;tenant_no 落库;异步写库行为保持
  2. 业务语义字段 — business_title、business_type、business_id、oper_summary(写操作由 @oper_log 声明,只读走路径推断兜底)
  3. ContextVar + 装饰器 — app/core/context.py 扩展;@oper_log 供路由/写接口标注模块、类型、业务主键与摘要

查询与管理

  1. operlog API 增强 — 列表/详情优先读落库语义字段;支持按 business_id、business_title、business_type 筛选
  2. 操作日志管理页 — web-admin 标准列表(P01),admin / super_admin 可查;详情展示入参/出参
  3. CRM 嵌入 Tab 优化 — 客户/合同详情按 business_id 查日志,不再拉全量前端过滤

数据库

  1. 表结构扩展 — sys_api_request_log、sys_api_request_log_his 增加语义列与 tenant_no、索引
  2. 迁移脚本 — docs/sql/migrations/2026-06-29-operation-audit.sql;同步 docs/sql/shanxia2.0.sql

非本期(文档标注为后续)

  • 定时归档至 sys_api_request_log_his
  • 可配置高频只读 API 排除规则
  • 全模块 @oper_log 覆盖(本期优先 CRM 写接口 + 样例)

Capabilities

New Capabilities

  • operation-audit: API 全量请求审计与业务语义操作日志

Modified Capabilities

  • (无独立基线 spec 变更;实现须符合 zkxw-engineering-standards 中 api/database/ui/permission conventions)

Impact

  • 后端:api_request_log_middleware.py、context.py、新 oper_log 装饰器、oper_log.py CRUD、monitor.py、ORM、schemas
  • 前端:新 views/system/operlog/(或 monitor/operlog/)、路由、菜单;CRM 详情 Tab 查询参数
  • 配置:API_REQUEST_LOG_ENABLED 生产须为 true

Reference

  • 现有中间件:backend/app/core/api_request_log_middleware.py
  • 现有 operlog 适配:backend/app/crud/monitor/oper_log.py
  • 设计文档:docs/superpowers/specs/2026-06-29-operation-audit-design.md
  • RuoYi 对照:docs/sql/sx.sql → sys_oper_log