Files
AIclinicalresearch/backend/prisma/migrations/20260128_add_system_knowledge_base/migration.sql
HaHafeng 0d9e6b9922 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
2026-01-28 21:57:44 +08:00

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;