Преглед изворни кода

chore: auto bump version and changelog [skip ci]

iwt пре 2 недеља
родитељ
комит
4035dcc637
4 измењених фајлова са 101 додато и 3 уклоњено
  1. 1 1
      cfc-web/.last_build_commit
  2. 1 1
      cfc-web/package.json
  3. 49 0
      cfc-web/public/CHANGELOG-v1.0.md
  4. 50 1
      cfc-web/public/CHANGELOG.md

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-e1cb9eb1f4f29bf917f2ef7fa2f4a0a76754c5ad
+9c4965741a4c3735f3add974cf476f69c2e31bd1

+ 1 - 1
cfc-web/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "cfc-web",
   "name": "cfc-web",
-  "version": "1.0.1798",
+  "version": "1.0.1799",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
     "dev": "vue-cli-service serve",
     "dev": "vue-cli-service serve",

+ 49 - 0
cfc-web/public/CHANGELOG-v1.0.md

@@ -4,6 +4,55 @@
 
 
 ---
 ---
 
 
+## v1.0.1799 (2026-10-26)
+
+### Bug 修复
+- 今日成长打卡入口补传 taskId,打通任务→打卡→任务完成联动(C1)
+
+### 其他
+- 改动(唯一文件 cfc-frontend/pages/growth-main/index.vue):
+- 1. loadProgressItems 阶段新增 fetchTodayTasks(),一次请求取当日当前成员任务,按 actionType 索引挂到 progressItems 的 taskId/taskMemberId 上;
+- 2. findTaskByAction 只取 status 为 pending/in_progress 的任务(同 actionType 取首个);
+- 3. handleProgressClick 命中 diet/exercise/sleep 且有 taskId 时拼 ?taskId=X&memberId=Y(memberId 取任务归属 familyMemberId||executorId||this.memberId,与 tasks.vue navigateByAction 同口径);无任务时保持纯跳转,退化为纯记录打卡(后端 updateProgress 兜底,不报错);
+- 4. loadRecentTasks 复用 loadProgressItems 已拉取的今日任务缓存,避免同页重复调用 /api/tasks/today(原先传参为 {memberId} 对象,与 getTodayTasks(memberId) 签名不符,实际未按成员过滤)。
+- 范围纪律:不改打卡页(diet/sleep/exercise-checkin.vue)、不改后端(updateCheckinTaskProgress/completeTask/updateProgress 三条路径均已存在且幂等)、不改任务生成器、不改完成度判定(仍基于记录查询)、不改 onShow 刷新逻辑。
+- 验收:node --check PASS;scripts/verify-vue-compile.js 模板/样式/脚本 1/1/1 PASS;audit-mp-antipatterns ERROR 0;audit-duplicate-api-calls 0 error;逻辑级验证 27 项断言全通过(含无任务退化、接口异常静默降级、done=true 仍挂 taskId)。
+- 
+- 背景:diet-checkin.vue 餐次为 TagChip 单选(form.mealType 单值),一次只能选一餐。
+- 关键约束:health_meal_record.meal_type VARCHAR(32) 足够存多餐次逗号拼接值,
+- 无需 schema 迁移 —— 1 条记录承载多餐次,后端契约(mealType 单值 String)保持不变。
+- 改动清单(5 文件):
+- - cfc-frontend/pages/growth/diet-checkin.vue
+-   · form.mealType(单值) → form.mealTypes(数组,初始 []);新增计算属性 mealType
+-     序列化为逗号拼接字符串(固定按 早餐→午餐→晚餐→加餐 排序,避免点击顺序漂移)
+-   · TagChip 改 toggle 多选::active 判数组包含,@select 调 toggleMealType
+-   · submitCheckin 校验改为「mealTypes 至少一项」;payload.mealType 写入序列化字符串
+-   · mealTypeLabel 改逗号兼容版(split(',') 逐项映射后 join('、'))
+-   · 卡片标题微调「选择餐次(可多选)」以提示可多选
+- - cfc-frontend/pages/growth-main/index.vue
+-   · mealTypeLabel 同步改逗号兼容版(保留 extra→零食 映射)
+- - cfc-frontend/pages/diet/records.vue
+-   · :class 取逗号拼接首项 split(',')[0],保留 meal-* 样式语义
+-   · mealLabel 改逗号兼容版(goDetail 弹窗同步受益)
+- - cfc-frontend/pages/diet/record-detail.vue
+-   · 餐次由原始值 {{ record.mealType }} 改为中文标签 {{ mealLabel(record.mealType) }}
+- - cfc-backend/src/main/java/com/etotem/cfc/controller/HealthMealController.java
+-   · create 校验改为「按逗号拆分 trim 去空后至少一项」,并回写归一化值
+-   · 其余逻辑零改动:任务回写、CF 发放(按记录 ID 幂等)、补打校验、成员归属修正
+- 计数语义(不变):一次提交多餐次计 1 次任务进度(targetValue=1 即 completed),
+- CF 发放 1 次,补打(isBackfill=1)不参与任务回写与 CF 发放。
+- 明确不做:今日成长入口 taskId 补传(属 C1);health/diet-index.vue 另一入口多选
+- (另案评估);不改 RepeatTaskGenerator / TaskService;不拆 N 条记录;不改补打逻辑;
+- 不新增 DB 迁移。
+- 验证:cfc-backend mvn compile BUILD SUCCESS(1948 源文件);
+- 小程序 4 文件 node --check 全通过、vue-template-compiler 模板编译全通过;
+- audit-mp-antipatterns ERROR 0;序列化/标签/归一化逻辑 22 项断言全通过。
+- 
+
+### 新功能
+- C2 饮食打卡餐次多选(早/中/晚/加餐可多选,逗号拼接单值,零迁移)
+
+
 ## v1.0.1798 (2026-10-26)
 ## v1.0.1798 (2026-10-26)
 
 
 ### 其他
 ### 其他

