Files
msh-system/scripts/logs/agent-BUG-008-103247.log
scottpan 4be53dcd1b feat: 集成 KieAI 服务,移除 models-integration 子项目
- 添加 Gemini 2.5 Flash 对话接口(流式+非流式)
- 添加 NanoBanana 图像生成/编辑接口
- 添加 Sora2 视频生成接口(文生视频、图生视频、去水印)
- 移除 models-integration 子项目(功能已迁移至主后端)
- 新增测试文档和 Playwright E2E 配置
- 更新前端页面和 API 接口
- 更新后端配置和日志处理
2026-03-03 15:33:50 +08:00

43 lines
2.7 KiB
Plaintext
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.
BUG-008 已按你的要求修好,修改总结如下。
---
## 1. 逻辑与数据流(已确认)
- **`postData.nutritionStats`**:在 `data()` 里初始化为 `[]`;在 `formatPostData()` 里由 `buildNutritionStatsFromDetailData(data)` 得到并赋值。
- **加载入口**`loadPostData(id)` 调 `getCommunityDetail(id)`,再用返回的 `data` 做 `formatPostData(data)`。
- **后端社区详情**:返回 `nutritionDataJson`、`checkInRecordId`**没有** `nutritionStats` 数组。
`buildNutritionStatsFromDetailData` 已支持:
- `nutritionStats` / `nutrition_stats`
- `nutritionDataJson` / `nutrition_data_json`(解析出 calories、protein、potassium、phosphorus
- `dietaryData` / `mealData` / `dietary_data` / `meal_data`
- **打卡详情**:当详情里没有营养数据但有 `checkInRecordId` 时,会再调 `getCheckinDetail(checkInRecordId)`;返回里有 `actualEnergy`、`actualProtein`,已用 `buildNutritionStatsFromCheckinDetail` 转成 `[{label, value}, ...]` 并写回 `postData.nutritionStats`。
---
## 2. 实际修改内容
**1用打卡详情补全营养数据并等待完成**
- 原来:`fillNutritionStatsFromCheckin(data.checkInRecordId)` 未 `await`,页面先渲染,营养卡常为空。
- 现在:在「无营养数据 + 有 checkInRecordId」时改为 **`await this.fillNutritionStatsFromCheckin(data.checkInRecordId)`**,在加载结束前就拿到打卡详情并填好 `nutritionStats`,营养卡能稳定显示。
**2显示条件改为“只看数组长度”且做防御**
- 要求v-if 用 `nutritionStats.length > 0`,不依赖后端是否返回某字段。
- 实现:
- 增加计算属性 **`nutritionStatsLength`**
`(postData && postData.nutritionStats)` 且为数组时返回 `length`,否则为 `0`,避免 `nutritionStats` 未定义时报错。
- 营养统计卡片的 v-if 改为:**`v-if="nutritionStatsLength > 0"`**。
这样显示只依赖「当前页面的 nutritionStats 数组是否有项」,与后端字段名无关。
---
## 3. 未改动的部分(已符合需求)
- 后端无 `nutritionStats` 时,已通过「打卡详情」的 `actualEnergy`、`actualProtein` 等计算并填充 `nutritionStats`(格式 `[{label:'蛋白质', value:'56g'}, ...]`),无需再改。
- 后端有 `nutritionDataJson` 等不同命名时,`buildNutritionStatsFromDetailData` 里已有多种字段名和 `dietaryData`/`mealData` 的兼容,无需额外映射修改。
当前逻辑是:先尝试从详情/`nutritionDataJson`/饮食数据得到 `nutritionStats`;若仍为空且存在 `checkInRecordId`,则 **await** 拉取打卡详情并据此填充;展示上只用 **`nutritionStatsLength > 0`** 控制营养卡显示。