"""操作审计日志。""" import json import uuid from datetime import datetime from ..models import OperationLog def record_operation(db, user: dict, action: str, *, request=None, task=None, resource_type: str = "", resource_name: str = "", detail: dict | None = None): """将已登录用户的关键操作写入当前数据库事务。""" client_ip = request.client.host if request and request.client else "" user_agent = request.headers.get("user-agent", "")[:500] if request else "" db.add(OperationLog( id=str(uuid.uuid4()), created_at=datetime.utcnow(), username=user.get("username", ""), is_admin=bool(user.get("is_admin")), action=action, task_id=task.id if task else None, app_id=task.app_id if task else None, app_name=task.app_name if task else None, resource_type=resource_type, resource_name=resource_name, detail_json=json.dumps(detail or {}, ensure_ascii=False), client_ip=client_ip, user_agent=user_agent, ))