+ 50 - 1
cfc-web/public/CHANGELOG.md

@@ -1,6 +1,6 @@
 # 更新日志
 # 更新日志
 
 
-> 当前版本: v1.0.1798
+> 当前版本: v1.0.1799
 
 
 ## 历史版本
 ## 历史版本
 
 
@@ -8,6 +8,55 @@
 
 
 ---
 ---
 
 
+## v1.0.1799 (2026-10-26)
+
+### Bug 修复
+- 今日成长打卡入口补传 taskId,打通任务→打卡→任务完成联动(C1)
+
+### 其他
+- 改动(唯一文件 cfc-frontend/pages/growth-main/index.vue):
+- 1. loadProgressItems 阶段新增 fetchTodayTasks(),一次请求取当日当前成员任务,按 actionType 索引挂到 progressItems 的 taskId/taskMemberId 上;
+- 2. findTaskByAction 只取 status 为 pending/in_progress 的任务(同 actionType 取首个);
+- 3. handleProgressClick 命中 diet/exercise/sleep 且有 taskId 时拼 ?taskId=X&memberId=Y(memberId 取任务归属 familyMemberId||executorId||this.memberId,与 tasks.vue navigateByAction 同口径);无任务时保持纯跳转,退化为纯记录打卡(后端 updateProgress 兜底,不报错);
+- 4. loadRecentTasks 复用 loadProgressItems 已拉取的今日任务缓存,避免同页重复调用 /api/tasks/today(原先传参为 {memberId} 对象,与 getTodayTasks(memberId) 签名不符,实际未按成员过滤)。
+- 范围纪律:不改打卡页(diet/sleep/exercise-checkin.vue)、不改后端(updateCheckinTaskProgress/completeTask/updateProgress 三条路径均已存在且幂等)、不改任务生成器、不改完成度判定(仍基于记录查询)、不改 onShow 刷新逻辑。
+- 验收:node --check PASS;scripts/verify-vue-compile.js 模板/样式/脚本 1/1/1 PASS;audit-mp-antipatterns ERROR 0;audit-duplicate-api-calls 0 error;逻辑级验证 27 项断言全通过(含无任务退化、接口异常静默降级、done=true 仍挂 taskId)。
+- 
+- 背景:diet-checkin.vue 餐次为 TagChip 单选(form.mealType 单值),一次只能选一餐。
+- 关键约束:health_meal_record.meal_type VARCHAR(32) 足够存多餐次逗号拼接值,
+- 无需 schema 迁移 —— 1 条记录承载多餐次,后端契约(mealType 单值 String)保持不变。
+- 改动清单(5 文件):
+- - cfc-frontend/pages/growth/diet-checkin.vue
+-   · form.mealType(单值) → form.mealTypes(数组,初始 []);新增计算属性 mealType
+-     序列化为逗号拼接字符串(固定按 早餐→午餐→晚餐→加餐 排序,避免点击顺序漂移)
+-   · TagChip 改 toggle 多选::active 判数组包含,@select 调 toggleMealType
+-   · submitCheckin 校验改为「mealTypes 至少一项」;payload.mealType 写入序列化字符串
+-   · mealTypeLabel 改逗号兼容版(split(',') 逐项映射后 join('、'))
+-   · 卡片标题微调「选择餐次(可多选)」以提示可多选
+- - cfc-frontend/pages/growth-main/index.vue
+-   · mealTypeLabel 同步改逗号兼容版(保留 extra→零食 映射)
+- - cfc-frontend/pages/diet/records.vue
+-   · :class 取逗号拼接首项 split(',')[0],保留 meal-* 样式语义
+-   · mealLabel 改逗号兼容版(goDetail 弹窗同步受益)
+- - cfc-frontend/pages/diet/record-detail.vue
+-   · 餐次由原始值 {{ record.mealType }} 改为中文标签 {{ mealLabel(record.mealType) }}
+- - cfc-backend/src/main/java/com/etotem/cfc/controller/HealthMealController.java
+-   · create 校验改为「按逗号拆分 trim 去空后至少一项」,并回写归一化值
+-   · 其余逻辑零改动:任务回写、CF 发放(按记录 ID 幂等)、补打校验、成员归属修正
+- 计数语义(不变):一次提交多餐次计 1 次任务进度(targetValue=1 即 completed),
+- CF 发放 1 次,补打(isBackfill=1)不参与任务回写与 CF 发放。
+- 明确不做:今日成长入口 taskId 补传(属 C1);health/diet-index.vue 另一入口多选
+- (另案评估);不改 RepeatTaskGenerator / TaskService;不拆 N 条记录;不改补打逻辑;
+- 不新增 DB 迁移。
+- 验证:cfc-backend mvn compile BUILD SUCCESS(1948 源文件);
+- 小程序 4 文件 node --check 全通过、vue-template-compiler 模板编译全通过;
+- audit-mp-antipatterns ERROR 0;序列化/标签/归一化逻辑 22 项断言全通过。
+- 
+
+### 新功能
+- C2 饮食打卡餐次多选(早/中/晚/加餐可多选,逗号拼接单值,零迁移)
+
+
 ## v1.0.1798 (2026-10-26)
 ## v1.0.1798 (2026-10-26)
 
 
 ### 其他
 ### 其他