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) <noreply@anthropic.com>
This commit is contained in:
68
backend/app/schemas/psa_context.py
Normal file
68
backend/app/schemas/psa_context.py
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user