Audit Log

This commit is contained in:
2026-03-27 14:58:12 +01:00
parent d7ae840ac6
commit a3247a69b6
13 changed files with 734 additions and 9 deletions
+41
View File
@@ -0,0 +1,41 @@
"""
Schemi Pydantic per Audit Log.
"""
import uuid
from datetime import datetime
from typing import Any, Optional
from pydantic import BaseModel, field_validator
from app.core.pagination import PaginatedResponse
class AuditLogResponse(BaseModel):
"""Risposta singolo evento audit."""
id: int
tenant_id: Optional[uuid.UUID] = None
user_id: Optional[uuid.UUID] = None
action: str
resource_type: Optional[str] = None
resource_id: Optional[uuid.UUID] = None
ip_address: Optional[str] = None
user_agent: Optional[str] = None
payload: Optional[dict] = None
outcome: str
occurred_at: datetime
model_config = {"from_attributes": True}
@field_validator("ip_address", mode="before")
@classmethod
def coerce_ip_address(cls, v: Any) -> Optional[str]:
"""Converte IPv4Address/IPv6Address (tipo PostgreSQL INET) in stringa."""
if v is None:
return None
return str(v)
# Lista paginata
AuditLogListResponse = PaginatedResponse[AuditLogResponse]