"""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