通过网盘分享的文件:kiro-jiakaobaodian.rar
链接: https://pan.baidu.com/s/18lL8-PtDEH1h09uHAG5D6A? 复制这段内容后打开百度网盘手机App,操作更方便哦









├── backend/ # Flask后端
│ ├── app.py # 应用入口
│ ├── config.py # 配置
│ ├── models.py # 数据库模型
│ ├── utils.py # 工具函数
│ ├── seed.py # 测试数据初始化
│ ├── init_db.sql # 建表SQL
│ ├── requirements.txt # 依赖
│ └── routes/ # 路由模块
│ ├── admin_routes.py # 管理员接口
│ ├── user_routes.py # 用户接口
│ ├── question_routes.py # 题库接口(含增量更新)
│ ├── sync_routes.py # 数据同步接口
│ └── study_routes.py # 刷题业务接口
├── admin-frontend/ # 原生H5管理后台
│ ├── css/style.css
│ ├── js/api.js
│ ├── login.html
│ ├── index.html # 仪表盘
│ ├── questions.html # 题目管理
│ ├── knowledge.html # 知识点分类
│ ├── version.html # 版本发布
│ ├── users.html # 用户管理
│ └── exam-config.html # 考试配置
└── uniapp-mobile/ # UniApp移动端
├── pages/
│ ├── index/ # 首页
│ ├── login/ # 登录
│ ├── chapter/ # 章节练习
│ ├── practice/ # 刷题页
│ ├── exam/ # 模拟考试
│ ├── wrong/ # 错题本
│ ├── favorite/ # 收藏
│ └── profile/ # 个人中心
└── utils/
├── request.js # 网络请求封装
├── db.js # SQLite工具类
└── sync.js # 增量同步工具类
cd backend
pip install -r requirements.txt
# 先在MySQL创建数据库 exam_db
python seed.py # 初始化测试数据
python app.py # 启动服务 http://localhost:5000
直接用浏览器打开 admin-frontend/login.html,账号 admin / admin123
uniapp-mobile 文件夹本身(不是它的上级目录)manifest.json、pages.json、pages/ 等文件http://localhost:8080注意:H5端无本地SQLite,所有操作直接走后端API,需确保 Flask 后端已启动。
┌─────────────────────────────────────────────────────────────┐
│ 系统整体数据流 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [管理后台H5] ──POST/PUT──> [Flask API] ──写入──> [MySQL] │
│ │ │ │
│ 题目增删改查 │ 发布版本 │
│ 版本发布 ▼ │
│ Excel导入 system_version表记录 │
│ │
├─────────────────────────────────────────────────────────────┤
│ │
│ [UniApp APP端] │
│ │ │
│ ①首次安装 ──> GET /question/get_full_db │
│ │ 下载完整SQLite压缩包,存入本地沙盒 │
│ ▼ │
│ ②离线刷题 ──> 直接读取本地SQLite(question表) │
│ │ 做题记录写入本地 local_record(sync_status=0) │
│ ▼ │
│ ③联网自动同步(两步): │
│ Step1: POST /question/get_diff │
│ 上传本地版本号 → 返回增/改/删的题目列表 │
│ 批量更新本地SQLite │
│ Step2: POST /sync/upload │
│ 上传 sync_status=0 的本地记录到云端 │
│ POST /sync/pull │
│ 拉取云端其他设备的记录合并到本地 │
│ (时间戳冲突解决:以更晚时间为准) │
│ │
├─────────────────────────────────────────────────────────────┤
│ [UniApp H5端] │
│ 无本地SQLite,所有操作直接请求Flask API在线完成 │
└─────────────────────────────────────────────────────────────┘
updated_at 时间戳为准,较新的记录覆盖较旧的#ifdef APP-PLUS)python seed.py 初始化)from flask import Flaskfrom flask_cors import CORSfrom flask_jwt_extended import JWTManagerfrom config import Configfrom models import dbfrom routes.admin_routes import admin_bpfrom routes.user_routes import user_bpfrom routes.question_routes import question_bpfrom routes.sync_routes import sync_bpfrom routes.study_routes import study_bpimport osdef create_app():app = Flask(name)app.config.from_object(Config)CORS(app, supports_credentials=True)JWTManager(app)db.init_app(app)app.register_blueprint(admin_bp, url_prefix='/api/admin')app.register_blueprint(user_bp, url_prefix='/api/user')app.register_blueprint(question_bp, url_prefix='/api/question')app.register_blueprint(sync_bp, url_prefix='/api/sync')app.register_blueprint(study_bp, url_prefix='/api/study')os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)with app.app_context():db.create_all()return appif name == 'main':app = create_app()app.run(debug=True, host='0.0.0.0', port=5000)
通过网盘分享的文件:kiro-jiakaobaodian.rar
链接: https://pan.baidu.com/s/18lL8-PtDEH1h09uHAG5D6A? 复制这段内容后打开百度网盘手机App,操作更方便哦