王宏豪 3f1a13936d feat(api): 重构图片地址管理与上传机制
- 替换开发环境API基础URL为本地服务地址
- 实现签名URL本地缓存机制,解决微信按URL缓存图片导致重复下载问题
- 添加缓存清理功能,包括过期清理和按需删除特定缓存项
- 集成阿里云OSS上传功能,支持直传减少服务器带宽占用
- 优化头像地址处理逻辑,统一使用签名缓存避免地址频繁变化
- 移除过时的OSS上传示例文件oss-upload.js
- 更新课程页面实现跳转第三方小程序功能
- 调整打卡记录图片地址获取方式,统一使用新的签名缓存逻辑
- 优化图片上传流程,增加压缩处理和批量上传支持
- 完善认证模块中的缓存清理逻辑,切换账号时清除相关图片缓存
- 添加后端环境变量配置模板和代理文档说明
2026-09-23 17:46:42 +08:00

明缘进阶场 API(单 FastAPI 服务)

单服务承载 auth / pages / checkin / plan / profile / course-vote / survey / feedback,统一挂载在 /api/v1 下。

部署

  1. 安装依赖:

    pip install -r server/requirements.txt
    
  2. 配置环境变量(复制 server/.env.example 后填写):

    • WECHAT_APPID / WECHAT_SECRET:微信小程序凭证
    • JWT_SECRET:JWT 签名密钥(>=32 字节随机串)
    • ADMIN_KEY:反馈解决接口的管理密钥
    • MYSQL_*:mys_info_test 数据库连接
    • SURVEY_DB:问卷库 myxhxc
    • PHONE_HMAC_KEY:手机号 HMAC 密钥,必须与既有 phone_encrypted 生成一致(默认 MingYuan2026AuthKey)
    • H5_BASE_URL:H5 模块基础地址(默认 https://muguaclub.cn)
    • FEEDBACK_DIR / COURSE_VOTES_FILE:文件存储路径
    • OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET / OSS_ENDPOINT / OSS_BUCKET / OSS_PUBLIC_ENDPOINT / OSS_URL_EXPIRE / OSS_POST_EXPIRE:对象存储(打卡附件 / 头像) —— 2026-09-22 起图片只存 OSS,没有磁盘兜底,这四项缺任意一项上传会直接 503
    • 注:原 PLAN_ATTACH_DIR / AVATAR_DIR / STATIC_ROOT 已随磁盘读路径删除
  3. 执行 wechat_openid 迁移(一次性):

    mysql mys_info_test < server/migrations/001_add_wechat_openid_column.sql
    
  4. 启动:

    uvicorn server.main:app --host 0.0.0.0 --port 8000
    
  5. 健康检查: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
No description provided
Readme 169 KiB
Languages
Python 82.7%
HTML 11%
Shell 3.7%
Dockerfile 2.6%