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>
This commit is contained in:
Developer
2026-03-25 15:32:53 +08:00
parent 24f75d198c
commit 6ec9487597
5 changed files with 269 additions and 55 deletions

View File

@@ -349,6 +349,17 @@ public class ToolController {
return CommonResult.success(updated);
}
/**
* 批量通过 Coze AI 生成 6 种营养素科普内容并写入 v2_knowledge管理端一次性调用
* 已存在的营养素自动跳过。调用前请确保 Coze PAT Token 有效。
*/
@ApiOperation(value = "AI生成营养素知识内容并落库")
@PostMapping("/knowledge/generate-nutrients")
public CommonResult<String> generateNutrientContent() {
int count = toolKnowledgeService.generateNutrientContent();
return CommonResult.success("成功生成 " + count + " 条营养素内容");
}
// ==================== AI 营养填充T06/T07 ====================
/**