unify chat across docs

This commit is contained in:
DarioGii 2025-11-15 20:41:20 +00:00
parent e5212f7f63
commit 2fc7eedc45

View File

@ -39,6 +39,8 @@ interface ChatMessage {
confidence?: number; confidence?: number;
modelUsed?: string; modelUsed?: string;
createdAt: Date; createdAt: Date;
documentId?: string;
documentName?: string;
} }
function createMessageId() { function createMessageId() {
@ -89,6 +91,7 @@ const ChatbotDrawer = () => {
const sessionStatus = selectedSessionEntry?.status ?? 'idle'; const sessionStatus = selectedSessionEntry?.status ?? 'idle';
const sessionError = selectedSessionEntry?.error; const sessionError = selectedSessionEntry?.error;
const sessionInfo: ChatbotSessionInfo | null = selectedSessionEntry?.session ?? null; const sessionInfo: ChatbotSessionInfo | null = selectedSessionEntry?.session ?? null;
const selectedDocumentName = selectedFile?.name ?? selectedSessionEntry?.fileName;
const contextStats = const contextStats =
selectedSessionEntry?.status === 'ready' && selectedSessionEntry?.characterCount !== undefined selectedSessionEntry?.status === 'ready' && selectedSessionEntry?.characterCount !== undefined
? { ? {
@ -163,11 +166,6 @@ const ChatbotDrawer = () => {
} }
}, [sessionInfo?.sessionId]); }, [sessionInfo?.sessionId]);
useEffect(() => {
setMessages([]);
setWarnings([]);
}, [selectedFileId]);
const maybeShowUsageWarning = (usage?: ChatbotUsageSummary | null) => { const maybeShowUsageWarning = (usage?: ChatbotUsageSummary | null) => {
if (!usage) { if (!usage) {
return; return;
@ -286,6 +284,8 @@ const ChatbotDrawer = () => {
role: 'user', role: 'user',
content: trimmedPrompt, content: trimmedPrompt,
createdAt: new Date(), createdAt: new Date(),
documentId: selectedFileId,
documentName: selectedDocumentName,
}; };
setMessages((prev) => [...prev, userMessage]); setMessages((prev) => [...prev, userMessage]);
setPrompt(''); setPrompt('');
@ -322,6 +322,8 @@ const ChatbotDrawer = () => {
confidence: reply.confidence, confidence: reply.confidence,
modelUsed: reply.modelUsed, modelUsed: reply.modelUsed,
createdAt: new Date(), createdAt: new Date(),
documentId: selectedFileId,
documentName: selectedDocumentName,
}); });
const fileOptions = useMemo( const fileOptions = useMemo(
@ -398,7 +400,7 @@ const ChatbotDrawer = () => {
boxShadow: '0 2px 12px rgba(16,24,40,0.06)', boxShadow: '0 2px 12px rgba(16,24,40,0.06)',
}} }}
> >
<Group justify="space-between" mb={4} gap="xs"> <Group justify="space-between" mb={4} gap="xs" align="flex-start">
<Text size="xs" c={isUser ? 'rgba(255,255,255,0.8)' : 'dimmed'} tt="uppercase"> <Text size="xs" c={isUser ? 'rgba(255,255,255,0.8)' : 'dimmed'} tt="uppercase">
{isUser ? t('chatbot.userLabel', 'You') : t('chatbot.botLabel', 'Stirling Bot')} {isUser ? t('chatbot.userLabel', 'You') : t('chatbot.botLabel', 'Stirling Bot')}
</Text> </Text>
@ -422,6 +424,16 @@ const ChatbotDrawer = () => {
{t('chatbot.modelTag', 'Model: {{name}}', { name: message.modelUsed })} {t('chatbot.modelTag', 'Model: {{name}}', { name: message.modelUsed })}
</Text> </Text>
)} )}
{message.documentName && (
<Badge
size="xs"
variant="light"
color={isUser ? 'blue' : 'gray'}
mt={6}
>
{message.documentName}
</Badge>
)}
</Box> </Box>
</Box> </Box>
); );