# 题库PLUS C/S 架构数学题库管理系统 — 以 docx 原生格式存储题目,图片和公式天然内嵌。 ## 项目组成 ``` 题库PLUS/ ├── tiku-server/ # 服务端 (Python + FastAPI + SQLite) ├── tiku-client/ # 客户端 (Flutter, Web + Android) ├── 题库/ # 参考项目 A (Python CLI + Web, Markdown 存储) ├── 题库C++/ # 参考项目 B (Qt6 桌面版) ├── CLAUDE.md # 完整设计文档 (51 项决策) └── README.md # 本文件 ``` ## 快速开始 ### 服务端 ```bash cd tiku-server bash install.sh # 按照提示完成安装后启动: source .venv/bin/activate ./tiku-server serve ``` 服务启动后: - API 服务: `http://localhost:8765` - API Token: 在 `config.yaml` 中查看,或运行 `./tiku-server token` - Flutter Web 客户端: `http://localhost:8765/` (如果已构建) ### 客户端 (Flutter) ```bash cd tiku-client flutter pub get # Web 版本: flutter build web --release cp -r build/web/* ../tiku-server/web/ # Android 版本: flutter build apk --release ``` ## 核心区别 (与参考项目对比) | 特性 | 题库 (Python) | 题库C++ (Qt6) | 题库PLUS | |------|-------------|--------------|---------| | 架构 | 本地 CLI/Web | 桌面应用 | **C/S (FastAPI + Flutter)** | | 题目存储 | Markdown + YAML | Markdown + YAML | **docx (Word 原生)** | | 公式渲染 | pandoc → MathML | MathJax (QWebEngine) | pandoc → HTML+MathML (WebView) | | 多用户 | 否 | 否 | 单用户 Token 认证 | | 客户端 | 浏览器/Jinja2 | Qt6 Widgets | Flutter Web + Android | | 图片存储 | 独立 .png 文件 | 独立 .png 文件 | **docx 内嵌** | ## 设计要点 - 题目以独立 docx 文件存储 (`problems/.docx`),每题一个文件 - `【答案】` 标记分隔题干和答案区,元数据存 docx 自定义属性 - 导入时 `【难度】``【知识点】` 提取后从正文删除 - 5 层知识点编码体系 (1811 叶子),完整沿用现有题库编码 - 文档即真相 (source of truth),数据库可随时从 docx 文件重建 - 服务端端口默认 `8765`,避开常用端口 完整设计文档见 [CLAUDE.md](CLAUDE.md)。