From b7945f3a64ad08cf9767c73e9b08125f5157d0f3 Mon Sep 17 00:00:00 2001 From: chanx <1243304602@qq.com> Date: Tue, 7 Jul 2026 16:29:17 +0800 Subject: [PATCH] Fix: Referenced files not displaying. (#16696) --- .../pages/agents/agent-log-detail-modal.tsx | 71 ++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/web/src/pages/agents/agent-log-detail-modal.tsx b/web/src/pages/agents/agent-log-detail-modal.tsx index d6455263b..4058dbb27 100644 --- a/web/src/pages/agents/agent-log-detail-modal.tsx +++ b/web/src/pages/agents/agent-log-detail-modal.tsx @@ -4,7 +4,9 @@ import { useFetchAgent } from '@/hooks/use-agent-request'; import { useFetchUserInfo } from '@/hooks/use-user-setting-request'; import { IAgentLogMessage } from '@/interfaces/database/agent'; import { + Docagg, IMessage, + IReferenceChunk, IReferenceObject, Message, } from '@/interfaces/database/chat'; @@ -18,11 +20,75 @@ interface CustomModalProps { reference: IReferenceObject; } +interface IAgentLogReferenceChunk { + citation_id?: string; + content?: string | null; + document_id: string; + document_name: string; + dataset_id: string; + id: string; + image_id: string; + positions?: number[] | number[][]; + similarity?: number; + vector_similarity?: number; + term_similarity?: number; + doc_type?: string; + document_metadata?: Record; + url?: string; +} + +// Runtime agent-log messages carry the reference chunks array directly, +// even though IAgentLogMessage does not declare it. +type AgentLogMessageWithReference = IAgentLogMessage & { + reference?: IAgentLogReferenceChunk[]; +}; + +const buildReferenceObject = ( + chunks: IAgentLogReferenceChunk[] | undefined | null, +): IReferenceObject => { + if (!chunks || !Array.isArray(chunks) || chunks.length === 0) { + return { chunks: {}, doc_aggs: {} }; + } + + const chunkMap: Record = {}; + const docAggMap: Record = {}; + + chunks.forEach((chunk, index) => { + const key = chunk.citation_id ?? String(index); + + chunkMap[key] = { + id: chunk.id, + content: (chunk.content ?? null) as IReferenceChunk['content'], + document_id: chunk.document_id, + document_name: chunk.document_name, + dataset_id: chunk.dataset_id, + image_id: chunk.image_id, + similarity: chunk.similarity ?? 0, + vector_similarity: chunk.vector_similarity ?? 0, + term_similarity: chunk.term_similarity ?? 0, + positions: (chunk.positions ?? []) as IReferenceChunk['positions'], + doc_type: chunk.doc_type, + document_metadata: chunk.document_metadata, + }; + + if (!docAggMap[chunk.document_id]) { + docAggMap[chunk.document_id] = { + count: 0, + doc_id: chunk.document_id, + doc_name: chunk.document_name, + url: chunk.url, + }; + } + docAggMap[chunk.document_id].count++; + }); + + return { chunks: chunkMap, doc_aggs: docAggMap }; +}; + export const AgentLogDetailModal: React.FC = ({ isOpen, onClose, message: derivedMessages, - reference, }) => { const { data: userInfo } = useFetchUserInfo(); const { data: canvasInfo } = useFetchAgent(); @@ -61,6 +127,7 @@ export const AgentLogDetailModal: React.FC = ({
{derivedMessages?.map((message, i) => { + const msg = message as AgentLogMessageWithReference; return ( = ({ avatar={userInfo.avatar} avatarDialog={canvasInfo.avatar} item={message as IMessage} - reference={reference} + reference={buildReferenceObject(msg.reference)} index={i} showLikeButton={false} showLog={false}