Files
msh-system/docs/开发任务完成报告_2026-03-25.md
Developer ba08abd374 fix: 修复6项测试问题并补全配套资源
- 修复油脂类食物推荐量系数 (5.7→2.5) [ToolCalculatorServiceImpl]
- AI营养师接入真实Coze API,替换Mock回复 [ToolAiNutritionistServiceImpl]
- 食物百科详情新增钙/铁/维C/嘌呤/重量基准字段返回 [ToolFoodServiceImpl]
- V2Food模型新增purine、servingSize字段 [V2Food.java]
- 食物百科详情页动态重量标注+新增4项营养展示+替换Figma URL [food-detail.vue]
- 修复营养素列表dataset传参Bug(WeChat camelCase) [nutrition-knowledge.vue]
- 营养素详情页接入后端API+兜底本地数据+替换Figma URL [nutrient-detail.vue]
- 新增数据库迁移脚本及参考初始化数据 [docs/sql/]
- 新增前端占位图标5个 [static/images/]
- 新增开发任务完成报告 [docs/]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 14:18:00 +08:00

95 lines
5.0 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.
# 开发任务完成报告 2026-03-25
## 任务总览
| 任务 | 状态 | 说明 |
|------|------|------|
| 任务 0数据库表结构变更 | ✅ 完成 | V2Food.java 新增 purine、servingSize 字段 |
| 任务 1油脂系数 Bug 修复 | ✅ 完成 | 油脂类系数 5.7 → 2.5 |
| 任务 2AI 营养师接入 Coze API | ✅ 完成 | 替换 Mock 回复为 Coze API 调用 |
| 任务 3食物百科详情字段补全 | ✅ 完成 | 新增钙、铁、维生素C、嘌呤、重量基准 |
| 任务 4食物百科详情页前端修复 | ✅ 完成 | 动态重量标注 + Figma URL 替换 + 营养成分扩展 |
| 任务 5营养素列表传参 Bug 修复 | ✅ 完成 | dataset 传参改为直接传参 |
| 任务 6营养素详情页接入后端 API | ✅ 完成 | 优先 API、本地 map 兜底 + Figma URL 替换 |
---
## 详细修改记录
### 任务 0数据库表结构变更
**文件:** `msh_crmeb_22/crmeb-common/src/main/java/com/zbkj/common/model/tool/V2Food.java`
- 在 vitaminC 字段后(约第 70 行)新增:
- `purine` (BigDecimal):嘌呤含量(mg),对应数据库字段 `purine`
- `servingSize` (String):营养成分重量基准,对应数据库字段 `serving_size`
- 类已使用 `@Data` 注解Lombok无需手动添加 getter/setter
### 任务 1油脂系数 Bug 修复
**文件:** `msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolCalculatorServiceImpl.java`
- 第 516 行:`round(5.7 * energyRatio)``round(2.5 * energyRatio)`
- 验证:文件中仅第 510 行谷薯类保留 `5.7` 系数,油脂类已改为 `2.5`
### 任务 2AI 营养师接入 Coze API
**文件:** `msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolAiNutritionistServiceImpl.java`
- 新增注入:`ToolCozeService toolCozeService`
- 新增 import`ToolCozeService``CozeChatRequest``CozeBaseResponse`
- `sendMessage()` 方法中:
- 移除 Mock 回复 `"这是一个模拟的AI回复。"`
- 替换为 `toolCozeService.chat(cozeRequest)` 调用
- Bot ID: `7591133240535449654`
- 添加 try-catch 异常处理,失败时设置 `aiResponseStatus("failed")`
### 任务 3食物百科详情字段补全
**文件:** `msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolFoodServiceImpl.java`
- `getDetail()` 方法中(约第 121 行后)新增 5 个字段返回:
- `calcium``iron``vitaminC``purine``servingSize`
### 任务 4食物百科详情页前端修复
**文件:** `msh_single_uniapp/pages/tool/food-detail.vue`
- **修复点 A** 两处 `"每100g"` 硬编码替换为 `{{ foodData.servingSize || '每100g' }}`
- **修复点 B** `parseNutritionTable` 中新增铁 (iron) 和维生素C (vitaminC) 营养项;`parseKeyNutrients``parseNutritionTable` 的 nutrients 来源改为兼容平铺字段 (`data.nutrients || data.nutritionData || data`)
- **修复点 C** 3 处 Figma 临时 URL 替换为本地占位图路径(`/static/images/icon-share.png``/static/images/icon-search.png`、空字符串)
### 任务 5营养素列表传参 Bug 修复
**文件:** `msh_single_uniapp/pages/tool/nutrition-knowledge.vue`
- 第 39 行:`@click="goToNutrientDetail" :data-nutrient-index="index"``@click="goToNutrientDetail(index)"`
- `goToNutrientDetail` 方法:参数从 `event` 改为直接接收 `index`,移除 `event.currentTarget.dataset.nutrientIndex` 取值逻辑
### 任务 6营养素详情页接入后端 API
**文件:** `msh_single_uniapp/pages/tool/nutrient-detail.vue`
- **修复点 A** `nutrientData` 默认值从硬编码的"钠"数据改为空对象 `{}`
- **修复点 B** `loadNutrientData()` 方法改为 async优先调用 `getNutrientDetail(name)` API失败时使用本地 `nutrientMap` 兜底
- **修复点 C** 3 处 Figma 临时图片 URL 替换为本地占位图路径
---
## 遇到的问题及处理方式
1. **ToolCozeService 接口设计**`chat()` 方法接收 `CozeChatRequest` 对象而非简单的 `(botId, message, userId)` 参数。处理方式:构造完整的 `CozeChatRequest` 对象,设置 `botId``userId``additionalMessages` 等字段。
2. **food-detail.vue 营养数据解析**:后端返回的是平铺字段(如 `data.calcium`),而前端解析方法原本从 `data.nutrients` 子对象取值。处理方式:将 nutrients 来源改为 `data.nutrients || data.nutritionData || data`,兼容两种数据结构。
3. **Figma 临时图片 URL**:多个 Vue 文件中使用了 Figma API 的临时资源 URL。处理方式统一替换为本地静态资源路径`/static/images/xxx.png`),需后续补充实际图标文件。
---
## 后续待办
- [ ] 数据库执行 ALTER TABLE 添加 `purine``serving_size` 字段
- [ ] 补充 `/static/images/` 下的图标文件icon-share.png、icon-search.png、icon-why-important.png、icon-recommendation.png、icon-suggestions.png
- [ ] 后端实现 `getNutrientDetail` 接口(若尚未实现)
- [ ] 用户手动执行 `git push origin main`