diff --git a/frontend/app/tools/knowledge/page.tsx b/frontend/app/tools/knowledge/page.tsx index 41d9b7e..f387b26 100644 --- a/frontend/app/tools/knowledge/page.tsx +++ b/frontend/app/tools/knowledge/page.tsx @@ -22,7 +22,16 @@ import { Select, } from "@/components/admin/ui"; import { adminApi, errMessage } from "@/lib/admin-api"; -import { buildKnowledgeForm, knowledgeApi, type KnowledgeDocument, type UploadPreview } from "@/lib/knowledge-api"; +import { + buildKnowledgeForm, + collectionLabel, + DEFAULT_KNOWLEDGE_COLLECTION, + KNOWLEDGE_COLLECTIONS, + knowledgeApi, + knowledgeErrorHint, + type KnowledgeDocument, + type UploadPreview, +} from "@/lib/knowledge-api"; import { isAdmin } from "@/lib/roles"; /** 切分策略,与后端 KnowledgeUploadService 支持的策略保持一致。 */ @@ -38,6 +47,7 @@ export default function KnowledgePage() { const [file, setFile] = useState(null); const [title, setTitle] = useState(""); + const [collection, setCollection] = useState(DEFAULT_KNOWLEDGE_COLLECTION); const [strategy, setStrategy] = useState("default"); const [chunkSize, setChunkSize] = useState(""); const [chunkOverlap, setChunkOverlap] = useState(""); @@ -96,6 +106,7 @@ export default function KnowledgePage() { try { const result = await knowledgeApi.preview( buildKnowledgeForm(file, { + collection_name: collection, strategy, chunk_size: chunkSize ? Number(chunkSize) : null, chunk_overlap: chunkOverlap ? Number(chunkOverlap) : null, @@ -104,7 +115,7 @@ export default function KnowledgePage() { setPreview(result); if (!title) setTitle(file.name); } catch (err) { - setError(errMessage(err, "预览失败,请检查文件格式")); + setError(knowledgeErrorHint(errMessage(err, "预览失败,请检查文件格式"))); } finally { setUploading(false); } @@ -112,6 +123,11 @@ export default function KnowledgePage() { const runConfirm = async () => { if (!file || uploading) return; + // 集合是后端白名单校验的必填项,缺了会直接 400「知识库集合不在允许范围内」 + if (!collection) { + setError("请先选择知识库集合"); + return; + } setUploading(true); setError(null); setNotice(null); @@ -120,16 +136,17 @@ export default function KnowledgePage() { buildKnowledgeForm(file, { title: title || file.name, doc_id: preview?.doc_id ? String(preview.doc_id) : undefined, + collection_name: collection, strategy, chunk_size: chunkSize ? Number(chunkSize) : null, chunk_overlap: chunkOverlap ? Number(chunkOverlap) : null, }) ); - setNotice(`《${title || file.name}》已入库`); + setNotice(`《${title || file.name}》已入库到「${collectionLabel(collection)}」`); resetUpload(); await load(); } catch (err) { - setError(errMessage(err, "入库失败,请稍后重试")); + setError(knowledgeErrorHint(errMessage(err, "入库失败,请稍后重试"))); } finally { setUploading(false); } @@ -211,7 +228,7 @@ export default function KnowledgePage() { -
+
+
@@ -517,7 +822,7 @@ export function AssistantLauncher() {