diff --git a/web/src/i18n/en.ts b/web/src/i18n/en.ts index 0e936f01..3252bb29 100644 --- a/web/src/i18n/en.ts +++ b/web/src/i18n/en.ts @@ -1588,6 +1588,11 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re creating_nodes_edges_desc: 'Entity relationship creation completed, {{num}} relationships in total', deduplication_desc: 'Deduplication and disambiguation completed, {{count}} unique entities in total', custom_text: 'Debug Text', + ontologyCoverage: 'Ontology Type', + entity_total: 'Total {{num}} entities', + scene_type_distribution: 'Scene Type Distribution', + general_type_distribution: 'General Type Distribution', + unmatched: 'Unmatched', }, memoryConversation: { searchPlaceholder: 'Enter user ID...', diff --git a/web/src/i18n/zh.ts b/web/src/i18n/zh.ts index 135446fe..3fbefd8b 100644 --- a/web/src/i18n/zh.ts +++ b/web/src/i18n/zh.ts @@ -1668,6 +1668,11 @@ export const zh = { creating_nodes_edges_desc: '实体关系创建完成,共{{num}}条关系', deduplication_desc: '去重消歧完成,最终{{count}}个唯一实体', custom_text: '调试文本', + ontologyCoverage: '本体类型', + entity_total: '一共{{num}}个实体', + scene_type_distribution: '场景类型', + general_type_distribution: '通用类型', + unmatched: '未匹配', }, memoryConversation: { chatEmpty:'有什么我可以帮您的吗?', diff --git a/web/src/views/MemoryExtractionEngine/components/Result.tsx b/web/src/views/MemoryExtractionEngine/components/Result.tsx index cb89661a..68ff397b 100644 --- a/web/src/views/MemoryExtractionEngine/components/Result.tsx +++ b/web/src/views/MemoryExtractionEngine/components/Result.tsx @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2026-02-03 17:30:11 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-02-04 10:08:49 + * @Last Modified time: 2026-02-09 21:04:14 */ /** * Result Component @@ -21,7 +21,7 @@ import type { AnyObject } from 'antd/es/_util/type'; import Card from './Card' import RbCard from '@/components/RbCard/Card' import RbAlert from '@/components/RbAlert' -import type { TestResult } from '../types' +import type { TestResult, OntologyCoverage } from '../types' import { pilotRunMemoryExtractionConfig } from '@/api/memory' import { type SSEMessage } from '@/utils/stream' import Tag, { type TagProps } from '@/components/Tag' @@ -78,6 +78,7 @@ const Result: FC = ({ loading, handleSave }) => { const [knowledgeExtraction, setKnowledgeExtraction] = useState(initObj as ModuleItem) const [creatingNodesEdges, setCreatingNodesEdges] = useState(initObj as ModuleItem) const [deduplication, setDeduplication] = useState(initObj as ModuleItem) + const [ontologyCoverage, setOntologyCoverage] = useState({} as OntologyCoverage) const [runForm] = Form.useForm() @@ -181,6 +182,7 @@ const Result: FC = ({ loading, handleSave }) => { break case 'result': // Result setTestResult(data.data?.extracted_result) + setOntologyCoverage(data.data?.ontology_coverage) break } }) @@ -284,8 +286,8 @@ const Result: FC = ({ loading, handleSave }) => { headerType="borderL" headerClassName="rb:before:bg-[#155EEF]!" > - {knowledgeExtraction.data.map(vo => -
{vo.statement}
+ {knowledgeExtraction.data.map((vo, index) => +
{vo.statement}
)} {formatTime(knowledgeExtraction)} {knowledgeExtraction.result && } className="rb:mt-3"> @@ -450,6 +452,36 @@ const Result: FC = ({ loading, handleSave }) => { } + {ontologyCoverage && Object.keys(ontologyCoverage).length > 0 && + {t('memoryExtractionEngine.ontologyCoverage')}({ontologyCoverage.total_entities})} + headerType="borderL" + headerClassName="rb:before:bg-[#369F21]!" + > +
+ {(['scene_type_distribution', 'general_type_distribution', 'unmatched'] as const).map((key, idx) => { + if (!ontologyCoverage[key]) return null + return ( +
+
{t(`memoryExtractionEngine.${key}`)}({ontologyCoverage[key].type_count})
+
{t('memoryExtractionEngine.entity_total', { num: ontologyCoverage[key].entity_total })}
+
+ {ontologyCoverage[key].types.map((type, index) => { + if (!type.type || type.type === '') return null + return ( +
+ -{type.type}({type.count}) +
+ ) + })} +
+
+ ) + })} +
+
+ } + diff --git a/web/src/views/MemoryExtractionEngine/types.ts b/web/src/views/MemoryExtractionEngine/types.ts index cbf0cca6..af38c240 100644 --- a/web/src/views/MemoryExtractionEngine/types.ts +++ b/web/src/views/MemoryExtractionEngine/types.ts @@ -1,8 +1,8 @@ /* * @Author: ZhaoYing * @Date: 2026-02-03 17:29:55 - * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-02-03 17:29:55 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-02-09 20:56:31 */ /** * Memory Extraction Engine Configuration Form Types @@ -106,4 +106,17 @@ export interface TestResult { predicate: string; object: string; }[]; +} + +interface OntologyCoverageItem { + type_count: number; + entity_total: number; + types: Array<{ type: string; count: number; }> +} +export interface OntologyCoverage { + scene_type_distribution: OntologyCoverageItem; + general_type_distribution: OntologyCoverageItem; + unmatched: OntologyCoverageItem; + total_entities: number; + time: number; } \ No newline at end of file