From b8ca23d00d383f195de7764c6844246372fab3f2 Mon Sep 17 00:00:00 2001 From: chihlasm Date: Mon, 16 Mar 2026 01:04:58 -0400 Subject: [PATCH] feat: add PSA ticket context Pydantic schemas (Task 6) Add TicketDetails, CompanyInfo, ContactInfo, ConfigItem, TicketNote, RelatedTicket, and TicketContext models in schemas/psa_context.py for structured ticket context enrichment used by AI prompt injection. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/schemas/psa_context.py | 68 ++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 backend/app/schemas/psa_context.py 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