2187be7aeb
本次累积提交包含以下功能: 1. 修复:el-date-picker 缺失 value-format 导致日期保存偏移(8处) 2. 新增:协同拜访 visit_group_id 去重机制(完整副本 + 周报合并 + 亮灯去重) 3. 新增:计划自动完成(创建计划检测已有拜访 / 编辑拜访触发) 4. 新增:拜访表单选择客户后自动预填过期计划内容 5. 新增:移动端主题切换按钮 + 后端持久化 6. 新增:操作日志系统 (audit_logs),全覆盖 8 个模块 CRUD 7. 新增:PC端「我的数据」支局长/领导视角客户经理列 Co-Authored-By: Claude <noreply@anthropic.com>
31 lines
953 B
Python
31 lines
953 B
Python
"""Audit log utility — write once, query forever."""
|
|
import uuid
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from app.models.audit_log import AuditLog
|
|
|
|
|
|
async def log_audit(
|
|
db: AsyncSession,
|
|
entity_type: str,
|
|
entity_id: uuid.UUID,
|
|
entity_name: str,
|
|
action: str, # create / update / delete
|
|
operator_id: str,
|
|
operator_name: str,
|
|
summary: str = "",
|
|
details: dict | None = None,
|
|
):
|
|
"""Write an audit log entry."""
|
|
entry = AuditLog(
|
|
entity_type=entity_type,
|
|
entity_id=entity_id,
|
|
entity_name=entity_name,
|
|
action=action,
|
|
operator_id=uuid.UUID(operator_id),
|
|
operator_name=operator_name,
|
|
summary=summary or f"{'创建了' if action == 'create' else '更新了' if action == 'update' else '删除了'} {entity_name}",
|
|
details=details or {},
|
|
)
|
|
db.add(entry)
|
|
# Don't commit here — let the caller handle it as part of their transaction
|