95 lines
4.2 KiB
Markdown
95 lines
4.2 KiB
Markdown
# my-profile 页面数据来源排查
|
||
|
||
> 排查日期:2026-03-18
|
||
> 页面路径:pages/my-profile/my-profile
|
||
|
||
## 概览
|
||
|
||
| 分类 | 数量 | 说明 |
|
||
|------|------|------|
|
||
| Mock 数据 | 1 | `mockUserProfile` — 用户信息全量 mock |
|
||
| 硬编码数据 | 5 | 路由映射、弹窗文案、菜单 key 等 |
|
||
| 已对接 API | 0 | ⚠️ 无任何 API 调用 |
|
||
| 前端计算/派生 | 1 | TabBar 选中态同步 |
|
||
| 路由参数 | 0 | 无 |
|
||
| WXML 硬编码文案 | 5 | 菜单文字、弹窗文案 |
|
||
|
||
## 一、Mock 数据
|
||
|
||
### 1.1 `mockUserProfile`(🔴 高风险 — 页面核心数据全量 mock)
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| 来源文件 | `utils/mock-data.ts` |
|
||
| 导入方式 | `import { mockUserProfile } from '../../utils/mock-data'` |
|
||
| 赋值位置 | `data.userInfo = mockUserProfile`(页面初始化) |
|
||
| 类型定义 | `UserProfile { name, avatar, role, storeName }` |
|
||
|
||
**Mock 值:**
|
||
|
||
| 字段 | Mock 值 | 联调后应来自 |
|
||
|------|---------|-------------|
|
||
| `name` | `'小燕'` | API — 用户昵称 |
|
||
| `avatar` | `'/assets/images/avatar-coach.png'` | API — 用户头像 URL |
|
||
| `role` | `'助教'` | API — 用户角色 |
|
||
| `storeName` | `'朗朗桌球'` | API — 所属门店名称 |
|
||
|
||
**影响范围:** 用户信息卡片区域(头像、姓名、角色标签、门店名)全部依赖此 mock。
|
||
|
||
## 二、硬编码数据
|
||
|
||
| # | 文件 | 位置 | 内容 | 风险等级 | 说明 |
|
||
|---|------|------|------|----------|------|
|
||
| 1 | `router.ts` | MENU_ROUTE_MAP | `'chat-history'` → `'/pages/chat-history/chat-history'` | 🟢 低 | 菜单路由映射 |
|
||
| 2 | `router.ts` | MENU_ROUTE_MAP | `'notes'` → `'/pages/notes/notes'` | 🟢 低 | 菜单路由映射 |
|
||
| 3 | `router.ts` | MENU_ROUTE_MAP | `'settings'` → `''`(空字符串) | 🟡 中 | 设置页未实现,点击无响应 |
|
||
| 4 | `.ts` | `onLogout()` | `title: '确认退出'`, `content: '确认退出当前账号吗?'` | 🟢 低 | 弹窗文案 |
|
||
| 5 | `.ts` | `onLogout()` | `confirmColor: '#e34d59'` | 🟢 低 | 确认按钮颜色 |
|
||
| 6 | `.ts` | `onLogout()` | `url: '/pages/login/login'` | 🟢 低 | 退出后跳转路径 |
|
||
|
||
## 三、已对接 API
|
||
|
||
⚠️ **无。** 本页面当前未调用任何 API。
|
||
|
||
代码中有两处 TODO 注释明确标注:
|
||
- `.ts` L4: `// TODO: 联调时替换为真实 API 获取用户信息`
|
||
- `.ts` L11: `// TODO: 联调时在此刷新用户信息`
|
||
|
||
**预期对接 API:**
|
||
|
||
| 端点(推测) | 用途 | 替换目标 |
|
||
|--------------|------|----------|
|
||
| `GET /api/xcx/me` 或专用 profile 接口 | 获取当前用户信息 | `mockUserProfile` |
|
||
|
||
## 四、前端计算/派生数据
|
||
|
||
| # | 数据 | 来源 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | TabBar `active: 'my'` | `this.getTabBar().setData()` | `onShow` 时同步 custom-tab-bar 选中态 |
|
||
| 2 | `route` | `getMenuRoute(key)` 纯函数 | 从 `MENU_ROUTE_MAP` 查找菜单 key 对应的页面路径 |
|
||
|
||
## 五、路由参数
|
||
|
||
无。本页面为 TabBar 页面,不接收路由参数。
|
||
|
||
## 六、WXML 硬编码文案
|
||
|
||
| # | 内容 | 位置 | 建议 |
|
||
|---|------|------|------|
|
||
| 1 | `"备注记录"` | menu-text | 可保留 |
|
||
| 2 | `"助手对话记录"` | menu-text | 可保留 |
|
||
| 3 | `"退出账号"` | menu-text | 可保留 |
|
||
| 4 | 菜单图标路径 `/assets/icons/menu-notes.svg` 等 | menu-icon image src | 🟢 低,静态资源 |
|
||
| 5 | `visible="{{true}}"` | ai-float-button | 🟢 低,控制 AI 按钮显示 |
|
||
|
||
## 七、联调 TODO
|
||
|
||
| # | 优先级 | 事项 | 当前状态 | 说明 |
|
||
|---|--------|------|----------|------|
|
||
| 1 | 🔴 P0 | 替换 `mockUserProfile` 为真实 API 数据 | 未开始 | 页面核心数据全量 mock,需对接用户信息接口 |
|
||
| 2 | 🟡 P1 | `onShow` 中添加 API 刷新逻辑 | 未开始 | 确保每次进入页面获取最新用户信息 |
|
||
| 3 | 🟡 P1 | 确认用户信息接口字段映射 | 未开始 | `name`/`avatar`/`role`/`storeName` 需与后端字段对齐 |
|
||
| 4 | 🟢 P2 | 移除 `mock-data.ts` 中 `mockUserProfile` 的导入 | 未开始 | API 对接完成后清理 |
|
||
|
||
**结论:** my-profile 页面当前处于纯 mock 状态,用户信息卡片(姓名、头像、角色、门店)全部来自硬编码 mock 数据,是联调优先级最高的待办项。菜单跳转和退出登录逻辑已实现,无需额外对接。
|