feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,140 @@
"""
Coze 集成示例
演示如何使用 Coze 服务
"""
import asyncio
import os
from datetime import datetime
# 设置环境变量(实际使用时应通过 .env 文件或环境配置)
os.environ.update({
"COZE_API_BASE": "https://api.coze.cn",
"COZE_WORKSPACE_ID": "your_workspace_id",
"COZE_API_TOKEN": "your_api_token",
"COZE_CHAT_BOT_ID": "7489905095250526219",
"COZE_TRAINING_BOT_ID": "7494965200370581538",
"COZE_EXAM_BOT_ID": "7492288561950195724"
})
from app.services.ai.coze import (
get_coze_service,
CreateSessionRequest,
SendMessageRequest,
EndSessionRequest,
SessionType
)
async def demo_course_chat():
"""演示课程对话功能"""
print("\n=== 课程对话示例 ===")
service = get_coze_service()
# 1. 创建会话
create_request = CreateSessionRequest(
session_type=SessionType.COURSE_CHAT,
user_id="demo-user-123",
course_id="python-basics-101",
metadata={"course_name": "Python 基础教程"}
)
session_response = await service.create_session(create_request)
print(f"创建会话成功: {session_response.session_id}")
# 2. 发送消息
message_request = SendMessageRequest(
session_id=session_response.session_id,
content="请解释一下 Python 的装饰器是什么?",
stream=True
)
print("\n助手回复:")
async for event in service.send_message(message_request):
if event.event.value == "message_delta":
print(event.content, end="", flush=True)
elif event.event.value == "message_completed":
print(f"\n\n[消息完成] Token 使用: {event.data.get('usage', {})}")
# 3. 获取历史消息
messages = await service.get_session_messages(session_response.session_id)
print(f"\n会话消息数: {len(messages)}")
async def demo_training_session():
"""演示陪练会话功能"""
print("\n\n=== 陪练会话示例 ===")
service = get_coze_service()
# 1. 创建陪练会话
create_request = CreateSessionRequest(
session_type=SessionType.TRAINING,
user_id="demo-user-456",
training_topic="客诉处理技巧",
metadata={"difficulty": "intermediate"}
)
session_response = await service.create_session(create_request)
print(f"创建陪练会话成功: {session_response.session_id}")
# 2. 进行多轮对话
scenarios = [
"客户抱怨产品质量有问题,要求退款",
"我会先向客户道歉,然后了解具体问题",
"客户说产品使用一周就坏了,非常生气"
]
for i, content in enumerate(scenarios):
print(f"\n--- 第 {i+1} 轮对话 ---")
print(f"用户: {content}")
message_request = SendMessageRequest(
session_id=session_response.session_id,
content=content,
stream=False # 非流式响应
)
print("助手: ", end="")
async for event in service.send_message(message_request):
if event.event.value == "message_completed":
print(event.content)
# 模拟思考时间
await asyncio.sleep(1)
# 3. 结束会话
end_request = EndSessionRequest(
reason="练习完成",
feedback={
"rating": 5,
"helpful": True,
"comment": "模拟场景很真实,学到了很多处理技巧"
}
)
end_response = await service.end_session(session_response.session_id, end_request)
print(f"\n会话结束:")
print(f"- 时长: {end_response.duration_seconds}")
print(f"- 消息数: {end_response.message_count}")
async def main():
"""运行所有示例"""
try:
# 运行课程对话示例
await demo_course_chat()
# 运行陪练会话示例
await demo_training_session()
except Exception as e:
print(f"\n错误: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
# 运行示例
asyncio.run(main())