560 lines
16 KiB
Markdown
560 lines
16 KiB
Markdown
|
|
---
|
|||
|
|
name: Tool Module Test Plan
|
|||
|
|
overview: Create a comprehensive frontend functional test plan for the WeChat mini-program tool module, covering the hub page (tool_main/index.vue) and all 18 sub-pages under pages/tool/.
|
|||
|
|
todos:
|
|||
|
|
- id: test-hub
|
|||
|
|
content: "测试 Tool 首页 (tool_main/index.vue): 数据加载、四宫格导航、推荐内容、登录态"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-calculator
|
|||
|
|
content: "测试食谱计算器流程: calculator.vue 表单校验提交 -> calculator-result.vue 结果展示与采纳"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-ai
|
|||
|
|
content: "测试 AI 营养师: 文字对话、语音输入(ASR)、图片发送、Coze API 集成"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-checkin
|
|||
|
|
content: "测试打卡流程: checkin.vue 积分/连续打卡 -> checkin-publish.vue 发布 -> checkin-detail.vue 详情 -> dietary-records.vue 列表 -> checkin-copy.vue 借鉴"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-food
|
|||
|
|
content: "测试食物百科: food-encyclopedia.vue 搜索/分类/列表 -> food-detail.vue 详情"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-knowledge
|
|||
|
|
content: "测试营养知识: nutrition-knowledge.vue Tab切换/列表 -> nutrient-detail.vue 详情"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-community
|
|||
|
|
content: "测试社区帖子: post-detail.vue 展示/点赞/收藏/评论/关注"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-profile
|
|||
|
|
content: "测试用户与积分: my-profile.vue / points-rules.vue / invite-rewards.vue / welcome-gift.vue"
|
|||
|
|
status: completed
|
|||
|
|
- id: test-common
|
|||
|
|
content: "通用测试: 登录态、网络异常、UI多机型适配、性能、页面标题与返回"
|
|||
|
|
status: completed
|
|||
|
|
isProject: false
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Tool 模块前端功能测试计划
|
|||
|
|
|
|||
|
|
## 一、测试范围
|
|||
|
|
|
|||
|
|
本测试计划覆盖微信小程序 Tool 模块的全部 19 个页面:
|
|||
|
|
|
|||
|
|
- **入口首页**: [pages/tool_main/index.vue](msh_single_uniapp/pages/tool_main/index.vue)
|
|||
|
|
- **子页面 (18个)**: [pages/tool/](msh_single_uniapp/pages/tool/) 目录下全部 `.vue` 文件
|
|||
|
|
|
|||
|
|
### 页面与路由清单
|
|||
|
|
|
|||
|
|
|
|||
|
|
| 页面文件 | 路由路径 | 页面标题 | 分类 |
|
|||
|
|
| ---- | ---- | ---- | --- |
|
|||
|
|
|
|||
|
|
|
|||
|
|
> 注意:Markdown 表格不便渲染,以列表替代:
|
|||
|
|
|
|||
|
|
**食谱计算器**
|
|||
|
|
|
|||
|
|
- `calculator.vue` -> `/pages/tool/calculator` (食谱计算器)
|
|||
|
|
- `calculator-result.vue` -> `/pages/tool/calculator-result` (营养计算结果)
|
|||
|
|
|
|||
|
|
**AI 营养师**
|
|||
|
|
|
|||
|
|
- `ai-nutritionist.vue` -> `/pages/tool/ai-nutritionist` (AI营养师)
|
|||
|
|
|
|||
|
|
**食物百科**
|
|||
|
|
|
|||
|
|
- `food-encyclopedia.vue` -> `/pages/tool/food-encyclopedia` (食物百科)
|
|||
|
|
- `food-detail.vue` -> `/pages/tool/food-detail` (食物详情)
|
|||
|
|
|
|||
|
|
**营养知识**
|
|||
|
|
|
|||
|
|
- `nutrition-knowledge.vue` -> `/pages/tool/nutrition-knowledge` (营养知识)
|
|||
|
|
- `nutrient-detail.vue` -> `/pages/tool/nutrient-detail` (营养素详情)
|
|||
|
|
|
|||
|
|
**饮食打卡**
|
|||
|
|
|
|||
|
|
- `checkin.vue` -> `/pages/tool/checkin` (打卡)
|
|||
|
|
- `checkin-publish.vue` -> `/pages/tool/checkin-publish` (饮食打卡)
|
|||
|
|
- `checkin-detail.vue` -> `/pages/tool/checkin-detail` (打卡详情)
|
|||
|
|
- `checkin-copy.vue` -> `/pages/tool/checkin-copy` (一键借鉴打卡)
|
|||
|
|
- `dietary-records.vue` -> `/pages/tool/dietary-records` (饮食记录)
|
|||
|
|
|
|||
|
|
**社区帖子**
|
|||
|
|
|
|||
|
|
- `post-detail.vue` -> `/pages/tool/post-detail` (帖子详情)
|
|||
|
|
|
|||
|
|
**食谱**
|
|||
|
|
|
|||
|
|
- `recipe-detail.vue` -> `/pages/tool/recipe-detail` (食谱详情)
|
|||
|
|
|
|||
|
|
**用户与积分**
|
|||
|
|
|
|||
|
|
- `my-profile.vue` -> `/pages/tool/my-profile` (我的)
|
|||
|
|
- `points-rules.vue` -> `/pages/tool/points-rules` (积分规则)
|
|||
|
|
- `invite-rewards.vue` -> `/pages/tool/invite-rewards` (邀请有礼)
|
|||
|
|
- `welcome-gift.vue` -> `/pages/tool/welcome-gift` (会员福利)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、测试环境与前置条件
|
|||
|
|
|
|||
|
|
- 测试平台:微信开发者工具 + 真机(iOS / Android)
|
|||
|
|
- 网络环境:WiFi 正常网络 + 弱网 (3G) + 断网
|
|||
|
|
- 账号准备:已登录账号 / 未登录访客
|
|||
|
|
- 后端接口:已部署测试环境 API(`tool/*` 全部接口可用)
|
|||
|
|
- 测试数据:至少 1 条已有计算结果、1 条打卡记录、1 条社区帖子
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、功能测试用例
|
|||
|
|
|
|||
|
|
### 3.1 Tool 首页 (tool_main/index.vue)
|
|||
|
|
|
|||
|
|
**页面加载**
|
|||
|
|
|
|||
|
|
- 页面打开后,并发调用 `getRecommendedRecipes`、`getRecommendedKnowledge`、`getUserHealthStatus` 三个接口,数据正常展示
|
|||
|
|
- 接口返回失败时(单个/全部),页面不白屏,其他模块正常展示
|
|||
|
|
- 弱网环境下 loading 状态正常
|
|||
|
|
|
|||
|
|
**用户信息区域**
|
|||
|
|
|
|||
|
|
- 已登录:显示用户头像、昵称、健康档案状态
|
|||
|
|
- 未登录:显示"请点击登录",点击触发登录弹窗
|
|||
|
|
- 点击头像跳转到 `/pages/tool/my-profile`
|
|||
|
|
- 点击"打卡"按钮跳转到 `/pages/tool/checkin`
|
|||
|
|
|
|||
|
|
**四宫格工具入口**
|
|||
|
|
|
|||
|
|
- "食谱计算器" 跳转到 `/pages/tool/calculator`
|
|||
|
|
- "AI营养师" 跳转到 `/pages/tool/ai-nutritionist`
|
|||
|
|
- "食物百科" 跳转到 `/pages/tool/food-encyclopedia`
|
|||
|
|
- "营养知识" 跳转到 `/pages/tool/nutrition-knowledge`
|
|||
|
|
|
|||
|
|
**推荐食谱区域**
|
|||
|
|
|
|||
|
|
- 展示 2 条推荐食谱(封面图、标题)
|
|||
|
|
- 点击食谱卡片跳转 `/pages/tool/recipe-detail?id=xxx`
|
|||
|
|
- 点击"更多"显示 toast "食谱列表功能开发中"
|
|||
|
|
- 无数据时不展示该区域 / 展示空态
|
|||
|
|
|
|||
|
|
**健康知识区域**
|
|||
|
|
|
|||
|
|
- 展示 2 条推荐知识(标题、摘要)
|
|||
|
|
- 点击知识条目跳转 `/pages/tool/nutrition-knowledge?id=xxx`
|
|||
|
|
- 点击"更多"跳转 `/pages/tool/nutrition-knowledge`
|
|||
|
|
|
|||
|
|
**推广卡片**
|
|||
|
|
|
|||
|
|
- "慢生活营养专家" 卡片正常展示
|
|||
|
|
- 点击跳转 `/pages/tool/welcome-gift`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.2 食谱计算器 (calculator.vue)
|
|||
|
|
|
|||
|
|
**表单输入**
|
|||
|
|
|
|||
|
|
- 性别选择(男/女)单选正常
|
|||
|
|
- 年龄、身高、干体重、血肌酐输入框:只允许数字,限制合理范围
|
|||
|
|
- 透析状态切换(是/否),选"是"后透析类型选项出现
|
|||
|
|
- 透析类型(血液透析/腹膜透析)单选正常
|
|||
|
|
- 所有必填项为空时,点击"开始计算"给出校验提示
|
|||
|
|
|
|||
|
|
**计算提交**
|
|||
|
|
|
|||
|
|
- 填写完整后点击"开始计算",调用 `calculateNutrition` 接口(`POST tool/calculator/calculate`)
|
|||
|
|
- 接口返回成功后跳转到 `/pages/tool/calculator-result?id=xxx`
|
|||
|
|
- 接口返回失败时 toast 提示错误信息
|
|||
|
|
- 重复点击防抖(按钮 loading 状态)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.3 营养计算结果 (calculator-result.vue)
|
|||
|
|
|
|||
|
|
**页面加载**
|
|||
|
|
|
|||
|
|
- 携带 `id` 参数进入,调用 `getCalculatorResult(id)` 获取数据
|
|||
|
|
- Loading 状态展示正常
|
|||
|
|
- 无结果 / id 无效时展示 error 状态
|
|||
|
|
|
|||
|
|
**健康概览 Tab**
|
|||
|
|
|
|||
|
|
- 展示 eGFR 值、体重、BMI、CKD 分期数据卡片
|
|||
|
|
- 营养目标(蛋白质、热量、钠、钾、磷等)正确展示
|
|||
|
|
- 食物份量列表正确展示
|
|||
|
|
|
|||
|
|
**膳食计划 Tab**
|
|||
|
|
|
|||
|
|
- Tab 切换正常(健康概览 / 膳食计划)
|
|||
|
|
- 早餐、午餐、晚餐 三餐方案展示正确
|
|||
|
|
- 每餐菜品名称、份量、图片展示
|
|||
|
|
- 菜品图片加载(含 AI 生成图片、OSS 压缩图片)正常
|
|||
|
|
- 温馨提示区域展示
|
|||
|
|
|
|||
|
|
**操作按钮**
|
|||
|
|
|
|||
|
|
- "采纳方案" 按钮调用 `adoptNutritionPlan(resultId)`(`POST tool/calculator/adopt`)
|
|||
|
|
- 采纳成功后提示并更新状态
|
|||
|
|
- "联系营养师" 按钮跳转 AI 营养师或显示联系方式
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.4 AI 营养师 (ai-nutritionist.vue)
|
|||
|
|
|
|||
|
|
**对话界面**
|
|||
|
|
|
|||
|
|
- 页面打开后展示推广 banner
|
|||
|
|
- 快捷问题列表展示,点击快捷问题自动发送
|
|||
|
|
- 消息列表(scroll-view)正常滚动,新消息自动滚到底部
|
|||
|
|
|
|||
|
|
**文字对话**
|
|||
|
|
|
|||
|
|
- 输入文字后点击发送按钮,消息气泡出现(用户侧)
|
|||
|
|
- AI 回复消息气泡出现(AI 侧),打字指示器展示
|
|||
|
|
- 使用 Coze API 流程:`cozeChat` -> `cozeRetrieveChat` -> `cozeMessageList`
|
|||
|
|
- 空消息不允许发送
|
|||
|
|
|
|||
|
|
**语音输入**
|
|||
|
|
|
|||
|
|
- 点击麦克风按钮开始录音
|
|||
|
|
- 录音完成后上传语音 (`uploadFile`) 并调用 ASR (`createAsrTask` -> `queryAsrStatus`)
|
|||
|
|
- 语音识别结果转为文字并发送
|
|||
|
|
- 录音授权拒绝时提示用户
|
|||
|
|
|
|||
|
|
**图片发送**
|
|||
|
|
|
|||
|
|
- 点击相机按钮选择/拍照图片
|
|||
|
|
- 图片上传后通过 Coze 接口发送给 AI
|
|||
|
|
- 图片预览功能正常
|
|||
|
|
|
|||
|
|
**异常处理**
|
|||
|
|
|
|||
|
|
- 网络断开时发送消息提示网络错误
|
|||
|
|
- AI 回复超时处理
|
|||
|
|
- 会话 ID 管理正常(多次对话保持上下文)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.5 食物百科 (food-encyclopedia.vue)
|
|||
|
|
|
|||
|
|
- 页面加载调用 `getFoodList` 接口,展示食物列表
|
|||
|
|
- 顶部搜索框输入关键词,调用 `searchFood` 接口
|
|||
|
|
- 搜索防抖正常(不会每个字符触发请求)
|
|||
|
|
- 横向分类滑动切换(全部/谷物/蔬菜/水果/肉类/海鲜)
|
|||
|
|
- 切换分类后列表刷新
|
|||
|
|
- 食物卡片展示:图片、名称、安全标签、营养信息
|
|||
|
|
- 点击食物卡片跳转 `/pages/tool/food-detail`
|
|||
|
|
- 列表分页加载(上拉加载更多)
|
|||
|
|
- 空搜索结果展示空态
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.6 食物详情 (food-detail.vue)
|
|||
|
|
|
|||
|
|
- 页面加载展示食物图片、分类、安全标签
|
|||
|
|
- 关键营养素宫格展示
|
|||
|
|
- 营养成分表完整展示
|
|||
|
|
- "相似食物" 按钮功能
|
|||
|
|
- 分享按钮功能正常
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.7 营养知识 (nutrition-knowledge.vue)
|
|||
|
|
|
|||
|
|
- Tab 切换:营养素 / 饮食指导 / 文章
|
|||
|
|
- 各 Tab 调用 `getKnowledgeList` 接口(type 参数不同)
|
|||
|
|
- 营养素列表展示,点击跳转 `/pages/tool/nutrient-detail`
|
|||
|
|
- 饮食指导列表展示
|
|||
|
|
- 文章列表展示
|
|||
|
|
- 列表分页(上拉加载更多)
|
|||
|
|
- 携带 `id` 参数进入时自动定位到对应内容
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.8 营养素详情 (nutrient-detail.vue)
|
|||
|
|
|
|||
|
|
- 页面通过本地营养素数据 map 渲染
|
|||
|
|
- 展示:营养素头部信息、状态卡片、重要性、摄入建议、食物来源、风险提示、建议
|
|||
|
|
- 底部免责声明展示
|
|||
|
|
- 不存在的营养素名称进入时展示空态或提示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.9 打卡首页 (checkin.vue)
|
|||
|
|
|
|||
|
|
- 积分展示区域,调用 `getUserPoints` 接口
|
|||
|
|
- 7 日连续打卡圈展示,调用 `getCheckinStreak` 接口
|
|||
|
|
- "积分规则"按钮跳转 `/pages/tool/points-rules`
|
|||
|
|
- "立即打卡"按钮跳转 `/pages/tool/checkin-publish`
|
|||
|
|
- 任务列表展示,调用 `getCheckinTasks` 接口
|
|||
|
|
- 兑换列表展示
|
|||
|
|
- 底部提示 banner 展示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.10 饮食打卡发布 (checkin-publish.vue)
|
|||
|
|
|
|||
|
|
**图片上传**
|
|||
|
|
|
|||
|
|
- 点击添加照片,打开相册/相机
|
|||
|
|
- 最多上传 6 张图片
|
|||
|
|
- 图片预览和删除功能
|
|||
|
|
- 图片上传调用 `uploadFile` 接口
|
|||
|
|
|
|||
|
|
**餐次选择**
|
|||
|
|
|
|||
|
|
- 早餐/午餐/晚餐/加餐 选择器正常
|
|||
|
|
|
|||
|
|
**语音备注**
|
|||
|
|
|
|||
|
|
- 录音功能正常(同 AI 营养师)
|
|||
|
|
- 语音识别结果填入备注
|
|||
|
|
|
|||
|
|
**AI 功能开关**
|
|||
|
|
|
|||
|
|
- AI 视频生成开关切换
|
|||
|
|
- 开启后提交时调用 `createImageToVideoTask` 或 `createTextToVideoTask`
|
|||
|
|
|
|||
|
|
**提交**
|
|||
|
|
|
|||
|
|
- 点击"发布"调用 `submitCheckin` 接口(`POST tool/checkin/submit`)
|
|||
|
|
- 提交成功后跳转打卡详情或返回打卡首页
|
|||
|
|
- 无图片时提示必须上传
|
|||
|
|
- 防止重复提交
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.11 打卡详情 (checkin-detail.vue)
|
|||
|
|
|
|||
|
|
- 携带 `id` 参数进入,调用 `getCheckinDetail(id)`
|
|||
|
|
- 图片轮播(swiper)正常,底部图片计数器
|
|||
|
|
- 餐次标签展示
|
|||
|
|
- 作者信息、积分徽章展示
|
|||
|
|
- 描述文本展示
|
|||
|
|
- AI 营养分析卡片展示
|
|||
|
|
- "分享到社区"按钮功能
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.12 一键借鉴打卡 (checkin-copy.vue)
|
|||
|
|
|
|||
|
|
- 原始记录卡片展示
|
|||
|
|
- 照片网格选择(可勾选/取消勾选)
|
|||
|
|
- 备注文本编辑
|
|||
|
|
- AI 视频开关
|
|||
|
|
- 取消/确认按钮
|
|||
|
|
- 注意:当前 `loadOriginalRecord` 为 TODO,需确认数据来源是否已接通
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.13 饮食记录 (dietary-records.vue)
|
|||
|
|
|
|||
|
|
- 自定义导航栏展示(`navigationStyle: "custom"`)
|
|||
|
|
- Tab 切换:全部 / 早餐 / 午餐 / 晚餐
|
|||
|
|
- 调用 `getCheckinList` 接口,切换 Tab 传不同 `mealType`
|
|||
|
|
- 列表项展示:图片、餐次、备注、积分、AI 分析
|
|||
|
|
- 上拉加载更多
|
|||
|
|
- 空态展示(无记录时)
|
|||
|
|
- 下拉刷新
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.14 社区帖子详情 (post-detail.vue)
|
|||
|
|
|
|||
|
|
**内容展示**
|
|||
|
|
|
|||
|
|
- 调用 `getCommunityDetail(id)` 获取帖子
|
|||
|
|
- 图片轮播、餐次标签、标题、评分、描述、标签展示
|
|||
|
|
- 作者信息区、关注按钮
|
|||
|
|
- 营养统计数据展示
|
|||
|
|
- AI 评论展示
|
|||
|
|
|
|||
|
|
**互动功能**
|
|||
|
|
|
|||
|
|
- 点赞:调用 `toggleLike`,状态切换正常
|
|||
|
|
- 收藏:调用 `toggleCollect`,状态切换正常
|
|||
|
|
- 关注:调用 `toggleFollow`,状态切换正常
|
|||
|
|
- "一键借鉴打卡"按钮跳转 `/pages/tool/checkin-copy`
|
|||
|
|
|
|||
|
|
**评论功能**
|
|||
|
|
|
|||
|
|
- 调用 `getCommentList` 加载评论列表
|
|||
|
|
- 底部输入框发表评论,调用 `addComment`
|
|||
|
|
- 评论成功后列表刷新
|
|||
|
|
|
|||
|
|
**相关帖子**
|
|||
|
|
|
|||
|
|
- 调用 `getCommunityList` 展示相关帖子
|
|||
|
|
- 点击相关帖子跳转对应详情
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.15 食谱详情 (recipe-detail.vue)
|
|||
|
|
|
|||
|
|
- 封面图展示
|
|||
|
|
- 食谱信息(名称、难度徽章)展示
|
|||
|
|
- 营养团队卡片展示
|
|||
|
|
- 简介文本展示
|
|||
|
|
- 营养数据宫格展示
|
|||
|
|
- 膳食方案(早/午/晚)展示
|
|||
|
|
- 注意事项列表展示
|
|||
|
|
- 温馨提示展示
|
|||
|
|
- 底部操作栏:点赞、收藏、打卡按钮
|
|||
|
|
- 注意:当前 `loadRecipeData` 为 TODO,需确认数据加载是否已接通
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.16 我的 (my-profile.vue)
|
|||
|
|
|
|||
|
|
- 用户头像、昵称展示
|
|||
|
|
- 统计数据(打卡次数、积分、关注数)展示
|
|||
|
|
- "我的健康" 区域展示
|
|||
|
|
- "我的内容" 区域展示
|
|||
|
|
- "工具与服务" 区域展示
|
|||
|
|
- "设置" 区域展示
|
|||
|
|
- 退出登录按钮功能
|
|||
|
|
- 各导航项跳转正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.17 积分规则 (points-rules.vue)
|
|||
|
|
|
|||
|
|
- 页面为纯静态内容,scroll-view 滚动正常
|
|||
|
|
- 展示区域:赚取规则、使用方式、温馨提示、注意事项
|
|||
|
|
- 文字排版在不同机型上无溢出/截断
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.18 邀请有礼 (invite-rewards.vue)
|
|||
|
|
|
|||
|
|
- 邀请卡片展示
|
|||
|
|
- 奖励盒子列表展示
|
|||
|
|
- 邀请按钮功能(触发分享或复制链接)
|
|||
|
|
- 海报按钮功能
|
|||
|
|
- 权益说明列表展示
|
|||
|
|
- 邀请步骤展示
|
|||
|
|
- 注意:当前为静态占位数据,确认是否有接口接通
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3.19 会员福利 (welcome-gift.vue)
|
|||
|
|
|
|||
|
|
- 礼品 banner 展示
|
|||
|
|
- 礼品项列表展示
|
|||
|
|
- 二维码展示
|
|||
|
|
- 领取步骤说明
|
|||
|
|
- "添加微信" 按钮功能(复制微信号或打开二维码)
|
|||
|
|
- 免责声明展示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、通用测试项(每页必测)
|
|||
|
|
|
|||
|
|
### 4.1 页面基础
|
|||
|
|
|
|||
|
|
- 页面标题正确(与 pages.json 配置一致)
|
|||
|
|
- 返回按钮功能正常
|
|||
|
|
- 页面下拉不出现橡皮筋效果(或符合预期)
|
|||
|
|
|
|||
|
|
### 4.2 登录态
|
|||
|
|
|
|||
|
|
- 未登录访问需登录页面时,弹出登录引导
|
|||
|
|
- 登录后自动返回原页面并刷新数据
|
|||
|
|
|
|||
|
|
### 4.3 网络异常
|
|||
|
|
|
|||
|
|
- 断网时接口请求给出友好提示
|
|||
|
|
- 弱网环境下 loading 态不丢失
|
|||
|
|
- 恢复网络后可重试/刷新
|
|||
|
|
|
|||
|
|
### 4.4 UI 适配
|
|||
|
|
|
|||
|
|
- iPhone SE / iPhone 14 Pro Max / 小屏安卓 / 平板 屏幕适配
|
|||
|
|
- 安全区域(底部 Home Indicator)适配
|
|||
|
|
- 暗色模式适配(如支持)
|
|||
|
|
- 长文本不溢出、不截断
|
|||
|
|
|
|||
|
|
### 4.5 性能
|
|||
|
|
|
|||
|
|
- 页面首屏加载时间 < 2s
|
|||
|
|
- 列表页滚动流畅,无卡顿
|
|||
|
|
- 图片懒加载正常
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、关键 API 接口清单
|
|||
|
|
|
|||
|
|
以下接口在前端测试中需确认可用:
|
|||
|
|
|
|||
|
|
**首页**
|
|||
|
|
|
|||
|
|
- `GET tool/home/recipes`
|
|||
|
|
- `GET tool/home/knowledge`
|
|||
|
|
- `GET tool/home/health-status`
|
|||
|
|
|
|||
|
|
**食谱计算器**
|
|||
|
|
|
|||
|
|
- `POST tool/calculator/calculate`
|
|||
|
|
- `GET tool/calculator/result/{id}`
|
|||
|
|
- `POST tool/calculator/adopt`
|
|||
|
|
|
|||
|
|
**AI 营养师** (通过 models-api.js)
|
|||
|
|
|
|||
|
|
- Coze 系列接口 (cozeChat / cozeRetrieveChat / cozeMessageList)
|
|||
|
|
- ASR 接口 (createAsrTask / queryAsrStatus)
|
|||
|
|
- 文件上传 (uploadFile)
|
|||
|
|
|
|||
|
|
**打卡**
|
|||
|
|
|
|||
|
|
- `POST tool/checkin/submit`
|
|||
|
|
- `GET tool/checkin/list`
|
|||
|
|
- `GET tool/checkin/detail/{id}`
|
|||
|
|
- `GET tool/checkin/streak`
|
|||
|
|
- `GET tool/checkin/tasks`
|
|||
|
|
- `POST tool/checkin/copy`
|
|||
|
|
- `POST tool/checkin/learn`
|
|||
|
|
|
|||
|
|
**食物百科**
|
|||
|
|
|
|||
|
|
- `GET tool/food/search`
|
|||
|
|
- `GET tool/food/list`
|
|||
|
|
- `GET tool/food/detail/{id}`
|
|||
|
|
- `GET tool/food/similar/{id}`
|
|||
|
|
|
|||
|
|
**营养知识**
|
|||
|
|
|
|||
|
|
- `GET tool/knowledge/list`
|
|||
|
|
- `GET tool/knowledge/detail/{id}`
|
|||
|
|
- `GET tool/knowledge/nutrient/{name}`
|
|||
|
|
|
|||
|
|
**社区**
|
|||
|
|
|
|||
|
|
- `GET tool/community/detail/{id}`
|
|||
|
|
- `GET tool/community/list`
|
|||
|
|
- `POST tool/community/like`
|
|||
|
|
- `POST tool/community/collect`
|
|||
|
|
- `POST tool/community/follow`
|
|||
|
|
- `POST tool/community/comment`
|
|||
|
|
- `GET tool/community/comment/list/{postId}`
|
|||
|
|
|
|||
|
|
**积分**
|
|||
|
|
|
|||
|
|
- `GET tool/points/info`
|
|||
|
|
- `GET tool/points/rules`
|
|||
|
|
|
|||
|
|
**文件上传**
|
|||
|
|
|
|||
|
|
- `POST tool/upload/image`
|
|||
|
|
- `POST tool/upload/voice`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、已知待完善项
|
|||
|
|
|
|||
|
|
以下页面有 TODO/未接通功能,测试时需标注为"受限测试":
|
|||
|
|
|
|||
|
|
- `checkin-copy.vue`: `loadOriginalRecord` 为 TODO,数据加载待实现
|
|||
|
|
- `food-detail.vue`: `loadFoodData` 为空实现,静态数据
|
|||
|
|
- `recipe-detail.vue`: `loadRecipeData` 为 TODO,静态数据
|
|||
|
|
- `tool_main/index.vue`: "食谱列表" 入口仅 toast 提示开发中
|
|||
|
|
- `invite-rewards.vue`: 邀请统计为静态占位数据
|
|||
|
|
|