@@ -74,7 +74,7 @@ const parsedData = computed(() => {
7474 if (typeof props .resultContent === ' string' ) {
7575 try {
7676 return JSON .parse (props .resultContent )
77- } catch {
77+ } catch (error) {
7878 return props .resultContent
7979 }
8080 }
@@ -138,15 +138,39 @@ const isImageResult = computed(() => {
138138// 判断是否为知识图谱查询结果
139139const isKnowledgeGraphResult = computed (() => {
140140 const toolNameLower = props .toolName .toLowerCase ()
141- const isGraphTool = toolNameLower .includes (' graph' ) ||
142- toolNameLower .includes (' kg' ) ||
143- toolNameLower .includes (' query_knowledge_graph' )
144141
145- if (! isGraphTool) return false
142+ // 工具名称初步筛选 - 支持中英文关键词
143+ const hasGraphKeyword = toolNameLower .includes (' graph' ) ||
144+ toolNameLower .includes (' 图谱' ) ||
145+ toolNameLower .includes (' kg' )
146146
147147 const data = parsedData .value
148- // 支持新格式:包含nodes、edges、triples的对象
149- return data && typeof data === ' object' && ' triples' in data && Array .isArray (data .triples )
148+
149+ // 数据格式验证 - 核心判断依据
150+ const hasBasicStructure = data && typeof data === ' object'
151+ const hasTriples = hasBasicStructure && ' triples' in data
152+ const triplesIsArray = hasTriples && Array .isArray (data .triples )
153+ const triplesHasContent = triplesIsArray && data .triples .length > 0
154+
155+ // 进一步验证triples数组的内容格式
156+ let triplesHasValidFormat = false
157+ if (triplesHasContent) {
158+ // 检查是否至少有一个有效的三元组
159+ triplesHasValidFormat = data .triples .some (triple => {
160+ return Array .isArray (triple) &&
161+ triple .length >= 3 &&
162+ triple .every (item => typeof item === ' string' && item .trim () !== ' ' )
163+ })
164+ }
165+
166+ // 最终判断:数据格式符合规范优先,工具名称作为辅助判断
167+ // 1. 如果数据格式完全符合规范,直接认为是知识图谱结果
168+ if (hasBasicStructure && triplesIsArray && triplesHasContent && triplesHasValidFormat) {
169+ return true
170+ }
171+
172+ // 2. 如果数据格式基本符合且有相关关键词,也认为是知识图谱结果
173+ return hasTriples && triplesIsArray && hasGraphKeyword
150174})
151175
152176// 判断是否为计算器结果
0 commit comments