Files
WhatsAppCentralizado/services/api-gateway/app/schemas/queue.py
2026-01-29 10:54:26 +00:00

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