|
|
@@ -4,6 +4,66 @@
|
|
|
|
|
|
---
|
|
|
|
|
|
+## v1.0.1798 (2026-10-26)
|
|
|
+
|
|
|
+### 文档
|
|
|
+- +chore(tasks): UI 令牌收敛第二批任务分解 U3-U6(待派发)+ U7/U8(blocked 需先出方案)
|
|
|
+- /plan: 打卡任务联动今日成长 + 饮食餐次多选方案(C1/C2);任务池追加 C1(前端·今日成长补传taskId) C2(全栈·饮食多选)
|
|
|
+- 新增 UI 设计令牌收敛执行任务书(U1 小程序 / U2 后台)
|
|
|
+
|
|
|
+### 其他
|
|
|
+- / U5 后台品牌色残余收口(P1)/ U6 后台间距令牌引用率提升(P2)
|
|
|
+- - U7 大字号+字重收口、U8 超长页面拆分 标记 blocked,需先出方案经主理人确认
|
|
|
+- - tasks_backlog.json 新增 U3-U8 条目,U3-U6 status=pending 可被巡检派发
|
|
|
+-
|
|
|
+-
|
|
|
+-
|
|
|
+- U2-2 padding/margin 20px → 24px:147 处(含简写多值位置),仅限 padding/margin 上下文
|
|
|
+- U2-3 font-size 13px 语义归位:12px 26 处 / 14px 37 处
|
|
|
+- U2-4 border-radius 16/12/20/10→8px、9→4px、3→2px:38 处
|
|
|
+- 跳过:JS 里的 ECharts/数据色值、el-tag color prop、PageHeader title 里的内联样式串、JS 模板字符串内联样式(详见报告)
|
|
|
+- 验证:vue-cli-service build 通过(仅存量 bundle 体积 warning)
|
|
|
+-
|
|
|
+- - pages/health/gut-flora-foods-detail.vue:报告入口(有 reportId)不渲染
|
|
|
+- MemberSelector、onLoad 不调 loadMemberList、loadData 只传 reportId 不传
|
|
|
+- memberId、不再请求趋势(照抄 pages/growth/caution-detail.vue 先例)
|
|
|
+- - pages/diet/food-query.vue:报告入口 member-bar 与 mode-bar 均不渲染,
|
|
|
+- 不调 loadMembers()/loadFamilyData()(含下拉刷新路径),不请求
|
|
|
+- /api/health/foods/by-family;loadFoods 报告入口只传 reportId
|
|
|
+- - 非报告入口(diet/index.vue、growth-main/index.vue)行为保持不变
|
|
|
+- 需求2 家庭总览改为后端持久化"每项食材的成员最新推荐指数最小值":
|
|
|
+- - 新增表 family_food_overview(迁移415,唯一键 family_id+food_id):
|
|
|
+- min_index_score / member_count / member_scores / source_fingerprint /
|
|
|
+- calculated_at;DatabaseInitializer.runMigrations() + schema.sql 同步,幂等
|
|
|
+- - 新增 FamilyFoodOverview entity / Mapper / FamilyFoodOverviewService:
|
|
|
+- 批量 IN 查 food_recommend_idx,按 food_id 聚合取 MIN;无记录成员不计入
|
|
|
+- (不可当 0),全员无该食材则不出现;全量覆盖式写入,指纹不变跳过写入
|
|
|
+- - 触发点:FoodRecommendService.recalculateForUser 末尾(含清除指数的提前
|
|
|
+- 返回分支),由 userId 反查 family_id 逐个重算,try/catch 只 warn,
|
|
|
+- 绝不拖累报告确认入库主流程(与 NormalizeIndicatorPipeline 一致,不加
|
|
|
+- @Transactional 以免污染外层事务 rollback-only)
|
|
|
+- - 成员移出家庭(kickMember/leaveFamily)后其数据不再计入原家庭总览
|
|
|
+- - 接口:/api/health/foods/by-family 与 /api/food/recommendation/by-family
|
|
|
+- 均新增 overview 字段({foodId,foodName,category,minIndexScore,
|
|
|
+- memberCount,memberScores,calculatedAt}),原结构不变向后兼容;
|
|
|
+- getOverview() 无持久化记录时先 backfill 再返回
|
|
|
+- - 前端 food-query.vue 直接用 minIndexScore(不再前端算 avg),模板
|
|
|
+- item.avgScore → item.score,保留 buildFamilyOverview 作降级路径(按 min),
|
|
|
+- 标题补充"取家庭最保守值"口径
|
|
|
+- 验证:mvn compile 通过(cfc-backend 独立工程,无父 reactor);新增
|
|
|
+- FamilyFoodOverviewServiceTest 9 项用例全部通过(min 口径/无记录不计/
|
|
|
+- 回收箱成员排除/全量覆盖/幂等/移除食材/backfill/返回结构);小程序模板与
|
|
|
+- 样式校验通过、反模式与重复接口审计 ERROR 归零。
|
|
|
+-
|
|
|
+
|
|
|
+### 样式
|
|
|
+- U1 UI token convergence (font-scale/fontcolor/copy/spacing)
|
|
|
+- U2 后台 UI 令牌收敛(#1677FF 去硬编码 / 间距 20→24 / 13px 字号归位 / 非标圆角收敛)
|
|
|
+
|
|
|
+### 新功能
|
|
|
+- T28 食材推荐/查询报告入口收敛 + 家庭总览持久化最小值
|
|
|
+
|
|
|
+
|
|
|
## v1.0.1797 (2026-10-26)
|
|
|
|
|
|
### 文档
|