- 实现微信登录、手机号绑定、token验证和登出功能 - 添加打卡系统,支持正常、迟到、请假等状态记录 - 集成课程投票功能,支持多课程选择和评分评论 - 开发反馈系统,支持图文反馈提交和管理员处理 - 构建首页页面模块,动态展示学习资源和个人信息 - 设计计划管理系统,支持周/月/年计划制定和跟踪 - 实现小组计划统计和历史记录查询功能 - 完善用户认证会话管理和数据库交互逻辑
55 lines
1.8 KiB
Markdown
55 lines
1.8 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` / `PLAN_ATTACH_DIR`:文件存储路径
|
||
|
||
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
|
||
```
|