feat: command palette, PSA ticket context, session-to-flow converter #108
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