From ab67bda5a1f022a0233dd42fbba30e5e3774ddd7 Mon Sep 17 00:00:00 2001 From: zhaoying Date: Tue, 17 Mar 2026 16:31:42 +0800 Subject: [PATCH] feat(web): memory conversation add communities --- web/src/i18n/en.ts | 2 + web/src/i18n/zh.ts | 2 + web/src/views/MemoryConversation/index.tsx | 69 +++++++++++----------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/web/src/i18n/en.ts b/web/src/i18n/en.ts index ee3e13c3..e940c2e1 100644 --- a/web/src/i18n/en.ts +++ b/web/src/i18n/en.ts @@ -1771,6 +1771,8 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re memoryConversationAnalysisEmpty: 'No conversation analysis available.', memoryConversationAnalysisEmptySubTitle: 'Conversation analysis will appear here.', + communities: 'Cluster Communities', + summaries: 'Memory Summaries', uploadFile: 'Upload File', fileType: 'File Type', image: 'Image', diff --git a/web/src/i18n/zh.ts b/web/src/i18n/zh.ts index ebdeb31d..14dbf6c8 100644 --- a/web/src/i18n/zh.ts +++ b/web/src/i18n/zh.ts @@ -1767,6 +1767,8 @@ export const zh = { memoryConversationAnalysisEmpty: '目前没有可用的对话分析内容', memoryConversationAnalysisEmptySubTitle: '输入您的用户ID后,点击"测试记忆"查看对话记忆', + communities: '聚类社区', + summaries: '记忆摘要', uploadFile: '上传文件', fileType: '文件类型', image: '图片', diff --git a/web/src/views/MemoryConversation/index.tsx b/web/src/views/MemoryConversation/index.tsx index e0797b90..5e3be0bc 100644 --- a/web/src/views/MemoryConversation/index.tsx +++ b/web/src/views/MemoryConversation/index.tsx @@ -1,8 +1,8 @@ /* * @Author: ZhaoYing * @Date: 2026-02-03 17:09:03 - * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-02-03 17:09:03 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-03-17 16:21:47 */ /** * Memory Conversation Page @@ -92,7 +92,7 @@ export interface LogItem { type: string; title: string; data?: DataItem[] | AnyObject; - raw_results?: string | AnyObject; + raw_results?: string | Record; summary?: string; query?: string; reason?: string; @@ -264,22 +264,25 @@ const MemoryConversation: FC = () => { ))} - : log.type === 'search_result' && log.raw_results + : log.type === 'search_result' && log.raw_results && typeof log.raw_results !== 'string' ?
{log.query}
-
- {typeof log.raw_results === 'string' - ? - : <> - {log.raw_results.reranked_results?.statements.length > 0 && log.raw_results.reranked_results?.statements.map((item: { statement: string }, index: number) => ( -
{item.statement}
- ))} - {log.raw_results.reranked_results?.summaries.length > 0 && log.raw_results.reranked_results?.summaries.map((item: { content: string }, index: number) => ( -
{item.content}
- ))} - - } -
+ {(log.raw_results.reranked_results as AnyObject)?.communities?.length > 0 && <> +
{t('memoryConversation.communities')}
+
    + {((log.raw_results.reranked_results as AnyObject)?.communities as { content: string }[]).map((item, index: number) => ( +
  • {item.content}
  • + ))} +
+ } + {(log.raw_results.reranked_results as AnyObject)?.summaries?.length > 0 && <> +
{t('memoryConversation.summaries')}
+
    + {((log.raw_results.reranked_results as AnyObject)?.summaries as { content: string }[]).map((item, index: number) => ( +
  • {item.content}
  • + ))} +
+ }
: log.type === 'retrieval_summary' && log.summary ?
{log.summary}
@@ -296,22 +299,22 @@ const MemoryConversation: FC = () => { : log.type === 'input_summary' && log.raw_results ? -
{log.query}
-
{log.summary}
-
- {typeof log.raw_results === 'string' - ? - : <> - {log.raw_results.reranked_results?.statements.length > 0 && log.raw_results.reranked_results?.statements.map((item: { statement: string; } , index: number) => ( -
{item.statement}
- ))} - {log.raw_results.reranked_results?.summaries.length > 0 && log.raw_results.reranked_results?.summaries.map((item: { content: string; }, index: number) => ( -
{item.content}
- ))} - - } -
-
+
{log.query}
+
{log.summary}
+
+ {typeof log.raw_results === 'string' + ? + : <> + {(log.raw_results.reranked_results as AnyObject)?.statements?.length > 0 && ((log.raw_results.reranked_results as AnyObject)?.statements as { statement: string }[]).map((item, index: number) => ( +
{item.statement}
+ ))} + {(log.raw_results.reranked_results as AnyObject)?.summaries?.length > 0 && ((log.raw_results.reranked_results as AnyObject)?.summaries as { content: string }[]).map((item, index: number) => ( +
{item.content}
+ ))} + + } +
+ : null }