from datetime import datetime from typing import Any from pydantic import BaseModel, ConfigDict, Field from app.core.constants import ActorValue class ApprovalCreate(BaseModel): domain: str record_id: str | None = None action: str applicant: str = ActorValue.API reason: str | None = None payload: dict[str, Any] = Field(default_factory=dict) class ApprovalDecision(BaseModel): approver: str comment: str | None = None class ApprovalRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int ticket_id: str domain: str record_id: str | None action: str applicant: str approver: str | None status: str reason: str | None payload: str | None decision_comment: str | None created_at: datetime updated_at: datetime decided_at: datetime | None