| from typing import List, Optional, Dict, Union |
| from pydantic import BaseModel, Field |
| from enum import Enum |
|
|
| class SentimentEnum(str, Enum): |
| FRUSTRATED = "Frustrated" |
| CURIOUS = "Curious" |
| ANGRY = "Angry" |
| NEUTRAL = "Neutral" |
|
|
| class PriorityEnum(str, Enum): |
| P0 = "P0 (High)" |
| P1 = "P1 (Medium)" |
| P2 = "P2 (Low)" |
|
|
| class TopicTagEnum(str, Enum): |
| HOW_TO = "How-to" |
| PRODUCT = "Product" |
| CONNECTOR = "Connector" |
| LINEAGE = "Lineage" |
| API_SDK = "API/SDK" |
| SSO = "SSO" |
| GLOSSARY = "Glossary" |
| BEST_PRACTICES = "Best practices" |
| SENSITIVE_DATA = "Sensitive data" |
| SECURITY = "Security" |
| RBAC = "RBAC" |
| AUTOMATION = "Automation" |
| TROUBLESHOOTING = "Troubleshooting" |
| INTEGRATION = "Integration" |
|
|
| class Ticket(BaseModel): |
| id: str = Field(..., description="Unique ticket identifier") |
| subject: str = Field(..., description="Ticket subject line") |
| body: str = Field(..., description="Ticket body content") |
|
|
| class TicketClassification(BaseModel): |
| topic_tags: List[TopicTagEnum] = Field(..., description="Relevant topic tags for the ticket") |
| sentiment: SentimentEnum = Field(..., description="Customer sentiment") |
| priority: PriorityEnum = Field(..., description="Ticket priority level") |
| reasoning: Optional[str] = Field(None, description="AI reasoning for the classification") |
|
|
| class ClassifiedTicket(BaseModel): |
| ticket: Ticket |
| classification: TicketClassification |
|
|
| class SingleTicketRequest(BaseModel): |
| ticket: Ticket |
|
|
| class BulkTicketRequest(BaseModel): |
| tickets: List[Ticket] |
|
|
| class ClassificationResponse(BaseModel): |
| success: bool |
| data: Optional[List[ClassifiedTicket]] = None |
| error: Optional[str] = None |
| total_processed: int = 0 |
|
|
| class InteractiveAnalysis(BaseModel): |
| topic_tags: List[str] |
| sentiment: str |
| priority: str |
| reasoning: str |
|
|
| class DirectAnswerResponse(BaseModel): |
| type: str = "direct_answer" |
| answer: str |
| sources: List[str] = [] |
|
|
| class RoutingResponse(BaseModel): |
| type: str = "routing" |
| message: str |
|
|
| class InteractiveAgentResponse(BaseModel): |
| internal_analysis: InteractiveAnalysis |
| final_response: Dict |
|
|