msh-agent
ceac1c0340
feat(admin): add msh_single_admin project and harden ignore rules
...
Introduce the new Vue admin project into version control while tightening gitignore patterns to keep env files, logs, build artifacts, and test outputs out of commits.
Made-with: Cursor
2026-04-15 19:32:40 +08:00
msh-agent
a840045fc1
chore: organize root .gitignore
...
Group rules by purpose; add Playwright report dir, crmeb_log, Cursor CLI, and common backup patterns.
Made-with: Cursor
2026-04-15 18:01:52 +08:00
msh-agent
77632510cf
fix: 修复Tool模块相关问题 - 优化签到、社区、食物和AI服务功能
2026-04-12 09:31:00 +08:00
msh-agent
b164d8ba11
feat(ai-chat): 新增豆包API + AI模型配置项支持动态切换
...
- 后端新增豆包(火山引擎Ark)API集成:DoubaoController、ToolDoubaoServiceImpl,
使用OkHttp3 SSE流式对话,兼容OpenAI Chat Completions格式
- 新增DoubaoConfig配置类,读取doubao.api.*配置
- 在eb_system_config表新增ai_chat_model配置项,支持doubao/coze/gemini三种模型切换
- 新增GET /api/front/doubao/ai-model-config接口供前端读取当前模型配置
- 前端ai-nutritionist.vue的sendToAI按系统配置分发到_sendViaDoubao/_sendViaCoze/_sendViaGemini
- 前端models-api.js新增doubaoChatStream/doubaoChat/getAiModelConfig函数
- 附带豆包API测试脚本和数据库初始化SQL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-11 18:03:21 +08:00
msh-agent
58ea76498f
fix(streaming): 修正流式输出的端点URL和防缓冲header
...
前端:
- kieaiGeminiChatStream URL 从 /gemini/chat 改为 /gemini/chat/stream
(后者声明了 produces=text/event-stream,nginx 不会缓冲)
- 请求 header 增加 Accept: text/event-stream
后端:
- KieAIController.geminiChatStream 补充防缓冲 header:
X-Accel-Buffering: no + Cache-Control: no-cache
(与 CozeController.chatStream 对齐,防止 nginx 缓冲 SSE)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-11 15:51:32 +08:00
msh-agent
19b6dc1d2b
fix(food-encyclopedia): 修复点击食物卡片 item 为 undefined 的根因
...
根因:小程序编译时 @click="goToFoodDetail(item)" 通过 dataset 传递
复杂对象,scroll-view 内 DOM 回收或列表异步刷新后 dataset 序列化
丢失,导致 item 变为 undefined。
修复:
1. 模板改为 @click="handleFoodItemClick(index)" 传递基本类型
2. 新增 handleFoodItemClick 方法,从 filteredFoodList 实时取 item
3. foodRowKey 始终拼接 index 避免重复 id 导致 Vue DOM 复用错乱
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-11 15:46:06 +08:00
msh-agent
5b08211fa2
style(ai-nutritionist): emoji按钮替换为iconfont图标
...
将消息操作按钮从emoji替换为项目iconfont图标:
- 复制:icon-fuzhi
- 重新生成:icon-shuaxin
- 语音朗读:icon-laba(播放中高亮)
- 删除:icon-shanchu
按钮样式优化:圆角方形背景、统一灰色调、hover反馈
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-11 15:42:28 +08:00
msh-agent
dce899f655
fix: 测试反馈0403修改 — 百科Bug修复/份数→克数/AI对话增强/流式输出
...
1. [P0] food-encyclopedia: 修复 goToFoodDetail TypeError 报错
- 增加 item 空值防御性校验
- 加固 filteredFoodList 过滤无效项
2. [P1] calculator-result: 食物份数建议改为克数
- 模板展示从"X份"改为"X克"
- applyResult 数据适配:优先读 gram 字段,兜底 portion * gramPerServing 换算
3. [P2] ai-nutritionist: 新增消息操作按钮(复制/重新生成/删除)
- AI消息气泡下方新增 msg-actions 按钮组
- 复制到剪贴板、删除单条消息、重新生成最后一条AI回复
4. [P2] ai-nutritionist + models-api: 启用流式输出改善响应速度
- 新增 kieaiGeminiChatStream 函数(SSE + enableChunked)
- sendToAI 优先走流式,失败自动降级为非流式
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-11 15:20:10 +08:00
msh-agent
2facd355ab
feat(ai-nutritionist): Coze TTS and streaming robustness
...
- Add Coze TTS endpoint and service; expose binary MP3 from controller.
- Bypass ResponseFilter for /audio/speech so MP3 bodies are not UTF-8 wrapped.
- UniApp: cozeTextToSpeech, TTS UI and play flow; SSE HTTP errors and diagnostics.
- Document TTS in docs/features.md; extend test-0325-1 with curl verification.
Made-with: Cursor
2026-03-31 07:07:21 +08:00
panchengyong
35052d655f
chore: 更新测试文档 test-0325-1 与 IDEA 配置
...
- docs/Testing:标题行微调
- .idea:compiler.xml、jarRepositories.xml
Made-with: Cursor
2026-03-30 12:50:38 +08:00
panchengyong
3023115bb0
fix: 移除损坏的 Claude gitlink 并同步业务与文档更新
...
- 从索引移除误记录的 .claude/worktrees gitlink(旧绝对路径会导致 git 命令失败)
- 新增根目录 .gitignore 忽略 .claude/worktrees 与 .DS_Store
- 后端:Coze/知识库、ResultAdvice、应用配置
- 前端 uniapp:AI 营养、食物百科等页面与 API
- 更新 README、测试文档与 shop-msh.sql
Made-with: Cursor
2026-03-30 12:46:24 +08:00
panchengyong
3329a2b296
fix(ai-nutritionist): unwrap double-layer Coze API responses
...
CRMEB wraps CozeBaseResponse again, so chat/retrieve/message payloads live at response.data.data. Added unwrapCozeResponse() and applied it to sendToAI, pollChatStatus, and getChatMessages. Updated test log.
Made-with: Cursor
2026-03-25 17:21:12 +08:00
Developer
6ec9487597
feat: 营养素AI生成落库 + AI营养师消息级loading占位(设计文档对齐)
...
后端:
- ToolKnowledgeService/Impl 新增 generateNutrientContent()
调用 Coze AI 批量生成6种营养素(蛋白质/钾/磷/钠/钙/水分)
科普内容并写入 v2_knowledge,已存在的自动跳过
- ToolController 新增 POST /tool/knowledge/generate-nutrients
端点(管理端一次性调用后自动补充封面图)
- 新增 SQL 备用脚本 migration_2026-03-25_nutrient_knowledge.sql
含6种营养素完整JSON,直接执行可跳过AI生成
前端(ai-nutritionist.vue,对齐功能开发详细设计文档任务3-2):
- 新增 sleep(ms) 工具方法
- sendToAI 发起前先推入 {loading:true} 占位气泡
- pollChatStatus 轮询间隔由 1000ms 调整为 1500ms
- getChatMessages 回调填充占位气泡(不再 push 新消息)
- 所有错误/超时/失败路径统一更新 aiMsg.loading=false
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 15:32:53 +08:00
Developer
24f75d198c
fix: 营养素详情页修复 API 空响应未走本地兜底的问题
...
- loadNutrientData() 判断由 if(res.data) 改为
if(res.data && Object.keys(res.data).length > 0 && res.data.name)
- 当后端 v2_knowledge 表无该营养素记录时(返回{})
自动降级到本地 nutrientMap 展示内置数据
- 不影响正常有数据时的 API 优先逻辑
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 15:14:14 +08:00
Developer
355895dba2
fix: 修复手动测试发现的3项问题
...
1. food-encyclopedia: 修复 v-for key id:index TypeError
- :key 改为 :key="index",避免 WeChat 小程序 key 表达式异常
- filteredFoodList 加本地搜索过滤 + null item 过滤
- normalizeFoodItem 新增英文→中文分类名映射(grain→谷薯类等)
- loadFoodList/handleSearch 过滤 null 条目
2. ToolKnowledgeServiceImpl: 修复 TooManyResultsException
- getNutrientDetail 查询新增 LIMIT 1 + ORDER BY knowledge_id DESC
- 防止 DB 中同名营养素存在多条导致 selectOne 异常
3. ai-nutritionist: 统一走 Coze API,移除 KieAI Gemini 路径
- sendToAI 文本/多模态均改为 api.cozeChat + pollChatStatus
- 支持 type='text'/'multimodal'/图片 三种消息类型构建
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 14:54:31 +08:00
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