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
55 lines
2.1 KiB
SQL
55 lines
2.1 KiB
SQL
-- 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;
|