Files
Neo-ZQYY/docs/miniprogram-dev/api-audit/my-profile.md

95 lines
4.2 KiB
Markdown
Raw 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.
# 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 数据,是联调优先级最高的待办项。菜单跳转和退出登录逻辑已实现,无需额外对接。