Files
msh-system/scripts/logs/agent-BUG-008-170907.log

40 lines
2.7 KiB
Plaintext
Raw Permalink Normal View History

BUG-008 已按你的要求修好,修改总结如下。
### 1. 阅读结果简述
- **postData.nutritionStats**:在 `data()` 里初始化为 `[]`,在 `formatPostData` 里只从 `data.nutritionDataJson` 解析并赋值;若后端没给或字段名不同,就会一直是空数组。
- **加载逻辑**`loadPostData` 调 `getCommunityDetail(id)`,用返回的 `data` 调用 `formatPostData(data)`。后端确实会返回 `nutritionDataJson`,但可能为空或字段名不一致(如 snake_case
### 2. 已做修改
**1统一从详情数据里构建营养统计**
- 新增 **`buildNutritionStatsFromDetailData(data)`**,按优先级从接口数据里生成 `nutritionStats`
- 若存在 **`nutritionStats` / `nutrition_stats`** 数组,直接规范成 `[{label, value}, ...]` 使用。
- 否则解析 **`nutritionDataJson` / `nutrition_data_json`**,按原有逻辑生成热量、蛋白质、钾、磷四项。
- 否则从 **`dietaryData` / `mealData` / `dietary_data` / `meal_data`** 等对象里取 calories/energy、protein、potassium、phosphorus及常见别名生成同样四项。
**2后端没有营养数据时用打卡数据补充**
- 新增 **`buildNutritionStatsFromCheckinDetail(detail)`**:根据打卡详情里的 `actualEnergy`、`actualProtein` 等生成 `[{label, value}, ...]`,钾/磷无则显示 `-`。
- 新增 **`fillNutritionStatsFromCheckin(checkInRecordId)`**:请求 `getCheckinDetail(checkInRecordId)`,用上面方法得到 `nutritionStats` 并赋给 `postData.nutritionStats`。
- 在 **`loadPostData`** 里,在 `formatPostData(data)` 之后:若当前 **`postData.nutritionStats.length === 0`** 且 **`data.checkInRecordId`** 存在,则调用 **`fillNutritionStatsFromCheckin(data.checkInRecordId)`**,用打卡数据补全营养统计(不阻塞评论、推荐等加载)。
**3展示条件只依赖数组长度**
- 营养统计卡片的 **v-if** 已改为只依赖是否有数据:
- 原:`v-if="postData.nutritionStats && postData.nutritionStats.length > 0"`
- 现:`v-if="postData.nutritionStats.length > 0"`
`postData.nutritionStats` 初始化为 `[]`,不会为 undefined。
**4接口引用**
- 在 `@/api/tool.js` 的 import 中增加了 **`getCheckinDetail`**,用于在无详情营养数据时拉取打卡详情并计算营养统计。
效果总结:
- 后端有 `nutritionDataJson` 或其它营养相关字段(含不同命名)时,会正确解析并显示。
- 后端没有营养数据但有关联打卡记录时,会用打卡详情中的热量、蛋白质等补全并显示。
- 卡片是否展示只由 **`postData.nutritionStats.length > 0`** 决定,不再依赖“后端某字段是否存在”。