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
Claude
a5de6fb46d
docs: 新增功能开发详细设计文档(以前端页面为维度)
...
基于测试问题分析报告,按6个前端页面拆分开发任务,含代码示例、自测清单和工时估算
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-25 11:23:21 +08:00
Claude
45ac22d725
docs: 更新测试分析报告,补充具体修复方案
...
- 问题二:AI营养师改为统一调用Coze API + SSE流式响应
- 问题三:参考ishen365补全食物成分表,利用已有DishImageService批量生图落库
- 问题四:营养素内容改为通过Coze AI生成后写入v2_knowledge表
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-24 07:06:37 +08:00
Claude
584ff3b666
docs: 新增测试问题分析报告(食谱计算器/AI营养师/食物百科/健康知识)
...
针对测试反馈的四个问题进行代码级分析,包含根因定位、涉及文件和修复建议。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-22 10:18:18 +08:00
msh-agent
c1857ce852
fix: 修复关注按钮相关问题
...
- 食谱详情页: 修复 applyDefaultData 中未定义变量 id 的问题
- 帖子详情页: 优化 toggleFollow 方法,提前校验 author.id,兼容多种后端字段
- 为帖子详情页已关注状态添加灰色样式
2026-03-09 18:56:53 +08:00
panchengyong
b516089c4f
change deploy.conf
2026-03-09 16:59:02 +08:00
panchengyong
eaa9c8fe75
change deploy.conf
2026-03-09 16:57:46 +08:00
panchengyong
6529793a93
fix bug
2026-03-09 15:45:36 +08:00
panchengyong
c69ce2891f
feat: 帖子详情页 - 当前登录用户不显示关注按钮
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-09 15:39:09 +08:00
panchengyong
4ace4452a0
fix: 修复 fillNutrition 中 ClassCastException 及 parseWorkflowResponse 解析失败
...
- 新增 extractOutputMap() 支持两种策略:
Strategy 1:output 以 '"' 开头时,先用 JSON.parseObject(str, String.class)
解码 \" \n 等转义序列,再提取内部 {...}
Strategy 2:直接 indexOf('{') / lastIndexOf('}') 提取 JSON 对象
- 新增 extractJsonObject() 辅助方法统一提取 {...} 片段
- 修复 line 684 unsafe cast:改为 instanceof Map 检查,避免 ClassCastException
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-09 15:27:36 +08:00
panchengyong
5d4f79fe03
fix: workflow() 返回 resp.getData() 而非整个 RunWorkflowResp 对象
...
parseWorkflowResponse 只能处理 Map/String 类型,
之前传入了 RunWorkflowResp 对象导致直接返回 null。
改为传入 resp.getData()(JSON 字符串)使解析逻辑正常工作。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 14:46:47 +08:00
panchengyong
7b51a1bcf7
fix: 修复 parseWorkflowResponse 处理包含额外文本的 JSON 输出
...
Coze 工作流返回的 output 字段包含:
1. 双编码的 JSON 字符串
2. JSON 对象后面跟着额外的注释/说明文本
修复方案:
- 从字符串中提取 JSON 对象部分(从 { 开始到 } 结束)
- 仅解析 JSON 部分,忽略后面的注释文本
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 14:37:49 +08:00
panchengyong
9f64233cae
fix: 修复 parseWorkflowResponse 解析 Coze 工作流双编码 JSON 数据
...
Coze 工作流返回的 output 字段是双编码的 JSON 字符串:
{"output": ""{\\\"calories\\\":...}\""}
修复方案:
1. 第一次解析:JSON.parseObject() 去掉外层引号,得到字符串
2. 第二次解析:JSON.parseObject() 解析该字符串,得到最终的营养数据对象
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 14:24:55 +08:00
panchengyong
379a5c1bd6
fix: 修复 Coze 工作流调用 SocketTimeoutException
...
CozeAPI.Builder 默认超时仅 5 秒,导致营养分析等耗时工作流请求超时。
将 YAML 中已配置的 connect-timeout(30s) 和 read-timeout(60s) 正确传入 CozeAPI 客户端。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 14:02:47 +08:00
3ba0601242
feat: 社区帖子详情页自动 AI 填充营养数据
...
- 在 getDetail() 中添加营养数据为空时的自动填充逻辑
- fillNutritionByAi() 方法调用 Coze 工作流 7613879935811354687
- 统一参数: input(帖子内容) + img(图片URL)
- fillNutrition() 同样添加 img 参数支持
2026-03-08 15:13:32 +08:00
314a29ea70
feat: 打卡详情页一键分享到社区功能
...
- 新增后端接口 POST /api/front/tool/checkin/{checkinId}/share-to-community
- 实现 shareCheckinToCommunity 方法,复制打卡数据到社区帖子表
- 前端修改 handleCopyCheckin 方法,直接调用后端接口创建帖子
- 支持将打卡图片、描述、营养分析数据复制到社区
- 添加重复分享检查,防止重复创建帖子
- 创建成功后显示提示并可跳转到社区详情页
2026-03-08 00:40:01 +08:00
f692c75f7b
feat: 更新前端多个页面和后端服务
...
- 前端: 更新AI营养师、计算器、打卡、食物详情等页面
- 前端: 更新食物百科、知识详情、营养知识页面
- 前端: 更新社区首页
- 后端: 更新ToolKieAIServiceImpl服务
- API: 更新models-api.js和user.js
2026-03-07 22:26:37 +08:00
1632801880
ui: 将「AI 补充营养」按钮文字改为「分析营养成分」
2026-03-07 16:40:52 +08:00
8f94035703
feat: 使用Coze工作流自动补齐帖子营养数据
...
- 后端: fillNutrition()改用Coze工作流7613879935811354687分析营养成分
- 后端: 新增parseWorkflowResponse/nestedToFlat解析工作流响应
- 前端: 页面加载时自动检测并补齐不完整的营养统计
- 修复: ToolKnowledgeServiceImpl编译错误(Integer转Long)
工作流输出格式: output.{calories,protein,potassium,phosphorus}.{value,unit}
2026-03-07 12:36:56 +08:00
d62f934d7f
feat: 支持 nutrition_data_json 嵌套格式存储(带 value/unit)
...
- 新增 flatToNestedForDb() 方法:将扁平格式转换为带 value/unit 的嵌套格式
- 新增 nestedToFlat() 方法:将嵌套格式转换回扁平格式
- 修改 fillNutrition():AI 生成的扁平结果转为嵌套格式后存入数据库
- 保持接口返回格式不变(仍为扁平格式)
支持字段映射:
- energyKcal → calories (kcal)
- proteinG → protein (g)
- potassiumMg → potassium (mg)
- phosphorusMg → phosphorus (mg)
- fatG → fat (g)
- carbohydratesG → carbohydrates (g)
- sodiumG → sodium (g)
由 Cursor CLI 实现
2026-03-05 19:36:36 +08:00
3dc1a24706
fix: 修复帖子详情营养数据为占位符 '-' 时无法从打卡记录补充的问题
...
根本原因:
- buildNutritionStatsFromDetailData 返回 [{value: '-'}, ...] 而非 []
- loadPostData 用 length===0 判断,但 4 个 '-' 时 length=4,不会走打卡补数据
修复内容:
- 增加 hasValidNutritionStats() 判断,检测是否有至少一项非占位符
- rawStats 映射后若全为 '-' 则返回 []
- formatPostData 中若 nutritionStats 全为占位符则强制设为 []
- 只有无有效营养数据时才调用 fillNutritionStatsFromCheckin 和 fillNutritionFromServer
由 Cursor CLI 检测并修复
2026-03-05 12:16:45 +08:00
cd7b3f6b40
fix: 修复帖子详情营养统计显示全为 "-" 的问题
...
问题原因:
1. fillNutritionStatsFromCheckin 即使全为 "-" 也会更新视图
2. buildNutritionStatsFromCheckinDetail 钾、磷被写死为 "-"
3. 字段解析不兼容(下划线命名、嵌套对象)
修复内容:
- 仅当至少一项有效值时才更新 nutritionStats
- 兼容多种字段命名(驼峰/下划线/别名)
- 支持从嵌套对象解析(nutrition/dietaryData/mealData/aiResult)
- 补全钾、磷字段解析
- 计算属性保护:全为 "-" 时视为空数组
由 Cursor CLI 检测并修复
2026-03-05 12:08:59 +08:00
cb05cf1044
fix: 修复帖子详情营养数据为空时无法从打卡记录补充的问题
...
问题原因:
- nutritionDataJson 为 "{}" 时生成 4 项都是 "-" 的数组
- 因为 length===4 而非 0,未触发从打卡详情补数据逻辑
修复内容:
- 空对象 {} 返回 [],触发后续补数据逻辑
- 全为 "-" 的无效数据也返回 []
- 兼容 check_in_record_id 下划线命名
- 当 checkInRecordId 存在且营养数据为空时,自动从打卡详情补充
由 Cursor CLI 检测并修复
2026-03-05 11:28:38 +08:00
9dcb58f056
fix: 修复社区帖子详情页营养统计数据为空的问题
...
- 修复数据解包逻辑,正确处理 CommonResult 响应
- 新增对 data.nutrition 对象的支持
- 扩展字段映射,支持下划线命名(energy_kcal, protein_g 等)
- 使用 Vue. 保证营养数据响应式更新
- 改进营养 AI 回填的稳定性
由 Cursor CLI 检测并修复
2026-03-05 11:19:03 +08:00
a02529acba
fix: Cursor CLI 优化微信小程序兼容性和健壮性
...
- 添加 scrollViewHeight 明确 scroll-view 高度,修复部分机型滚动失效
- 跳转营养素详情时使用 encodeURIComponent 编码中文参数
- 修复代码风格(补充分号)
由 Cursor CLI (agent) 自动检测并修复
2026-03-05 11:02:09 +08:00
50d5b7ebf9
fix: 修复 Vue 模板 data-* 属性绑定语法错误
...
- 将 data-nutrient-index/data-item-id/data-item-kid 的 {{ }} 插值语法
改为 v-bind (:) 简写语法
- 适配 Vue 2 模板编译规范
Error: Interpolation inside attributes has been removed.
Use v-bind or the colon shorthand instead.
2026-03-05 10:54:10 +08:00
15ad15b501
fix: 修复微信小程序 v-for 事件绑定兼容性问题
...
- 修复 v-for 循环中 @click 直接传递 item 导致的错误
- 使用 data- 属性传递数据,通过 event.currentTarget.dataset 获取
- 适配微信小程序模板编译限制
Error: v-for 暂不支持循环数据 (env: macOS,mp,1.06.2307250)
2026-03-05 10:47:45 +08:00
22d49935ae
fix: 修复食谱收藏接口 ClassCastException 错误
...
- 修复 toggleRecipeFavorite 方法中 recipeId 类型转换问题
- 支持 Number 和 String 两种类型传入
- 添加参数校验,返回友好的错误提示
Error: java.lang.String cannot be cast to java.lang.Number
2026-03-05 10:43:46 +08:00
d8d2025543
feat: T10 回归测试 Bug 修复与功能完善
...
修复 BUG-001 至 BUG-009 及 T10-1 至 T10-6 相关问题:
- 打卡积分显示与累加逻辑优化
- 食谱计算器 Tab 选中样式修复
- 食物百科列表图片与简介展示修复
- 食物详情页数据加载修复
- AI营养师差异化回复优化
- 健康知识/营养知识名称统一
- 饮食指南/科普文章详情页内容展示修复
- 帖子营养统计数据展示修复
- 社区帖子类型中文命名统一
- 帖子详情标签中文显示修复
- 食谱营养AI填充功能完善
- 食谱收藏/点赞功能修复
新增:
- ToolNutritionFillService 营养填充服务
- T10 回归测试用例 (Playwright)
- 知识文章数据 SQL 脚本
涉及模块:
- crmeb-common: VO/Request/Response 优化
- crmeb-service: 业务逻辑完善
- crmeb-front: API 接口扩展
- msh_single_uniapp: 前端页面修复
- tests/e2e: 回归测试用例
2026-03-05 09:35:00 +08:00
6f2dc27fbc
chore: update pom.xml Lombok config and deploy settings
...
- Update Maven compiler plugin to support Lombok annotation processing
- Add deploy.conf for automated deployment
- Update backend models and controllers
- Update frontend pages and API
2026-03-04 12:21:29 +08:00
4646fbc9b5
feat: 集成 KieAI Grok 模型,支持 field103 配置切换视频生成模型
...
- 新增 ToolGrokService 接口和 ToolGrokServiceImpl 实现
- 对接 https://kie.ai/grok-imagine 文生视频和图生视频接口
- 新增 KieAIConfig.grokBaseUrl 配置项
- 修改 KieAIController,根据 system_config.field103 自动切换 Sora/Grok
- 原有 /text-to-video 和 /image-to-video 接口支持自动模型选择
- 新增 /grok/text-to-video 和 /grok/image-to-video 专用接口
配置说明:
- eb_system_config.name=field103, value=grok 时使用 Grok
- value=sora 或空时使用 Sora(默认)
2026-03-03 16:21:07 +08:00
4be53dcd1b
feat: 集成 KieAI 服务,移除 models-integration 子项目
...
- 添加 Gemini 2.5 Flash 对话接口(流式+非流式)
- 添加 NanoBanana 图像生成/编辑接口
- 添加 Sora2 视频生成接口(文生视频、图生视频、去水印)
- 移除 models-integration 子项目(功能已迁移至主后端)
- 新增测试文档和 Playwright E2E 配置
- 更新前端页面和 API 接口
- 更新后端配置和日志处理
2026-03-03 15:33:50 +08:00
1ddb051977
feat(ai-nutritionist): 图片与文字合并为一次 KieAI 多模态请求
...
- 后端: buildGeminiRequestBody 支持 content[] 中 Map 形式的多模态项
- 前端: sendMessage 将多图+文字合并为一条 content 数组,一次 sendToAI(multimodal)
- 仅发图时补默认文案「请描述或分析这张图片」,统一走 KieAI
Made-with: Cursor
2026-03-03 00:36:28 +08:00
51d2016988
fix(kieai): Gemini 读超时 90s + 响应 UTF-8 解码,解决 Read timed out 与中文乱码
...
Made-with: Cursor
2026-03-03 00:25:52 +08:00
8ba027b194
FIX-001: 移除 AI 营养师页面初始假数据
...
- 将 messageList 初始值从示例消息改为空数组 []
- 保留 welcomeMessage 和页面其他功能
- 用户首次进入时只显示欢迎语,无假对话记录
Fixes: FIX-001-remove-fake-data
2026-02-28 21:12:03 +08:00
aae96b15be
Add automation rules and cron configuration
...
- Add Rule 1: All coding work must use Cursor CLI with agent login
- Add Rule 2: Automated fix task checking (5min progress check, 30min auto-start)
- Configure cron jobs in ~/.openclaw/cron/jobs.json
- Add check-progress.sh script for manual/automated checks
- Update AGENTS.md with mandatory task execution rules
- Update .fixes/README.md with automation documentation
Rules:
1. Coding tasks -> Cursor CLI (agent --model auto --trust)
2. Every 5min -> Check progress
3. Every 30min -> Auto-start next fix task
2026-02-28 07:05:40 +08:00
6122f94818
Add automated fix workflow for AI nutritionist page
...
- Create .fixes/ directory structure for tracking repairs
- Add FIX-001 to FIX-009 repair tasks based on Cursor review
- Add automation scripts (start-fix.sh, complete-fix.sh)
- Update HEARTBEAT.md with repair checklist
- Create AUTOMATION_PLAN.md with workflow documentation
Fixes address:
- Remove fake initial data
- Add clear chat button
- Split oversized component
- Optimize multi-image upload
- Fix scroll behavior
- Remove dead code
- Extract hardcoded config
2026-02-28 06:56:43 +08:00
14d29d51c0
Initial commit: MSH System\n\n- msh_single_uniapp: Vue 2 + UniApp 前端(微信小程序/H5/App/支付宝小程序)\n- msh_crmeb_22: Spring Boot 2.2 后端(C端API/管理端/业务逻辑)\n- models-integration: AI服务集成(Coze/KieAI/腾讯ASR)\n- docs: 产品文档与设计稿
2026-02-28 05:40:21 +08:00