操作日志
API 事实来源:Django 后端自动文档
日志记录什么
logs 记录关键业务操作,供后台查询和导出。它是审计辅助,不驱动业务状态。
代码入口:
backend/apps/logs/models.pybackend/apps/logs/views/operation_log.pybackend/apps/logs/utils.pybackend/apps/logs/permissions.py
上下文来源
业务代码通过 log_operation(...) 写日志。OperationLogContextMiddleware 使用 ContextVar 保存当前请求,服务层可在未显式传入 request 时补齐上下文。
一条有价值的日志描述“谁在什么角色下对什么目标做了什么”。只记录技术动作会让后台审计失去业务语义。
哪些操作需要日志
审批、取消、导入、配置变更、设备令牌签发和撤销都属于关键业务动作。日志导出使用与查询一致的过滤条件,避免“页面看到的”和“导出的”不是同一批数据。
日志是审计辅助,不是权限判断或业务回滚依据。
已知技术债
IsLogAdmin 仍读取旧版 user.role 字段,而当前用户模型使用 roles。因此日志接口当前主要依赖 Django is_superuser / is_staff 可靠访问。修复时应接入当前角色体系,并补权限测试。