from pydantic import BaseModel from typing import Union, Optional, List from pydantic import BaseModel, ConfigDict, Field, model_validator from module_admin.annotation.pydantic_annotation import as_query from pydantic.alias_generators import to_camel class CrudChatModel(BaseModel): is_success: bool message: str @as_query class AiListQuery(BaseModel): model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) session_id: str page_num: int page_size: int class AiChatModel(BaseModel): """ 菜单表对应pydantic模型 """ chatId: Optional[str] = None sessionId: Optional[str] = None sessionName: Optional[str] = None type: Optional[str] = None isEnd: Optional[bool] = None isStop: Optional[bool] = None user: Optional[int] = None time: Optional[str] = None content: Optional[str] = None operate: Optional[str] = None thumbDownReason: Optional[str] = None file: Optional[str] = None class ThumbOperateModel(BaseModel): chatId: str operate: str thumbDownReason: str class DownloadFile(BaseModel): file: str bucket: str sessionId: str class AiChatListModel(BaseModel): chats: List[Union[AiChatModel, None]]