"""Audit record emitter. Vendored from OWC `audit/service.py` (snapshot 2026-04-20); unchanged except for the `owc` → `ypms` import renames. """ from __future__ import annotations from typing import Any from sqlalchemy.orm import Session from ypms.audit.models import AuditLog from ypms.users.models import User def record( db: Session, *, actor: User | None, action: str, entity: str, entity_id: int | None = None, before: dict[str, Any] | None = None, after: dict[str, Any] | None = None, ip: str | None = None, ) -> AuditLog: row = AuditLog( actor_id=actor.id if actor else None, actor_username=actor.username if actor else None, action=action, entity=entity, entity_id=entity_id, before=before, after=after, ip=ip, ) db.add(row) db.flush() return row