107 lines
2.5 KiB
Python
107 lines
2.5 KiB
Python
"""
|
||
小程序 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
|