Files
Neo-ZQYY/apps/backend/app/schemas/xcx_chat.py

107 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
小程序 CHAT 模块 Pydantic 模型。
覆盖对话历史列表、消息查看、发送消息、SSE 流式请求等场景。
"""
from __future__ import annotations
from app.schemas.base import CamelModel
# ---------------------------------------------------------------------------
# 对话历史CHAT-1
# ---------------------------------------------------------------------------
class ChatHistoryItem(CamelModel):
"""对话历史列表项。"""
id: int
title: str
customer_name: str | None = None
last_message: str | None = None
timestamp: str # ISO 8601最后消息时间
unread_count: int = 0
class ChatHistoryResponse(CamelModel):
"""CHAT-1 对话历史列表响应。"""
items: list[ChatHistoryItem]
total: int
page: int
page_size: int
# ---------------------------------------------------------------------------
# 消息查看CHAT-2
# ---------------------------------------------------------------------------
class ReferenceCard(CamelModel):
"""引用卡片,附加在 AI 回复消息中的结构化上下文数据。"""
type: str # 'customer' | 'record'
title: str
summary: str
data: dict[str, str] # 键值对详情
class ChatMessageItem(CamelModel):
"""对话消息项。"""
id: int
role: str # 'user' | 'assistant'
content: str
created_at: str # ISO 8601统一字段名
reference_card: ReferenceCard | None = None
class ChatMessagesResponse(CamelModel):
"""CHAT-2 对话消息列表响应。"""
chat_id: int
items: list[ChatMessageItem]
total: int
page: int
page_size: int
# ---------------------------------------------------------------------------
# 发送消息CHAT-3
# ---------------------------------------------------------------------------
class MessageBrief(CamelModel):
"""消息摘要(用于发送消息响应)。"""
id: int
content: str
created_at: str # ISO 8601
class SendMessageRequest(CamelModel):
"""CHAT-3 发送消息请求体。"""
content: str
class SendMessageResponse(CamelModel):
"""CHAT-3 发送消息响应(含用户消息和 AI 回复)。"""
user_message: MessageBrief
ai_reply: MessageBrief
# ---------------------------------------------------------------------------
# SSE 流式CHAT-4
# ---------------------------------------------------------------------------
class ChatStreamRequest(CamelModel):
"""CHAT-4 SSE 流式请求体。"""
chat_id: int
content: str