feat(admin): Implement System Knowledge Base management module
Features:
- Backend: SystemKbService with full CRUD (knowledge bases + documents)
- Backend: 8 RESTful API endpoints (list/detail/create/update/delete/upload/download)
- Backend: OSS storage integration (system/knowledge-bases/{kbId}/{docId})
- Backend: RAG engine integration (document parsing, chunking, vectorization)
- Frontend: SystemKbListPage with card-based layout
- Frontend: SystemKbDetailPage with document management table
- Frontend: Master-Detail UX pattern for better user experience
- Document upload (single/batch), download (preserving original filename), delete
Technical:
- Database migration for system_knowledge_bases and system_kb_documents tables
- OSSAdapter.getSignedUrl with Content-Disposition for original filename
- Reuse RAG engine from common/rag for document processing
Tested: Local environment verified, all features working
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
-- Add knowledge_config field to prompt_templates
|
||||
ALTER TABLE "capability_schema"."prompt_templates" ADD COLUMN "knowledge_config" JSONB;
|
||||
|
||||
-- CreateTable: system_knowledge_bases
|
||||
CREATE TABLE "capability_schema"."system_knowledge_bases" (
|
||||
"id" TEXT NOT NULL,
|
||||
"code" VARCHAR(50) NOT NULL,
|
||||
"name" VARCHAR(100) NOT NULL,
|
||||
"description" TEXT,
|
||||
"category" VARCHAR(50),
|
||||
"document_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"total_tokens" INTEGER NOT NULL DEFAULT 0,
|
||||
"status" VARCHAR(20) NOT NULL DEFAULT 'active',
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "system_knowledge_bases_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable: system_kb_documents
|
||||
CREATE TABLE "capability_schema"."system_kb_documents" (
|
||||
"id" TEXT NOT NULL,
|
||||
"kb_id" TEXT NOT NULL,
|
||||
"filename" VARCHAR(255) NOT NULL,
|
||||
"file_path" VARCHAR(500),
|
||||
"file_size" INTEGER,
|
||||
"file_type" VARCHAR(50),
|
||||
"content" TEXT,
|
||||
"token_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"status" VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
"error_message" TEXT,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "system_kb_documents_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "system_knowledge_bases_code_key" ON "capability_schema"."system_knowledge_bases"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_system_kb_category" ON "capability_schema"."system_knowledge_bases"("category");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_system_kb_status" ON "capability_schema"."system_knowledge_bases"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_system_kb_docs_kb_id" ON "capability_schema"."system_kb_documents"("kb_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_system_kb_docs_status" ON "capability_schema"."system_kb_documents"("status");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "capability_schema"."system_kb_documents" ADD CONSTRAINT "system_kb_documents_kb_id_fkey" FOREIGN KEY ("kb_id") REFERENCES "capability_schema"."system_knowledge_bases"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user