一个基于 Flask 的错题复习系统,包含网页端、后端 API 和 Android 原生 App。系统支持用户登录、错题本管理、错题详情、复习记录、图片上传,以及基于遗忘概率的今日推荐复习。
- 用户注册、登录、登出
- 错题本创建与查看
- 错题新增、详情查看、图片上传
- 复习反馈记录
- 根据遗忘概率生成今日推荐复习列表
/api接口供移动端或其他客户端调用
- Flask
- SQLite
- Jinja2
- Werkzeug Security
- scikit-learn
- Android 原生 API 客户端
.
├─ app.py # 根目录兼容入口,Render 暂时继续使用 gunicorn app:app
├─ requirements.txt
├─ README.md
├─ backend/
│ ├─ __init__.py
│ ├─ app.py # 真正的 Flask app
│ ├─ config.py # 路径、数据库、上传目录等配置
│ ├─ routes/
│ │ ├─ __init__.py
│ │ └─ api_routes.py # /api 接口
│ ├─ services/ # 业务逻辑、数据库访问、推荐算法
│ ├─ models/ # 数据结构和 memory_model.pkl
│ ├─ data/
│ │ └─ mistakes.db # 默认 SQLite 数据库
│ └─ scripts/
│ └─ train_memory_model.py
├─ web/
│ ├─ __init__.py
│ ├─ routes/ # 网页端路由
│ ├─ templates/ # Jinja2 模板
│ └─ static/ # CSS、上传图片等静态资源
└─ android-app/ # Android 原生 API App
cd "C:\Users\xiaoye\Desktop\notebook".\venv\Scripts\Activate.ps1python -m pip install -r requirements.txtpython app.py启动后访问:
http://127.0.0.1:5000
如果需要指定端口:
$env:PORT = "5017"
python app.py默认数据库路径:
backend/data/mistakes.db
可以通过环境变量覆盖数据库路径:
$env:MISTAKES_DB_PATH = "C:\path\to\mistakes.db"
python app.py网页和 API 上传的图片默认保存到:
web/static/uploads
Render 暂时保持原启动方式:
gunicorn app:app
根目录 app.py 是兼容入口,会导入 backend.app 中真正的 Flask app。
建议在 Render 设置环境变量:
SECRET_KEYMISTAKES_DB_PATH,如果使用持久化磁盘保存 SQLite 数据库
如果继续使用 SQLite 和上传图片,生产环境建议配置 Render Persistent Disk,避免重新部署后数据库或上传文件丢失。
android-app/ 是 Android 原生 API 客户端,启动后直接调用已部署的 Render 后端 API。
当前 API 登录态使用 Flask session cookie,App 会保存并携带 cookie。默认 API 地址在 android-app/app/build.gradle 的 BuildConfig.API_BASE_URL 中配置。
/:首页,展示今日推荐复习/login:登录/register:注册/notebooks:错题本列表/notebooks/<notebook_id>/mistakes:错题列表/mistakes/<mistake_id>:错题详情
POST /api/registerPOST /api/loginPOST /api/logoutGET /api/meGET /api/notebooksPOST /api/notebooksGET /api/notebooks/<notebook_id>/mistakesPOST /api/notebooks/<notebook_id>/mistakesGET /api/mistakes/<mistake_id>POST /api/mistakes/<mistake_id>/imageGET /api/review/recommendations