feat(psa): add psa_ticket_id and psa_connection_id to sessions
Add columns to link sessions to PSA tickets and connections. Includes migration 059, model relationship, and response schema fields. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -83,6 +83,15 @@ class Session(Base):
|
||||
attachments: Mapped[list["Attachment"]] = relationship("Attachment", back_populates="session")
|
||||
shares: Mapped[list["SessionShare"]] = relationship("SessionShare", back_populates="session", cascade="all, delete-orphan")
|
||||
|
||||
# PSA ticket link
|
||||
psa_ticket_id: Mapped[Optional[str]] = mapped_column(String(100), nullable=True)
|
||||
psa_connection_id: Mapped[Optional[uuid.UUID]] = mapped_column(
|
||||
UUID(as_uuid=True),
|
||||
ForeignKey("psa_connections.id", ondelete="SET NULL"),
|
||||
nullable=True,
|
||||
)
|
||||
psa_connection = relationship("PsaConnection", foreign_keys=[psa_connection_id])
|
||||
|
||||
# Batch tracking (maintenance flows)
|
||||
batch_id: Mapped[Optional[uuid.UUID]] = mapped_column(
|
||||
UUID(as_uuid=True), nullable=True, index=True
|
||||
|
||||
@@ -94,6 +94,10 @@ class SessionResponse(BaseModel):
|
||||
batch_id: Optional[UUID] = None
|
||||
target_label: Optional[str] = None
|
||||
|
||||
# PSA ticket link
|
||||
psa_ticket_id: Optional[str] = None
|
||||
psa_connection_id: Optional[UUID] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
@@ -140,3 +144,28 @@ class SaveAsTreeResponse(BaseModel):
|
||||
tree_id: UUID
|
||||
tree_name: str
|
||||
message: str
|
||||
|
||||
|
||||
# ── PSA ticket link ──────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TicketLinkRequest(BaseModel):
|
||||
"""Link or unlink a PSA ticket to a session."""
|
||||
psa_ticket_id: Optional[str] = None # null to unlink
|
||||
|
||||
|
||||
class PSATicketResponse(BaseModel):
|
||||
"""PSA ticket details returned when linking."""
|
||||
id: str
|
||||
summary: str
|
||||
company_name: Optional[str] = None
|
||||
board_name: Optional[str] = None
|
||||
status_name: Optional[str] = None
|
||||
priority_name: Optional[str] = None
|
||||
|
||||
|
||||
class TicketLinkResponse(BaseModel):
|
||||
"""Response after linking/unlinking a ticket."""
|
||||
session_id: str
|
||||
psa_ticket_id: Optional[str] = None
|
||||
ticket: Optional[PSATicketResponse] = None
|
||||
|
||||
Reference in New Issue
Block a user