纯 HTML/CSS/JS 前端 + Python 标准库后端(零第三方依赖),打开浏览器就能刷题:选择题即时判定并给出逐选项解析,简答题展示答案后自评对错;内置 MySQL 练习(SQL 在线运行 + 自动判题)与 C++ 算法练习(在线编译运行 + 用例比对);还集成了聊天学习助手(后端代理调用大模型,API Key 不出本机,会话本地落盘)。
|
基础题库 + 7 个可选题库包自动合并,缺失某个包不影响整体运行;题库下拉分组、目录概览、搜索跳转一应俱全。 |
选择题提交后高亮对错,每个选项都有独立解析;简答题展示答案后自评,支持公式推导、变量说明、例题等结构化区块。 |
|
MySQL 语法练习题,后端在内存 SQLite 中建库执行并比对结果集;仅放行 SELECT,内置 shop / hr / school 三套数据集。 |
算法题调用本机 |
|
后端代理调用 MiniMax API,Key 只存本机环境变量;支持「带入当前题目」提问,回答里的 LaTeX 公式直接渲染,会话落盘可回溯。 |
内置术语词典自动扫描题干/解析生成「名词解释」;MathJax 渲染 LaTeX 公式与推导,多 CDN 兜底、失败可降级。 |
|
|
后端只用 Python 标准库 |
flowchart TD
A["浏览器前端 site/<br>纯 HTML + CSS + JS"] -->|"GET 题库 *.json"| B["server.py<br>Python 标准库 http.server"]
A -->|"POST /api/sql/run"| B
A -->|"POST /api/cpp/run"| B
A -->|"POST /api/minimax/chat"| B
B -->|"建库执行 + 结果比对"| C["内存 SQLite<br>shop / hr / school 数据集"]
B -->|"临时目录编译运行"| D["g++ / clang++<br>用例输出比对"]
B -->|"代理转发(Key 不出本机)"| E["MiniMax API<br>聊天学习助手"]
B -->|"会话落盘"| F[("data/chat_sessions/<br>+ chat_logs.jsonl")]
只需要 Python 3,无需安装任何依赖:
git clone https://github.com/JingHao-Leon/study-flashcards.git
cd study-flashcards
python server.py- 电脑浏览器:
http://127.0.0.1:5173/ - 平板(同一 Wi-Fi):
http://<你的电脑局域网IP>:5173/(需以HOST=0.0.0.0 python server.py启动) - 端口/监听地址可用环境变量覆盖:
PORT、HOST
⚠️ 不要双击site/index.html用file://打开——题库 fetch 与 API 都需要经由本地 server 访问。 C++ 判题需要本机已安装g++或clang++(Windows 推荐 MinGW-w64)并加入 PATH;未安装时其余功能不受影响。
site/questions.json(基础题库)未随仓库发布(见 .gitignore)。缺失时 7 个可选题库包仍可正常加载练习;如需从 PDF 抽题生成自己的基础题库:
python tools/extract_mcq.py \
--pdf "你的题库1.pdf" \
--pdf "你的题库2.pdf" \
--out "site/questions.json"| 题库文件 | 题数 | 内容 |
|---|---|---|
fintech_beginner_questions.json |
150 | 金融科技入门 |
fintech_questions.json |
120 | 金融科技进阶 |
deep_learning_questions.json |
80 | 深度学习 |
xigua_ml_questions.json |
52 | 西瓜书风格机器学习 |
fintech_math_formulas.json |
25 | 金融数学公式推导卡(LaTeX) |
mysql_practice_questions.json |
24 | MySQL 练习(在线运行判题) |
cpp_algo_questions.json |
16 | C++ 算法题(在线编译判题) |
新增题库很简单:放一个 site/<your_pack>.json(JSON 数组,每题至少含 id/source/seq/type/question),再到 site/app.js 的 extraPaths 里登记路径即可。
聊天功能需要配置环境变量,或复制 .env.example 为 .env.local 填写(不要提交到 Git):
| 变量 | 必填 | 说明 |
|---|---|---|
MINIMAX_API_KEY |
✅ | MiniMax API Key |
MINIMAX_MODEL |
⬜ | 模型名,默认 MiniMax-M2.7-highspeed |
MINIMAX_GROUP_ID |
⬜ | MiniMax Group ID |
MINIMAX_BASE_URL |
⬜ | API 地址,默认 https://api.minimax.chat/v1 |
MINIMAX_SOUL_FILE |
⬜ | 助手人格/输出规范文件,默认读根目录 soul.md |
├── server.py # 后端:静态服务 + SQL/C++/聊天 API(纯标准库)
├── soul.md # 聊天助手人格与输出规范(系统提示词)
├── requirements.txt # 空文件——零第三方依赖
├── .env.example # 聊天配置模板
├── site/
│ ├── index.html # 页面骨架(MathJax 多 CDN 兜底)
│ ├── app.js # 前端全部逻辑:题库加载/判定/目录/聊天 UI
│ ├── style.css # 样式
│ ├── sql_datasets.json # SQL 判题数据集:shop / hr / school
│ └── *_questions.json # 7 个内置题库包(见上表)
├── tools/
│ └── extract_mcq.py # 从 PDF 抽题生成 questions.json
├── assets/
│ └── preview.png # 界面预览(本 README 引用)
└── TECHNICAL_OVERVIEW.md # 技术原理拆解(架构/状态机/扩展指南)
想深入了解实现机制(选择题状态机、术语扫描、MathJax 策略、会话落盘格式、如何扩题库),请读 TECHNICAL_OVERVIEW.md。
- 本地学习工具:进度与错题存在浏览器
localStorage,无账号体系、不同设备间不同步。 - GitHub Pages 无法完整运行:纯静态托管可以用,但 SQL/C++ 判题与聊天必须运行
server.py。 - SQL 判题方言:题目按 MySQL 语法设计,实际由内存 SQLite 执行,个别 MySQL 专有函数行为可能有差异;仅放行 SELECT 查询。
- C++ 判题依赖本机编译器,运行超时与输出比对的规则以
server.py实现为准。 - 基础题库
site/questions.json未入库,需自行生成或从空数组起步。
Made with ☕ by JingHao-Leon
