更新各项内容

This commit is contained in:
2026-09-11 00:22:49 +08:00
parent 1304e71b7a
commit b9cdabe045
24 changed files with 3109 additions and 469 deletions
+27 -4
View File
@@ -240,7 +240,7 @@ func (c *BackendAiSmartGenerateController) GenerateCompany() {
}
// 调用AI(非流式,含已启用 MCP 工具:AI 会先调用天眼查等工具获取真实数据再生成)
reply, err := runToolLoop(claims, provider, useModel, "", messages)
reply, usage, err := runToolLoop(claims, provider, useModel, "", messages)
if err != nil {
c.sgJsonErr(500, 500, "AI生成失败: "+err.Error())
return
@@ -269,12 +269,16 @@ func (c *BackendAiSmartGenerateController) GenerateCompany() {
"error": "AI返回格式异常,无法解析JSON",
"name": p.CompanyName,
"type": p.Type,
"model": usage.Model,
"tools": usage.Tools,
"tool_count": usage.ToolCount,
"rounds": usage.Rounds,
"generate_time": time.Now().Format("2006-01-02 15:04:05"),
})
return
}
// KV兜底成功,继续走后面的结果组装
c.sgOk(smartGenResult(reply, result, p.CompanyName, p.Type, nameField))
c.sgOk(smartGenResult(reply, result, p.CompanyName, p.Type, nameField, usage))
return
}
@@ -285,17 +289,31 @@ func (c *BackendAiSmartGenerateController) GenerateCompany() {
"error": fmt.Sprintf("解析JSON失败: %v", err),
"name": p.CompanyName,
"type": p.Type,
"model": usage.Model,
"tools": usage.Tools,
"tool_count": usage.ToolCount,
"rounds": usage.Rounds,
"generate_time": time.Now().Format("2006-01-02 15:04:05"),
})
return
}
}
c.sgOk(smartGenResult(reply, result, p.CompanyName, p.Type, nameField))
c.sgOk(smartGenResult(reply, result, p.CompanyName, p.Type, nameField, usage))
}
// aiGenNotFound 判断 AI 回复是否明确表示未查到企业信息(MCP 工具查询无结果)
func aiGenNotFound(raw string) bool {
for _, kw := range []string{"未找到", "未匹配", "查无", "未查询到", "未检索到", "no matching", "not found"} {
if strings.Contains(raw, kw) {
return true
}
}
return false
}
// smartGenResult 组装智能生成成功响应(含完整AI回复 raw),并对表单受限字段做规整
func smartGenResult(reply string, result map[string]interface{}, companyName, genType, nameField string) map[string]interface{} {
func smartGenResult(reply string, result map[string]interface{}, companyName, genType, nameField string, usage *aiToolUsage) map[string]interface{} {
// 确保公司名称字段存在
if _, ok := result[nameField]; !ok || result[nameField] == "" {
result[nameField] = companyName
@@ -317,10 +335,15 @@ func smartGenResult(reply string, result map[string]interface{}, companyName, ge
crossFillPhone(result, "contact_phone", "registered_phone")
return map[string]interface{}{
"parsed": true,
"found": !aiGenNotFound(reply), // MCP 是否查到企业信息
"data": result,
"raw": reply, // AI完整回复(含企业画像markdown,供前端"AI响应数据"展示)
"name": companyName,
"type": genType,
"model": usage.Model, // 实际使用的模型
"tools": usage.Tools, // 实际调用的 MCP 工具(server + tool)
"tool_count": usage.ToolCount,
"rounds": usage.Rounds,
"generate_time": time.Now().Format("2006-01-02 15:04:05"),
}
}