diff --git a/backend/app/schemas/psa_context.py b/backend/app/schemas/psa_context.py new file mode 100644 index 00000000..b27c7cd7 --- /dev/null +++ b/backend/app/schemas/psa_context.py @@ -0,0 +1,68 @@ +"""Pydantic schemas for PSA ticket context enrichment.""" +from __future__ import annotations + +from datetime import datetime + +from pydantic import BaseModel + + +class TicketDetails(BaseModel): + id: int + summary: str + status: str + priority: str + board: str + sla: str | None = None + date_entered: datetime + resources: str | None = None + + +class CompanyInfo(BaseModel): + id: int + name: str + site: str | None = None + address: str | None = None + phone: str | None = None + type: str | None = None + territory: str | None = None + + +class ContactInfo(BaseModel): + name: str + email: str | None = None + phone: str | None = None + title: str | None = None + + +class ConfigItem(BaseModel): + device_identifier: str + type: str | None = None + os_type: str | None = None + serial_number: str | None = None + ip_address: str | None = None + model_number: str | None = None + + +class TicketNote(BaseModel): + text: str + member: str | None = None + date_created: datetime + internal_analysis_flag: bool = False + + +class RelatedTicket(BaseModel): + id: int + summary: str + status: str + priority: str + board: str + + +class TicketContext(BaseModel): + ticket: TicketDetails + company: CompanyInfo + contact: ContactInfo | None = None + configurations: list[ConfigItem] = [] + notes: list[TicketNote] = [] + related_tickets: list[RelatedTicket] = [] + fetched_at: datetime