# FITCOACH 微信小程序(前端) 高端暗金风格(dark luxe)的健身动作推荐小程序。所有数据来自 NestJS 后端 API。 ## 设计系统 设计令牌定义在 `app.wxss` 的 `page` 选择器(CSS 变量): - 背景 `#0E1110`、表面 `#171C19`、金 `#D9B36C`、次强调 `#58C9B9` - 圆角 `--radius:28rpx`、发丝分隔线 `--line`、阴影 `--shadow` - 图标统一使用 **emoji + CSS 渐变**(不依赖二进制图片资源) ## 配置 打开 `config.js`: ```js module.exports = { BASE_URL: 'http://localhost:3000' }; ``` - 本地调试:填写电脑局域网 IP,如 `http://192.168.1.10:3000` - 真机/发布:**必须**改为 HTTPS 且已在小程序后台配置为 request 合法域名 ## 运行 1. 微信开发者工具 → 导入项目 → 选择本目录(AppID 可用测试号) 2. 本地调试可在「详情 → 本地设置」勾选「不校验合法域名、TLS 版本以及 HTTPS 证书」 3. 编译预览 ## 页面 | 页面 | 文件 | 说明 | |------|------|------| | 首页 | `pages/index` | Hero + 快捷入口 + 精选轮播 + 官方计划分级入口 + 按部位/器械浏览 | | 分类浏览 | `pages/category` | 按 dimension(bodyPart/equipment/target/type/muscleGroup) 筛选列表 | | 智能推荐 | `pages/recommend` | 选目标肌群(按部位分组)+ 可选器械 → 评分排序结果 | | 动作详情 | `pages/detail` | GIF + 中文步骤 + 主要/协同肌群 + 收藏按钮 + 加入计划 + 相关推荐 + 分享 | | 官方计划 | `pages/collection` | 按水平分级(新手/进阶/高级/全阶段)的官方推荐计划列表 | | 计划详情 | `pages/collection-detail` | 官方计划动作列表 + 收藏/一键导入我的计划 | | 搜索 | `pages/search` | 模糊搜索;`mode=select` 时用于向计划添加动作 | | **我的** | `pages/profile` | 个人中心:登录态、资料编辑、收藏/计划统计、菜单入口 | | **收藏动作** | `pages/favorites` | 我收藏的动作,可管理移除 | | **我的计划** | `pages/my-plans` | 计划列表,新建/进入 | | **编辑计划** | `pages/plan-edit` | 新建/编辑计划(名称/描述/图标/主题色) | | **计划详情** | `pages/plan-detail` | 我的计划动作管理(增删/编辑/删除) | | **收藏计划** | `pages/plan-favorites` | 我收藏的官方计划 | ## 用户体系 - **登录**:`utils/auth.js` 封装 `wx.login → POST /api/auth/login`;后端未配 `WX_APPID` 时走开发降级(任意 code 建号)。登录态存于 `wx.storage`(`access_token`/`openid`/`user_profile`)。 - **自动重登**:`utils/request.js` 在收到 401 时调用注册的 `unauthorizedHandler` 重新登录并重试一次原请求,页面无需感知。 - **个人中心** `pages/profile`:未登录显示登录卡片;已登录显示头像/昵称/统计/菜单,支持改昵称与 emoji 头像、退出登录。 - **收藏**:动作收藏(详情页心形)、官方计划收藏(计划详情页)。 - **计划**:可新建/编辑计划、向计划添加或移除动作(搜索页 `select` 模式)、从官方计划一键导入为个人副本。 ## 组件 `exercise-card`(动作卡)、`section-header`(分区标题)、`chip`(筛选标签)、 `navbar`(自定义导航栏,处理状态栏高度)、`bottom-nav`(底部导航:首页/分类/我的)、 `level-tag`(难度等级标签)、`avatar`(emoji 头像)、`plan-card`(计划卡)。 ## 接口映射 - `services/exercise.js`:列表/详情/分类/推荐/官方计划/搜索/统计。 - `services/user.js`、`services/favorite.js`、`services/plan.js`:用户资料、收藏、计划,字段与后端响应一一对应。 ## 注意事项 - 小程序 `` 支持 GIF,动作演示直接使用 `gifUrl`。 - 所有请求经 `utils/request.js` 单点封装,自动带 `Authorization` 头、失败统一 toast。 - 包体保持精简:主包仅含页面与组件,无大体积本地资源。