Files
012-kaopeilian/docs/规划/全链路联调/Ai工作流/coze/✅陪练功能完整开发报告.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

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

6.8 KiB
Raw Blame History

陪练功能完整开发报告

完成时间2025-10-13
完成度100%
测试状态 全部通过


🎉 功能总览

完成的5大模块

  1. 语音陪练对话 - 实时WebSocket语音交互
  2. 对话历史保存 - MySQL数据库持久化
  3. AI分析报告 - Dify智能分析和评分
  4. 报告页面展示 - 完整的可视化展示
  5. 陪练记录管理 - 历史记录查询和统计

📊 核心功能

1. 语音陪练对话(文本+语音双模式)

文本模式

  • SSE流式对话
  • 场景提示词驱动
  • conversation_id保持上下文

语音模式

  • 前端@coze/api直连wss://ws.coze.cn
  • Agora SDK自动处理音频
  • 实时语音识别VAD
  • 流式语音播放
  • 双方字幕显示

技术架构

前端 @coze/api → wss://ws.coze.cn

关键配置

  • allowPersonalAccessTokenInBrowser: true
  • audioMutedDefault: false
  • playbackVolumeDefault: 1.0

2. 对话历史保存

实时保存策略

  • 用户语音识别完成→立即保存
  • AI回复完成→立即保存
  • 异步保存,失败只记录日志
  • sequence连续递增

数据库表

  • practice_sessions会话元信息
  • practice_dialogues对话详细记录

3. AI分析报告

Dify工作流

  • API Key: app-9MWaCEiRegpYGQLov4S9oQjh
  • 输入: dialogue_historyJSON数组
  • 输出: 分析结果dialogue_annotations格式

分析内容

  • 综合得分0-100分
  • 5个维度打分开场技巧、需求挖掘、产品介绍、异议处理、成交技巧
  • 6个能力评估沟通表达、倾听理解、情绪控制、专业知识、销售技巧、应变能力
  • 对话标注sequence+tags+comment
  • 3-5条改进建议含具体示例

对话复盘逻辑

完整对话(数据库)+ Dify标注sequence匹配= 对话复盘

4. 报告页面展示

页面practice-report.vue

展示内容

  • 会话信息(日期、时长、轮次)
  • 综合评分圆环图
  • 5个维度进度条
  • 6个能力雷达图
  • 完整对话复盘(标注亮点/金牌话术)
  • 改进建议列表

筛选功能

  • 全部对话
  • 亮点话术
  • 金牌话术

5. 陪练记录管理

页面practice-records.vue

功能

  • 陪练记录列表(分页)
  • 统计数据(总次数、平均分、总时长、本月进步)
  • 关键词搜索
  • 场景类型筛选
  • 时间范围筛选
  • 分数范围筛选

📁 数据库设计

4张表

-- 陪练场景表5个预设场景
practice_scenes (id, name, type, difficulty, background, ai_role, objectives, keywords...)

-- 陪练会话表
practice_sessions (session_id, user_id, scene_id, start_time, end_time, duration_seconds, turns, status...)

-- 对话记录表
practice_dialogues (session_id, speaker, content, timestamp, sequence...)

-- 分析报告表
practice_reports (session_id, total_score, score_breakdown, ability_dimensions, dialogue_review, suggestions...)

🔌 API接口14个

场景管理2个

  • GET /practice/scenes - 场景列表
  • GET /practice/scenes/{id} - 场景详情

对话管理3个

  • POST /practice/start - 开始对话SSE
  • POST /practice/interrupt - 中断对话
  • POST /practice/conversation/create - 创建对话

会话管理7个

  • POST /practice/sessions/create - 创建会话
  • POST /practice/dialogues/save - 保存对话
  • POST /practice/sessions/{id}/end - 结束会话
  • POST /practice/sessions/{id}/analyze - 生成报告
  • GET /practice/reports/{id} - 获取报告
  • GET /practice/sessions/list - 记录列表
  • GET /practice/stats - 统计数据

场景提取1个

  • POST /practice/extract-scene - 从课程提取场景

🎓 核心技术

前端直连Coze

import { WsChatClient } from '@coze/api/ws-tools'

const client = new WsChatClient({
  token: 'pat_xxx',
  baseWsURL: 'wss://ws.coze.cn',
  allowPersonalAccessTokenInBrowser: true,
  botId: '7560643598174683145'
})

await client.connect()
client.setPlaybackVolume(1)
client.sendTextMessage(scenePrompt)

Dify对话标注

输入

{
  "inputs": {
    "dialogue_history": "[{\"speaker\":\"user\",\"content\":\"...\"}]"
  }
}

输出

{
  "dialogue_annotations": [
    {"sequence": 1, "tags": ["金牌话术"], "comment": "开场专业"}
  ]
}

对话合并

# 数据库查询完整对话
dialogues = SELECT * FROM practice_dialogues

# 按sequence匹配Dify标注
for dialogue in dialogues:
    annotation = annotations_map.get(dialogue.sequence)
    dialogue_review.append({
        "content": dialogue.content,  # 来自数据库
        "tags": annotation.tags,  # 来自Dify
        "comment": annotation.comment  # 来自Dify
    })

📈 性能指标

功能 指标
WebSocket连接 <2秒
语音识别 <2秒
对话保存 <100ms
Dify分析 10-15秒
报告查询 <300ms

🎊 开发成果

前端文件5个

  1. src/utils/cozeVoiceClient.ts
  2. src/components/VoiceChat.vue
  3. src/components/TextChat.vue
  4. src/views/trainee/practice-report.vue数据对接
  5. src/views/trainee/practice-records.vue数据对接

后端文件5个

  1. app/models/practice.py4个模型
  2. app/schemas/practice.py20个Schema
  3. app/services/coze_service.py
  4. app/services/dify_practice_service.py
  5. app/api/v1/practice.py14个接口

配置文件

  1. package.json - 添加@coze/api依赖
  2. app/core/config.py - Coze和Dify配置

🔑 关键经验

  1. 架构选择:前端直连优于后端中转
  2. 官方SDK优先@coze/api比自己实现可靠
  3. 数据分离对话存数据库Dify做标注
  4. 异步保存:不阻塞用户体验
  5. 合理设计:两张表分离便于查询

🚀 使用方式

完整流程

1. 陪练中心 → 选择场景 → 开始陪练
   ↓
2. 语音对话(实时保存到数据库)
   ↓
3. 点击"保存并查看分析报告"Dify分析
   ↓
4. 查看完整分析报告5维度+6能力+对话复盘+建议)
   ↓
5. 陪练记录页面(查看历史+统计)

访问地址


⚠️ 重要规范

Dify约束

  • dialogue_annotations的sequence必须在1到实际对话数范围内
  • tags只有两种["亮点话术"]或["金牌话术"]
  • 不要返回不存在的sequence

VAD使用

  • 说完话保持静音500ms
  • 环境安静
  • 说话清晰

开发团队:考培练系统开发组
完成日期2025-10-13
文档版本v2.0(最终版)

🎊 陪练功能完整开发圆满完成!