from datetime import datetime from typing import Any from pydantic import BaseModel, ConfigDict from app.core.constants import ActorValue from app.modules.audit.constants import AuditRiskLevel, AuditSource, AuditStatus class AuditLogCreate(BaseModel): actor: str = ActorValue.SYSTEM source: str = AuditSource.API action: str target_type: str | None = None target_id: str | None = None risk_level: str = AuditRiskLevel.LOW request_payload: Any | None = None response_payload: Any | None = None status: str = AuditStatus.SUCCESS class AuditLogRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int actor: str source: str action: str target_type: str | None target_id: str | None risk_level: str request_payload: str | None response_payload: str | None status: str created_at: datetime