- 替换开发环境API基础URL为本地服务地址 - 实现签名URL本地缓存机制,解决微信按URL缓存图片导致重复下载问题 - 添加缓存清理功能,包括过期清理和按需删除特定缓存项 - 集成阿里云OSS上传功能,支持直传减少服务器带宽占用 - 优化头像地址处理逻辑,统一使用签名缓存避免地址频繁变化 - 移除过时的OSS上传示例文件oss-upload.js - 更新课程页面实现跳转第三方小程序功能 - 调整打卡记录图片地址获取方式,统一使用新的签名缓存逻辑 - 优化图片上传流程,增加压缩处理和批量上传支持 - 完善认证模块中的缓存清理逻辑,切换账号时清除相关图片缓存 - 添加后端环境变量配置模板和代理文档说明
59 lines
2.2 KiB
Markdown
59 lines
2.2 KiB
Markdown
# 明缘进阶场 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
|
||
```
|