Исходный код 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 ChatMeta(TaxConsultModel): offset: int count: int total: int
[документация] 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