这是一个基于 Vue 3 + Flask 的法语学习 AI 助手研究平台,支持多用户、多组交互风格、AI 对话、跟读录音等功能。
- 操作系统:Linux / macOS / Windows(WSL2)
- Python:3.9+
- Node.js:16+
- FFmpeg:用于音频处理
sudo apt update
sudo apt install -y python3 python3-pip python3-venv nodejs npm ffmpegbrew install python3 node ffmpegsudo apt update
sudo apt install -y python3 python3-pip python3-venv nodejs npm ffmpeg在 backend/config.py 中配置以下密钥:
| 密钥 | 来源 | 说明 |
|---|---|---|
LLM_API_KEY |
SiliconFlow | LLM API 密钥 |
LLM_MODEL |
SiliconFlow | 使用的模型 ID |
WECHAT_APPID |
微信公众号 | 微信集成(可选) |
WECHAT_APPSECRET |
微信公众号 | 微信集成(可选) |
SMTP_EMAIL |
邮箱服务商 | 邮件通知(可选) |
SMTP_PASSWORD |
邮箱服务商 | 邮件通知(可选) |
french_learning/
├── backend/ # Flask 后端
│ ├── app.py # 应用入口
│ ├── config.py # 配置文件(需要填入 API 密钥)
│ ├── models.py # 数据库模型
│ ├── extensions.py # Flask 扩展初始化
│ ├── routes/ # API 路由
│ │ ├── auth.py # 认证相关
│ │ ├── chat.py # 聊天接口
│ │ ├── study.py # 学习状态管理
│ │ ├── wechat.py # 微信集成
│ │ ├── assessment.py # 评估接口
│ │ └── admin.py # 管理后台
│ ├── services/ # 业务逻辑
│ │ ├── llm_service.py # LLM 调用
│ │ └── audio_service.py # 音频处理
│ ├── prompts/ # LLM 提示词
│ │ └── system_prompt.py # 系统提示词
│ ├── data/ # 学习资料
│ │ ├── words.json # 单词库
│ │ └── audio/ # 音频文件
│ ├── instance/ # SQLite 数据库(自动生成)
│ │ └── french_study.db
│ └── uploads/ # 用户上传的录音(自动生成)
│
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── main.js # 应用入口
│ │ ├── api/ # API 调用
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 可复用组件
│ │ ├── stores/ # Pinia 状态管理
│ │ └── router/ # Vue Router 路由
│ ├── index.html
│ ├── vite.config.js # Vite 配置
│ └── package.json
│
├── database_schema.md # 数据库表结构文档
├── SETUP_GUIDE.md # 本文件
└── README.md # 项目说明
cd backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 app.py后端将运行在 http://localhost:5000
cd frontend
npm install
npm run dev前端将运行在 http://localhost:3000
创建 start.sh(Linux/macOS):
#!/bin/bash
# 启动后端
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
nohup python3 app.py > /tmp/flask.log 2>&1 &
BACKEND_PID=$!
# 启动前端
cd ../frontend
npm install
nohup npm run dev > /tmp/vite.log 2>&1 &
FRONTEND_PID=$!
echo "Backend PID: $BACKEND_PID"
echo "Frontend PID: $FRONTEND_PID"
echo "Backend: http://localhost:5000"
echo "Frontend: http://localhost:3000"运行:
chmod +x start.sh
./start.sh创建 backend/requirements.txt:
Flask==2.3.3
Flask-SQLAlchemy==3.0.5
Flask-JWT-Extended==4.4.4
Flask-CORS==4.0.0
Flask-Limiter==3.5.0
python-dotenv==1.0.0
requests==2.31.0
pydub==0.25.1
pyaudio==0.2.13
安装:
cd backend
pip install -r requirements.txtcd frontend
npm install主要依赖:
- Vue 3
- Vite
- Pinia
- Vue Router
- Axios
首次运行时,Flask 会自动创建数据库和表。如需手动初始化:
cd backend
python3
>>> from app import create_app, db
>>> app = create_app()
>>> with app.app_context():
>>> db.create_all()访问 http://localhost:3000/register 进行注册
sqlite3 backend/instance/french_study.db| 配置项 | 说明 | 默认值 |
|---|---|---|
LLM_API_KEY |
SiliconFlow API 密钥 | 需要配置 |
LLM_MODEL |
使用的 LLM 模型 | Pro/deepseek-ai/DeepSeek-V3.2 |
LLM_TIMEOUT |
LLM 请求超时(秒) | 120 |
STUDY_START_DATE |
学习开始日期 | 2026-04-02 |
DATABASE_URL |
数据库连接 | sqlite:///instance/french_study.db |
UPLOAD_FOLDER |
录音上传目录 | uploads/ |
JWT_SECRET_KEY |
JWT 密钥 | 随机生成 |
MAX_CONTENT_LENGTH |
最大上传文件大小 | 50MB |
| 配置项 | 说明 |
|---|---|
baseURL |
后端 API 地址 |
timeout |
请求超时时间 |
症状:前端无法连接后端 解决:
- 检查后端是否正常运行:
curl http://localhost:5000/api/study/status - 检查防火墙设置
- 确保后端和前端在同一网络
症状:音频验证失败 解决:
# 检查 FFmpeg 安装
which ffmpeg
# 重新安装
sudo apt install ffmpeg # Linux
brew install ffmpeg # macOS症状:数据库被占用 解决:
# 关闭所有 Python 进程
pkill -f "python3 app.py"
# 清空数据库
rm backend/instance/french_study.db症状:ModuleNotFoundError: No module named 'xxx'
解决:
cd backend
pip install -r requirements.txt --upgrade- 修改代码后,Flask 会自动重载(debug 模式)
- 查看日志:
tail -f /tmp/flask.log - 测试 API:使用 Postman 或 curl
- 修改代码后,Vite 会热更新
- 打开浏览器开发者工具(F12)查看错误
- 构建生产版本:
npm run build
- 当前使用 SQLite WAL 模式,适合小规模应用
- 大规模应用建议迁移至 PostgreSQL
- 当前 timeout 设置为 120 秒
- 可根据网络情况调整
- 使用更快的模型可减少响应时间
创建 Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY backend /app/backend
COPY frontend /app/frontend
# 安装后端依赖
RUN cd /app/backend && pip install -r requirements.txt
# 构建前端
RUN cd /app/frontend && npm install && npm run build
EXPOSE 5000 3000
CMD ["python3", "/app/backend/app.py"]- 使用 Gunicorn 替代 Flask 开发服务器
- 使用 Nginx 作为反向代理
- 配置 HTTPS/SSL
- 设置数据库备份
- 后端:
/tmp/flask.log - 前端:
/tmp/vite.log或浏览器控制台
# 查看后端进程
ps aux | grep python3
# 查看前端进程
ps aux | grep npm
# 检查端口占用
lsof -i :5000
lsof -i :3000
# 查看数据库状态
sqlite3 backend/instance/french_study.db ".tables"- 问题追踪:查看项目的 GitHub Issues
- 数据库文档:参考
database_schema.md - API 文档:查看各路由文件的注释
- Python:3.9+
- Node.js:16+
- Vue:3.x
- Flask:2.3+
更新时间:2026-04-02