feat: chat integration, tenant admin spec, backend chat service, miniprogram updates, DEMO moved to tmp, XCX-TEST removed, migrations & docs
This commit is contained in:
106
apps/backend/app/schemas/xcx_chat.py
Normal file
106
apps/backend/app/schemas/xcx_chat.py
Normal file
@@ -0,0 +1,106 @@
|
||||
"""
|
||||
小程序 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
|
||||
Reference in New Issue
Block a user