97 lines
2.3 KiB
Python
97 lines
2.3 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional, List
|
|
from uuid import UUID
|
|
from datetime import datetime
|
|
from app.models.queue import AssignmentMethod
|
|
|
|
|
|
class QueueCreate(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
assignment_method: AssignmentMethod = AssignmentMethod.ROUND_ROBIN
|
|
max_per_agent: int = 10
|
|
sla_first_response: int = 300
|
|
sla_resolution: int = 86400
|
|
business_hours: Optional[dict] = None
|
|
fallback_flow_id: Optional[UUID] = None
|
|
|
|
|
|
class QueueUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
assignment_method: Optional[AssignmentMethod] = None
|
|
max_per_agent: Optional[int] = None
|
|
sla_first_response: Optional[int] = None
|
|
sla_resolution: Optional[int] = None
|
|
business_hours: Optional[dict] = None
|
|
fallback_flow_id: Optional[UUID] = None
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
class QueueAgentAdd(BaseModel):
|
|
user_id: UUID
|
|
is_supervisor: bool = False
|
|
skills: List[str] = []
|
|
|
|
|
|
class QueueAgentResponse(BaseModel):
|
|
id: UUID
|
|
user_id: UUID
|
|
user_name: Optional[str] = None
|
|
user_email: Optional[str] = None
|
|
is_supervisor: bool
|
|
skills: List[str]
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class QueueResponse(BaseModel):
|
|
id: UUID
|
|
name: str
|
|
description: Optional[str]
|
|
assignment_method: AssignmentMethod
|
|
max_per_agent: int
|
|
sla_first_response: int
|
|
sla_resolution: int
|
|
business_hours: Optional[dict]
|
|
fallback_flow_id: Optional[UUID]
|
|
is_active: bool
|
|
created_at: datetime
|
|
agent_count: Optional[int] = 0
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class QueueDetailResponse(QueueResponse):
|
|
agents: List[QueueAgentResponse] = []
|
|
|
|
|
|
class QuickReplyCreate(BaseModel):
|
|
shortcut: str
|
|
content: str
|
|
attachments: List[dict] = []
|
|
queue_id: Optional[UUID] = None
|
|
|
|
|
|
class QuickReplyUpdate(BaseModel):
|
|
shortcut: Optional[str] = None
|
|
content: Optional[str] = None
|
|
attachments: Optional[List[dict]] = None
|
|
queue_id: Optional[UUID] = None
|
|
|
|
|
|
class QuickReplyResponse(BaseModel):
|
|
id: UUID
|
|
shortcut: str
|
|
content: str
|
|
attachments: List[dict]
|
|
queue_id: Optional[UUID]
|
|
created_by: UUID
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|