Исходный код tbank.tax_consult.models
from __future__ import annotations
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from tbank.tax_consult.enums import ChatAuthorType, RequestStatus, RequestType
[документация]
class TaxConsultModel(BaseModel):
"""Базовая модель домена: snake_case в Python, camelCase на проводе."""
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra="ignore",
)
[документация]
class ConsultRequest(TaxConsultModel):
"""Карточка заявки на консультацию."""
client_id: str
client_full_name: str
request_type: RequestType
status: RequestStatus
has_unread_messages: bool
cas_version: int
created_at: datetime
[документация]
class WorkflowState(TaxConsultModel):
"""Состояние заявки после перехода воркфлоу."""
status: RequestStatus
cas_version: int
[документация]
class ChatAttachment(TaxConsultModel):
id: str
name: str
mime: str
size: int
created_at: datetime
[документация]
class ChatMessage(TaxConsultModel):
id: str
author_type: ChatAuthorType
created_at: datetime
text: Optional[str] = None
attachments: Optional[List[ChatAttachment]] = None
[документация]
class ChatPage(TaxConsultModel):
"""Страница сообщений чата заявки."""
meta: ChatMeta
values: List[ChatMessage] = Field(default_factory=list)
[документация]
class SendMessageRequest(TaxConsultModel):
text: Optional[str] = None
attachments: Optional[List[str]] = None
[документация]
class UploadAttachmentResult(TaxConsultModel):
attachment_id: str