feat: implement RAG-enabled chat hook and admin file upload component

This commit is contained in:
RaymondVerhoef
2026-05-24 16:59:11 +02:00
parent 881148357e
commit 8e01b21a50
5 changed files with 30 additions and 54 deletions

View File

@@ -36,9 +36,16 @@ const UploadZone = ({ onUploadComplete }) => {
})
.catch((err) => {
const isCancelled = err?.name === 'AbortError';
let errorMsg = err?.message || 'Unknown error';
if (err?.name === 'LLMTruncatedError') {
errorMsg = 'File is too large for the AI context window. Please split into smaller chunks.';
} else if (err?.name === 'LLMValidationError') {
errorMsg = 'AI output was malformed (not JSON). Please try again.';
}
setQueue((q) => q.map((item) =>
item.id === next.id
? { ...item, status: isCancelled ? 'cancelled' : 'failed', error: isCancelled ? null : err.message }
? { ...item, status: isCancelled ? 'cancelled' : 'failed', error: isCancelled ? null : errorMsg }
: item
));
})

View File

@@ -193,13 +193,24 @@ export function useChat({ user, isAdmin }) {
} catch (e) {
console.error('[R42] chat error', e);
setErrored(true);
const isKey = /api key/i.test(e?.message || '');
let errorContent = STRINGS.errorGeneric;
const errorMsg = e?.message || '';
if (e?.name === 'LLMTruncatedError') {
errorContent = 'Mijn circuits zijn overbelast (Token Limiet bereikt). Kun je je vraag korter of specifieker maken?';
} else if (e?.name === 'LLMValidationError') {
errorContent = 'Mijn antwoord was helaas beschadigd of incorrect geformatteerd. Kun je het nog eens proberen?';
} else if (/api key/i.test(errorMsg)) {
errorContent = STRINGS.errorNoKey;
}
setMessages(prev => [
...prev,
{
id: `m_${Date.now()}_e`,
role: 'error',
content: isKey ? STRINGS.errorNoKey : STRINGS.errorGeneric,
content: errorContent,
ts: Date.now(),
},
]);