- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
2.8 KiB
2.8 KiB
Coze-Chat 集成方案分析
现状分析
技术栈差异
- 主系统:Vue3 + TypeScript + Element Plus
- Coze-Chat:React 18 + TypeScript + Ant Design
功能定位
Coze-Chat 是考培练系统的智能对话模块,提供:
- 智能体列表展示
- 实时流式对话
- 语音输入输出
- 会话管理
集成方案对比
方案一:独立服务部署(推荐短期方案)
优势:
- 无需重写代码,立即可用
- 保持模块独立性和稳定性
- 部署灵活,可独立扩展
实施方式:
- 将 Coze-Chat 作为独立微服务部署在独立容器
- 通过 API Gateway 统一入口
- 主系统通过 iframe 或 API 调用集成
配置示例:
# docker-compose.yml
services:
coze-service:
build: ./参考代码/coze-chat-系统/coze-chat-backend
ports:
- "8001:8000"
coze-frontend:
build: ./参考代码/coze-chat-系统/coze-chat-frontend
ports:
- "3002:80"
方案二:逐步迁移到 Vue3(推荐长期方案)
优势:
- 统一技术栈,降低维护成本
- 更好的集成体验
- 统一的组件库和样式
实施计划:
-
第一阶段:API 层对接
- 保留 Coze 后端服务
- 在 Vue3 中创建对话组件
- 复用现有 API 接口
-
第二阶段:功能迁移
- 智能体列表页面
- 对话界面
- 语音功能模块
-
第三阶段:完全整合
- 统一用户系统
- 统一权限管理
- 统一样式主题
推荐实施路径
短期(1-2周)
- 保持 Coze-Chat 作为独立服务
- 在主系统中通过 iframe 嵌入关键页面
- 统一认证 Token 传递
中期(1-2月)
- 抽取 Coze API 服务层
- 在 Vue3 中实现核心对话组件
- 逐步替换 React 页面
长期(3-6月)
- 完全迁移到 Vue3
- 优化集成体验
- 统一技术栈
技术要点
API 对接
// Vue3 中调用 Coze API
import { cozeApi } from '@/api/coze'
export const cozeService = {
// 获取智能体列表
async getBots() {
return await cozeApi.get('/agent/v1/cozechat/bots')
},
// 创建对话
async createChat(data) {
return await cozeApi.post('/agent/v1/cozechat/create-chat-stream', data)
}
}
iframe 集成
<template>
<div class="coze-container">
<iframe
:src="cozeUrl"
:style="{ width: '100%', height: '100%', border: 'none' }"
@load="onCozeLoaded"
/>
</div>
</template>
<script setup>
const cozeUrl = computed(() => {
const token = useAuthStore().token
return `http://localhost:3002?token=${token}`
})
</script>
结论
建议采用渐进式迁移策略:
- 短期保持独立部署,通过 iframe 集成
- 中期开始组件级迁移
- 长期实现完全整合
这样既能快速上线,又为未来的技术栈统一留出空间。