65ec4e6a52d1ff6658c4fb741d394f6311194ede
- 将上课日从周六调整为周日,新增 CLASS_WEEKDAY 常量 - 更新 get_class_date 和 get_sunday_of_week 函数以支持周日计算 - 修改 generate_week_list 函数生成周日日期而非周六日期 - 重构月计划和年计划的时间窗口逻辑,增加提前提交功能 - 新增 monthly_window 和 yearly_window 函数定义准确的提交窗口期 - 调整默认周期选择逻辑,支持跨月年的时间窗口 - 添加 period_labels 字段提供前端周期标签显示 - 移除旧的 _validate_current_period 函数 - 完善计划提交验证逻辑,支持多种时间周期类型 chore(miniapp): 更新小程序项目配置 - 补充 project.config.json 中的设置选项 - 调整 project.private.config.json 配置结构 - 移除冗余的页面调试条件配置 - 更新编辑器和编译相关配置项
明缘进阶场 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%