1. 项目背景与核心价值
作为一名经历过公考备考的开发者,我深知传统纸质刷题的低效与不便。去年备考期间,我尝试了市面上多款在线刷题产品,发现普遍存在三个痛点:题库更新滞后、错题管理混乱、学习数据可视化不足。这促使我萌生了开发一个专为公考设计的全栈刷题平台的想法。
这个基于Flask+Vue的在线学习系统,本质上是要解决三个核心问题:
- 建立结构化题库体系(按行测/申论/专业科目分类)
- 实现智能刷题路径规划(基于用户薄弱知识点)
- 提供多维学习数据分析(正确率趋势、耗时分布等)
技术选型上,前端采用Vue3+Element Plus实现响应式交互,后端用Flask构建RESTful API,数据持久层使用PostgreSQL。开发环境搭配PyCharm专业版与VSCode,充分利用两者的代码提示和调试优势。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 技术栈选型考量
后端选择Flask而非Django的三大原因:
- 微内核架构更适合快速迭代的题库业务模块
- 与Vue前端解耦更彻底(纯API交互)
- 自定义ORM层能更好适配公考题库的特殊关系模型
前端技术组合:
- Vue3 Composition API:逻辑复用性强于Options API
- Pinia状态管理:比Vuex更简洁的模块化方案
- ECharts可视化:满足学习数据图表展示需求
数据库设计关键点:
sql复制CREATE TABLE question (
id SERIAL PRIMARY KEY,
q_type VARCHAR(20) NOT NULL CHECK(q_type IN ('single_choice', 'multiple_choice', 'judgment')),
stem TEXT NOT NULL,
options JSONB,
answer VARCHAR(50) NOT NULL,
explanation TEXT,
difficulty FLOAT CHECK(difficulty >= 0 AND difficulty <= 1),
knowledge_points VARCHAR(100)[]
);
2.2 核心功能模块划分
-
题库管理子系统
- 支持Markdown格式的题目导入
- 智能查重(基于题干语义相似度)
- 批量设置知识点标签
-
智能刷题引擎
python复制def generate_paper(user_id): weak_points = get_weak_knowledge_points(user_id) question_pool
