Files
fitness-coach/OVERVIEW.md
wm 70ff806042 feat: 小程序连接服务器IP + 同步未提交开发
- miniprogram/config.js: BASE_URL 指向 http://192.227.237.8:3001
- 动作标题中文化(nameZh),搜索匹配 name/nameZh/nameEn
- 新增计划/收藏/我的 等页面与组件
- 后端 Docker 化(Dockerfile/.dockerignore)与翻译脚本
- .gitignore 补充 .DS_Store
2026-07-22 14:05:30 +08:00

61 lines
4.3 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.

# FITCOACH 健身动作推荐小程序系统 — 交付总览
基于 GitHub `hasaneyldrm/exercises-dataset`**1324 条动作**,含中英文动作说明与分步指引)构建的完整体育健身小程序系统,包含 **NestJS 后端代理/数据层** + **微信小程序前端**
## 系统架构
```
fitness-coach/
├── backend/ NestJS 10 后端(唯一数据源 + API 代理层)
│ ├── src/exercises/ 查询 / 多维筛选 / 智能推荐 / 官方训练组合(含 level 分级)
│ ├── src/common/ store(文件持久化) / token / auth.guard / current-user
│ ├── src/auth users favorites plans 用户体系四模块
│ ├── data/store/ 运行时用户数据users / favorites / plans *.json
│ └── scripts/ ensure-data / copy-data / sync-media
└── miniprogram/ 微信小程序前端(深色金质「高端大气」设计)
├── pages/ index / recommend / category / detail / collection / collection-detail
│ / search / profile(我的) / favorites(收藏动作) / my-plans(我的计划)
│ / plan-edit / plan-detail / plan-favorites(收藏计划)
├── components/ exercise-card / chip / navbar / bottom-nav / section-header / level-tag / avatar / plan-card
├── services/ exercise / user / favorite / plan
└── utils/ request(Bearer+401自动重登) / auth(登录态) / format
```
## 核心功能实现
| 需求 | 实现 |
|------|------|
| 动作分类体系(多维) | 5 个分类元数据接口:部位(10) / 器械(28) / 目标肌肉(19) / 肌群 / 类型(力量·有氧·柔韧) |
| 按器械筛选 | `GET /api/exercises?equipment=dumbbell` + 前端器械 chip 筛选 |
| 按肌肉群筛选 | `GET /api/exercises?bodyPart=chest` + `?target=biceps` |
| **核心推荐** | `GET /api/recommend?target=biceps&equipment=barbell` — 评分排序(主训+100 / 协同+40 / 器械匹配+30+ 中文推荐理由 |
| 发散功能 | 8 个智能训练组合 + 7 个按水平分级的官方推荐计划(新手七天/新手燃脂/进阶增肌/进阶力量/高级竞技/舒展放松/女子塑形)、搜索、统计、按类型筛选 |
| 优雅首页 | 渐变 hero + 问候 + 智能推荐 CTA + 2×3 快捷入口 + 精选动作轮播 + 官方计划分级入口 + 按部位浏览 + 热门器械 |
| 用户体系 | 微信登录(开发降级模式)+ 个人中心 + 收藏动作 + 我的计划(组建/编辑/导入官方计划)+ 收藏官方计划,数据文件持久化 |
| 数据来源 | 数据集导入后端内存,统一经 NestJS 对外提供(含 GIF 演示CDN 直链) |
## 已验证curl 全通过)
- 列表分页与多维筛选、分类元数据target 含 `bodyPart` 分组)、详情(含中文步骤)
- 推荐逻辑修复后 **total 一致**(装备仅作加分排序,不再虚增无关动作)
- **用户体系**:登录(开发降级返回虚拟 openid→ 个人资料读写 → 动作收藏增删查与状态 → 我的计划 CRUD / 增删动作 / 从官方计划一键导入 → 官方计划按 4 级分组下发(共 15 个计划)→ 收藏官方计划401 未登录拦截、用户数据隔离均正确
- 错误码:坏 id → 404recommend 缺 target → 400未登录访问受保护接口 → 401
- 前端 30 个 JS 文件 `node --check` 语法全部通过;所有页面 `usingComponents` 与实际使用的组件一致
## 运行方式
```bash
# 后端
cd fitness-coach/backend
npm install # 弱网下用 --prefer-offline本机有 3.1G npm 缓存,秒装)
npm run build
PORT=3000 node dist/main.js # http://localhost:3000
# 小程序
微信开发者工具「导入项目」选择 fitness-coach/miniprogram/
appid 已设为 touristappidurlCheck:false免账号即可预览
```
> 生产发布需:① `config.js` 的 BASE_URL 改为 HTTPS 域名;② 在小程序后台配置 request/downloadFile 合法域名(媒体默认用 `cdn.jsdelivr.net`,建议换自有 CDN
## 备注
- 媒体GIF/图)默认经 jsDelivr CDN 直链加载,无需本地下载;亦可改 `MEDIA_BASE_URL` 指向自有 CDN 后执行 `npm run sync:media` 同步到 `backend/media/`
- 单文件 JSON 数据集在内存中查询,接口响应快;小程序侧仅取轻量 summary保证首屏性能。