""" Ticket Schemas - ServiceManagerWeb Pydantic schemas para gestión de tickets y comentarios. """ from pydantic import BaseModel, ConfigDict from typing import Optional from datetime import datetime class TicketCreate(BaseModel): """Schema para crear un ticket.""" subject: str description: str category_id: Optional[str] = None affected_system_id: Optional[str] = None priority: str = "MEDIUM" class TicketUpdate(BaseModel): """Schema para actualizar un ticket.""" subject: Optional[str] = None description: Optional[str] = None status: Optional[str] = None priority: Optional[str] = None assigned_to: Optional[str] = None class TicketResponse(BaseModel): """Schema de respuesta con todos los campos públicos del ticket.""" model_config = ConfigDict(from_attributes=True) id: str ticket_number: str subject: str title: str description: str status: str priority: str category_id: Optional[str] = None affected_system_id: Optional[str] = None created_by: str assigned_to: Optional[str] = None created_at: datetime updated_at: datetime sla_response_due: Optional[datetime] = None sla_resolution_due: Optional[datetime] = None first_response_at: Optional[datetime] = None resolved_at: Optional[datetime] = None class TicketCloseRequest(BaseModel): """Schema para cerrar un ticket con resolución opcional.""" resolution: Optional[str] = None class CommentCreate(BaseModel): """Schema para crear un comentario en un ticket.""" content: str is_internal: bool = False class CommentResponse(BaseModel): """Schema de respuesta de comentario.""" id: str ticket_id: str author_id: str author_name: str content: str is_internal: bool created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)