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

5.0 KiB
Raw Blame History

开发任务完成报告 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
  • 新增 importToolCozeServiceCozeChatRequestCozeBaseResponse
  • 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 个字段返回:
    • calciumironvitaminCpurineservingSize

任务 4食物百科详情页前端修复

文件: msh_single_uniapp/pages/tool/food-detail.vue

  • 修复点 A 两处 "每100g" 硬编码替换为 {{ foodData.servingSize || '每100g' }}
  • 修复点 B parseNutritionTable 中新增铁 (iron) 和维生素C (vitaminC) 营养项;parseKeyNutrientsparseNutritionTable 的 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 对象,设置 botIduserIdadditionalMessages 等字段。

  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 添加 purineserving_size 字段
  • 补充 /static/images/ 下的图标文件icon-share.png、icon-search.png、icon-why-important.png、icon-recommendation.png、icon-suggestions.png
  • 后端实现 getNutrientDetail 接口(若尚未实现)
  • 用户手动执行 git push origin main