Files
012-kaopeilian/backend/app/schemas/yanji.py
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

62 lines
2.0 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.
"""
言迹智能工牌相关Schema定义
"""
from typing import List, Optional
from pydantic import BaseModel, Field
class ConversationMessage(BaseModel):
"""单条对话消息"""
role: str = Field(..., description="角色consultant=销售人员customer=客户")
text: str = Field(..., description="对话文本内容")
begin_time: Optional[str] = Field(None, description="开始时间偏移量(毫秒)")
end_time: Optional[str] = Field(None, description="结束时间偏移量(毫秒)")
class YanjiConversation(BaseModel):
"""完整的对话记录"""
audio_id: int = Field(..., description="录音ID")
visit_id: str = Field(..., description="来访单ID")
start_time: str = Field(..., description="录音开始时间")
duration: int = Field(..., description="录音时长(毫秒)")
consultant_name: str = Field(..., description="销售人员姓名")
consultant_phone: str = Field(..., description="销售人员手机号")
conversation: List[ConversationMessage] = Field(..., description="对话内容列表")
class GetConversationsByVisitIdsRequest(BaseModel):
"""根据来访单ID获取对话记录请求"""
external_visit_ids: List[str] = Field(
...,
min_length=1,
max_length=10,
description="三方来访单ID列表最多10个",
)
class GetConversationsByVisitIdsResponse(BaseModel):
"""获取对话记录响应"""
conversations: List[YanjiConversation] = Field(..., description="对话记录列表")
total: int = Field(..., description="总数量")
class GetConversationsRequest(BaseModel):
"""获取员工对话记录请求"""
consultant_phone: str = Field(..., description="员工手机号")
limit: int = Field(default=10, ge=1, le=100, description="获取数量")
class GetConversationsResponse(BaseModel):
"""获取员工对话记录响应"""
conversations: List[YanjiConversation] = Field(..., description="对话记录列表")
total: int = Field(..., description="总数量")