GitHunt
CA

calmini/wrong-notebook

一个基于AI的学生错题本

Smart Wrong Notebook (智能错题本)

一个基于 AI 的智能错题管理系统,帮助学生高效整理、分析和复习错题。

✨ 主要功能

  • 🤖 AI 智能分析:自动识别题目内容,生成解析、知识点标签和同类练习题。
  • ⚙️ 灵活的 AI 配置:支持 Google GeminiOpenAI (及兼容接口) 两种 AI 提供商,可直接在网页设置中动态切换和配置。
  • 📚 多错题本管理:支持按科目(如数学、物理、英语)创建和管理多个错题本。
  • 🏷️ 智能标签系统:自动提取知识点标签,支持自定义标签管理。
  • 🔍 多维度筛选:支持按掌握状态、时间范围、知识点标签、年级学期、试卷等级等多种条件筛选错题。
  • 🖨️ 灵活导出打印:一键导出筛选后的错题,支持自定义打印内容(答案/解析/知识点)和图片缩放比例,可直接打印或保存为 PDF。
  • 📝 智能练习:基于错题生成相似的练习题,巩固薄弱环节。
  • 📊 数据统计:可视化展示错题掌握情况和学习进度。
  • 🔐 用户管理:支持多用户注册、登录,数据安全隔离。
  • 🛡️ 管理员后台:提供用户管理功能,可禁用/启用用户、删除违规用户。

📸 屏幕截图功能 (HTTPS 设置)

本应用的屏幕截图功能依赖浏览器的安全上下文 (HTTPS)。在 Docker 或局域网环境中使用时,请参考 HTTPS 配置指南 启用内置 HTTPS 支持。

📱 PWA 支持 (添加到主屏幕)

本项目支持 PWA (Progressive Web App),您可以将应用添加到手机主屏幕,获得原生应用般的使用体验。

功能特性

  • 🚀 快速启动:点击主屏幕图标直接打开,无需输入网址。
  • 📱 沉浸体验:全屏运行,无浏览器地址栏干扰。
  • 🎨 原色适配:应用图标和启动画面适配系统主题。

使用方法

  • iPhone / iPad (Safari): 点击底部 分享 按钮 -> 选择 "添加到主屏幕"
  • Android (Chrome): 点击右上角 菜单 -> 选择 "添加到主屏幕""安装应用"

🛠️ 技术栈

🚀 快速开始

方式一:使用 Docker 部署

1. 启动服务

您可以选择 直接使用命令 (适合快速测试) 或 Docker Compose (适合长期运行)。

选项 A:直接使用 Docker 命令

docker run -d --name wrong-notebook \
  -e NEXTAUTH_SECRET="your_secret_key" \
  -p 3000:3000 \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/config:/app/config \
  ghcr.io/wttwins/wrong-notebook

选项 B:使用 Docker Compose (推荐)

使用 docker-compose.yml 文件进行管理。

  1. 下载配置文件
    curl -o docker-compose.yml https://raw.githubusercontent.com/wttwins/wrong-notebook/refs/heads/main/docker-compose.yml
  2. 启动服务
    docker-compose up -d
  3. 查看日志
    docker-compose logs -f
  4. 停止服务
    docker-compose down

方式二:本地源码运行

1. 克隆仓库

git clone https://github.com/wttwins/wrong-notebook.git
cd wrong-notebook

2. 环境准备

确保已安装 Node.js (v18+) 和 npm。

3. 安装依赖

npm install

4. 配置环境变量

复制 .env.example.env 并填入必要的配置:

cp .env.example .env

基础配置

环境变量 描述 默认值 说明
DATABASE_URL 数据库连接地址 file:./dev.db SQLite 数据库路径
NEXTAUTH_SECRET Auth 密钥 用于加密 Session,生产环境建议设置,可以使用 openssl rand -base64 32 生成一个随机字符串作为密钥
NEXTAUTH_URL 访问地址 http://your-domain-name:3000 部署后的访问地址
AUTH_TRUST_HOST 信任主机头 true 设置为 true 时自动推断 URL,适合 Docker/PaaS
LOG_LEVEL 日志级别 debug (开发) / info (生产) 可选值:trace, debug, info, warn, error, fatal
HTTP_PROXY HTTP 代理 设置 HTTP 代理
HTTPS_PROXY HTTPS 代理 设置 HTTPS 代理

AI 配置

环境变量 描述 默认值 说明
AI_PROVIDER AI 提供商 gemini 可选 gemini, openaiazure
GOOGLE_API_KEY Gemini API Key 使用 Gemini 时必填
GEMINI_BASE_URL Gemini API 地址 可选,用于自定义 API 地址
GEMINI_MODEL Gemini 模型 gemini-2.5-flash 可选,如 gemini-3.0-flash
OPENAI_API_KEY OpenAI API Key 使用 OpenAI 时必填
OPENAI_BASE_URL OpenAI API 地址 可选,用于兼容的 API 服务
OPENAI_MODEL OpenAI 模型 gpt-4o 可选,如 gpt-4o
AZURE_OPENAI_API_KEY Azure API Key 使用 Azure OpenAI 时必填
AZURE_OPENAI_ENDPOINT Azure Endpoint Azure 资源端点,如 https://xxx.openai.azure.com
AZURE_OPENAI_DEPLOYMENT 部署名称 Azure 模型部署名称
AZURE_OPENAI_API_VERSION API 版本 2024-02-15-preview 可选,Azure API 版本
AZURE_OPENAI_MODEL Azure 模型 gpt-4o 可选,显示的模名称

5. 初始化数据库

npx prisma migrate dev
npx prisma db seed

6. 管理员账户

默认管理员账户:

  • 邮箱: admin@localhost
  • 密码: 123456

管理员登录后,可在“设置” -> “用户管理”中管理系统用户。

7. 启动开发服务器

npm run dev

访问 http://your-domain-name:3000 开始使用。

⚙️ AI 模型配置

本项目支持动态配置 AI 模型,无需重启服务器。

  1. 进入设置:点击首页右上角的设置图标。
  2. 选择提供商:支持 Google Gemini, OpenAI (或兼容 API) 和 Azure OpenAI
  3. 填写参数
    • 通用参数: API Key, Base URL (或 Endpoint), Model Name (或 Deployment Name)。
    • Azure 特有: Deployment Name (部署名称), API Version (API 版本)。
  4. 保存生效:点击保存后即刻生效。

注意:网页配置会保存到 config/app-config.json 文件中,该文件的优先级高于 .env 环境变量。

🛠️ 实用脚本

scripts/ 目录下提供了一些实用脚本,用于维护和调试:

  • 重置密码:
    node scripts/reset-password.js <邮箱> <新密码>
    示例:
    node scripts/reset-password.js user@example.com 123456 

📄 许可证

MIT License

calmini/wrong-notebook | GitHunt