0395b58eafd296ef274b667de53240c8d9dbdb84
- 新增 USER_STATUS_NORMAL 常量用于筛选正常状态学员 - 修改小组成员查询接口,增加 student_id 字段返回 - 扩展打卡记录查询,支持 content 和 attachments 字段 - 在打卡结果中添加 student_id、content 和 attachments 信息 - 新增 /records 接口供教师查询周计划打卡名单 - 名单统计仅包含状态为'正常'的学员 - 实现按组别和学号排序的打卡状态统计功能
明缘进阶场 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%