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

59 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 明缘进阶场 API(单 FastAPI 服务)
单服务承载 auth / pages / checkin / plan / profile / course-vote / survey / feedback,统一挂载在 `/api/v1` 下。
## 部署
1. 安装依赖:
```bash
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 迁移(一次性):
```bash
mysql mys_info_test < server/migrations/001_add_wechat_openid_column.sql
```
4. 启动:
```bash
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。
## 测试
```bash
python -m pytest tests -q
```