Files
problem-bank/README.md
2026-03-06 15:52:34 +08:00

55 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 网页版题库管理系统
基于 FastAPI + React + SQLite 的题库系统支持题目管理、AI 导入、Excel 导入导出、分类管理、练习模式与统计仪表盘。
## 目录
- `backend/`: FastAPI 后端
- `frontend/`: React 前端
- `analysis.py`: 原始解析脚本(参考)
## 后端启动
1. 安装依赖:
- `cd backend`
- `python3 -m venv .venv && source .venv/bin/activate`
- `pip install -r requirements.txt`
2. 配置环境变量:
- 复制项目根目录 `.env.example``.env`
- 填写 `API_KEY``ADMIN_PASSWORD``JWT_SECRET_KEY`
3. 运行:
- 在项目根目录执行 `uvicorn backend.main:app --reload --port 8000`
## 前端启动
1. 安装依赖:
- `cd frontend`
- `npm install`
2. 运行:
- `npm run dev`
3. 打开:
- `http://127.0.0.1:5173`
## 导入中心(队列)说明
- 导入任务使用**持久化队列**:任务与文件项写入数据库(`import_jobs` / `import_job_items`),后端单消费者按创建时间 FIFO 串行执行。
- 状态枚举:`queued`(排队中)、`running`(执行中)、`success``failed``cancelled``retrying`
- 刷新页面后,前端会请求 `GET /api/import/jobs?status=queued,running` 恢复未完成任务并轮询进度;无需依赖本地缓存。
- 失败项可通过「重试失败项」再次入队(新建任务);排队中/执行中任务可取消。
- 上传文件按任务与序号存为唯一路径(`upload_dir/{job_id}/{seq}_{filename}`),避免同名覆盖。
## 默认登录
- 用户名:`admin`
- 密码:`admin123`(请在 `.env` 修改)
## 功能清单
- 题目 CRUD、搜索、筛选、批量删除、批量更新
- AI 智能导入PDF/Word -> OpenAI兼容接口 -> 预览 -> 确认保存)
- Excel 批量导入、模板下载、导出 JSON/CSV/Excel
- **导入中心(持久化队列)**:严格 FIFO 串行执行,任务状态持久化到数据库;刷新页面后自动恢复未完成任务列表;支持取消排队中/执行中任务、对失败项一键重试入队。
- 分类树管理(章节/知识点)
- 练习模式(抽题、判题、解析反馈)
- 仪表盘统计(总量、题型、难度、章节、导入历史)