Тайлбар байхгүй

nonvioce c4e82f7d01 feat: collapse WebDAV config after success, show modify button 3 сар өмнө
tiku-client c4e82f7d01 feat: collapse WebDAV config after success, show modify button 3 сар өмнө
tiku-server fad866adb5 docs: update README for serve --restart 3 сар өмнө
.gitignore 83b48760e0 fix: expand gitignore for keystore files 3 сар өмнө
CLAUDE.md f21733d0ab Initial commit: 题库PLUS C/S架构数学题库管理系统 3 сар өмнө
README.md f21733d0ab Initial commit: 题库PLUS C/S架构数学题库管理系统 3 сар өмнө

README.md

题库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          # 本文件

快速开始

服务端

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)

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/<sha256-8>.docx),每题一个文件
  • 【答案】 标记分隔题干和答案区,元数据存 docx 自定义属性
  • 导入时 【难度】【知识点】 提取后从正文删除
  • 5 层知识点编码体系 (1811 叶子),完整沿用现有题库编码
  • 文档即真相 (source of truth),数据库可随时从 docx 文件重建
  • 服务端端口默认 8765,避开常用端口

完整设计文档见 CLAUDE.md。