9a7681112b29517a335e3ecd68c540a0025ae013
- 修改数据库配置将MYSQL_DB从mys_info_v3改为mys_info_test - 新增auth_users表wechat_openid字段并建立唯一索引 - 为plan_checkins表添加计划性能索引(idx_plan_period_student) - 将checkin_records_old表关联方式从student_id改为user_id - 将plan_checkins表关联方式从student_id改为user_id并更新附件路径 - 移除routes/auth.py中的uuid导入使用安全token生成函数 - 重构routes/checkin.py打卡逻辑去除course_type字段并优化返回结构 - 添加打卡时间限制验证功能防止过期打卡操作 - 实现小组统计功能支持老师查看各组打卡情况 - 更新主页index.html界面适配新的打卡和计划功能 - 调整计划提交时间规则为周五至周四周期 - 添加月度和年度计划提交状态验证机制
明缘进阶场 API(单 FastAPI 服务)
单服务承载 auth / pages / checkin / plan / profile / course-vote / survey / feedback,统一挂载在 /api/v1 下。
部署
-
安装依赖:
pip install -r server/requirements.txt -
配置环境变量(复制
server/.env.example后填写):WECHAT_APPID/WECHAT_SECRET:微信小程序凭证JWT_SECRET:JWT 签名密钥(>=32 字节随机串)ADMIN_KEY:反馈解决接口的管理密钥MYSQL_*:mys_info_test数据库连接SURVEY_DB:问卷库myxhxcPHONE_HMAC_KEY:手机号 HMAC 密钥,必须与既有phone_encrypted生成一致(默认MingYuan2026AuthKey)H5_BASE_URL:H5 模块基础地址(默认https://muguaclub.cn)FEEDBACK_DIR/COURSE_VOTES_FILE/PLAN_ATTACH_DIR:文件存储路径
-
执行 wechat_openid 迁移(一次性):
mysql mys_info_test < server/migrations/001_add_wechat_openid_column.sql -
启动:
uvicorn server.main:app --host 0.0.0.0 --port 8000 -
健康检查:
GET /api/v1/health返回{"ok": true}。
认证
POST /api/v1/auth/wechat-login:{code},wechat_openid命中自动登录;未命中返回need_phone=true。POST /api/v1/auth/bind-phone:{code, phone_code},手机号匹配后回填wechat_openid并登录。- 受保护接口使用
Authorization: Bearer <JWT>,不使用 cookie。
小程序
- 目录:
miniprogram/,四 tab(首页/打卡/计划/我的)。 - 首页调用
GET /api/v1/pages/home按返回顺序渲染,模块通过 web-view 打开并附带?token=。 - H5 引入
h5/shared/auth.js后,fetch自动附带 Bearer token。
测试
python -m pytest tests -q
Description
Languages
Python
82.7%
HTML
11%
Shell
3.7%
Dockerfile
2.6%