import { MessageType } from '@/constants/chat'; import { IConversation, IReference } from '@/interfaces/database/chat'; import { EmptyConversationId } from './constants'; import { IMessage } from './interface'; export const isConversationIdExist = (conversationId: string) => { return conversationId !== EmptyConversationId && conversationId !== ''; }; export const getDocumentIdsFromConversionReference = (data: IConversation) => { const documentIds = data.reference.reduce( (pre: Array, cur: IReference) => { cur.doc_aggs ?.map((x) => x.doc_id) .forEach((x) => { if (pre.every((y) => y !== x)) { pre.push(x); } }); return pre; }, [], ); return documentIds.join(','); }; export const buildMessageItemReference = ( conversation: { message: IMessage[]; reference: IReference[] }, message: IMessage, ) => { const assistantMessages = conversation.message ?.filter((x) => x.role === MessageType.Assistant) .slice(1); const referenceIndex = assistantMessages.findIndex( (x) => x.id === message.id, ); const reference = message?.reference ? message?.reference : conversation.reference[referenceIndex]; return reference; };