# 网页版题库管理系统 基于 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 串行执行,任务状态持久化到数据库;刷新页面后自动恢复未完成任务列表;支持取消排队中/执行中任务、对失败项一键重试入队。 - 分类树管理(章节/知识点) - 练习模式(抽题、判题、解析反馈) - 仪表盘统计(总量、题型、难度、章节、导入历史)