Skip to content

Commit 1a47ba3

Browse files
committed
✨ Modify KnowledgeBaseList and KnowledgeBaseContext components to improve knowledge base selection logic and UI behavior.
1 parent d8e060a commit 1a47ba3

2 files changed

Lines changed: 36 additions & 23 deletions

File tree

frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -335,15 +335,17 @@ const KnowledgeBaseList: React.FC<KnowledgeBaseListProps> = ({
335335
>
336336
{kb.name}
337337
</p>
338-
<button
339-
className="text-red-500 hover:text-red-700 text-xs font-medium ml-2"
340-
onClick={(e) => {
341-
e.stopPropagation();
342-
onDelete(kb.id);
343-
}}
344-
>
345-
{t("common.delete")}
346-
</button>
338+
{kb.source !== "datamate" && (
339+
<button
340+
className="text-red-500 hover:text-red-700 text-xs font-medium ml-2"
341+
onClick={(e) => {
342+
e.stopPropagation();
343+
onDelete(kb.id);
344+
}}
345+
>
346+
{t("common.delete")}
347+
</button>
348+
)}
347349
</div>
348350
<div
349351
className={`flex flex-wrap items-center ${KB_LAYOUT.TAG_MARGIN} ${KB_LAYOUT.TAG_SPACING}`}
@@ -366,19 +368,19 @@ const KnowledgeBaseList: React.FC<KnowledgeBaseListProps> = ({
366368
})}
367369
</span>
368370

369-
{/* Only show source, creation date, and model tags when there are valid documents or chunks */}
371+
{/* Always show source tag regardless of document/chunk count */}
372+
<span
373+
className={`inline-flex items-center ${KB_LAYOUT.TAG_PADDING} ${KB_LAYOUT.TAG_ROUNDED} ${KB_LAYOUT.TAG_TEXT} bg-gray-200 text-gray-800 border border-gray-200 mr-1`}
374+
>
375+
{t("knowledgeBase.tag.source", {
376+
source: kb.source,
377+
})}
378+
</span>
379+
380+
{/* Only show creation date, model tags when there are valid documents or chunks */}
370381
{((kb.documentCount || 0) > 0 ||
371382
(kb.chunkCount || 0) > 0) && (
372383
<>
373-
{/* Knowledge base source tag */}
374-
<span
375-
className={`inline-flex items-center ${KB_LAYOUT.TAG_PADDING} ${KB_LAYOUT.TAG_ROUNDED} ${KB_LAYOUT.TAG_TEXT} bg-gray-200 text-gray-800 border border-gray-200 mr-1`}
376-
>
377-
{t("knowledgeBase.tag.source", {
378-
source: kb.source,
379-
})}
380-
</span>
381-
382384
{/* Creation date tag - only show date */}
383385
<span
384386
className={`inline-flex items-center ${KB_LAYOUT.TAG_PADDING} ${KB_LAYOUT.TAG_ROUNDED} ${KB_LAYOUT.TAG_TEXT} bg-gray-200 text-gray-800 border border-gray-200 mr-1`}

frontend/app/[locale]/knowledges/contexts/KnowledgeBaseContext.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,22 @@ export const KnowledgeBaseProvider: React.FC<KnowledgeBaseProviderProps> = ({
166166
if (!state.currentEmbeddingModel) {
167167
return false;
168168
}
169-
// DataMate knowledge bases are always selectable (even if model doesn't match)
169+
170+
// Check if knowledge base has content (documents or chunks)
171+
const hasContent =
172+
(kb.documentCount || 0) > 0 || (kb.chunkCount || 0) > 0;
173+
174+
// Empty knowledge bases cannot be selected
175+
if (!hasContent) {
176+
return false;
177+
}
178+
179+
// DataMate knowledge bases are selectable if they have content (even if model doesn't match)
170180
if (kb.source === "datamate") {
171181
return true;
172182
}
173-
// Only selectable when knowledge base model exactly matches current model
183+
184+
// For local knowledge bases, only selectable when model exactly matches current model
174185
return (
175186
kb.embeddingModel === "unknown" ||
176187
kb.embeddingModel === state.currentEmbeddingModel
@@ -433,8 +444,8 @@ export const KnowledgeBaseProvider: React.FC<KnowledgeBaseProviderProps> = ({
433444
const refreshKnowledgeBaseData = useCallback(
434445
async (forceRefresh = false) => {
435446
try {
436-
// Get latest knowledge base data directly from server, but don't reload user selections and skip DataMate sync
437-
await fetchKnowledgeBases(false, false, false);
447+
// Get latest knowledge base data directly from server, but don't reload user selections, include DataMate sync to prevent DataMate KBs from disappearing
448+
await fetchKnowledgeBases(false, false, true);
438449

439450
// If there is an active knowledge base, also refresh its document information
440451
if (state.activeKnowledgeBase) {

0 commit comments

Comments
 (0)