From 9a3547b70ba17ccbe1f9274398257dc68ecfd49f Mon Sep 17 00:00:00 2001 From: wangys <3401275564@qq.com> Date: Thu, 4 Dec 2025 17:23:04 +0800 Subject: [PATCH] =?UTF-8?q?web=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../postgres/sql/createTableKnowledge.sql | 35 ++++++++++--------- .../{portal => platform}/Dockerfile.dev | 0 .../packages/{portal => platform}/index.html | 0 .../src/views/ImportMapsExample.vue | 0 urbanLifelineWeb/packages/shared/api/index.ts | 0 5 files changed, 18 insertions(+), 17 deletions(-) rename urbanLifelineWeb/packages/{portal => platform}/Dockerfile.dev (100%) rename urbanLifelineWeb/packages/{portal => platform}/index.html (100%) rename urbanLifelineWeb/packages/{portal => platform}/src/views/ImportMapsExample.vue (100%) create mode 100644 urbanLifelineWeb/packages/shared/api/index.ts diff --git a/urbanLifelineServ/.bin/database/postgres/sql/createTableKnowledge.sql b/urbanLifelineServ/.bin/database/postgres/sql/createTableKnowledge.sql index df5b614..57aa9ba 100644 --- a/urbanLifelineServ/.bin/database/postgres/sql/createTableKnowledge.sql +++ b/urbanLifelineServ/.bin/database/postgres/sql/createTableKnowledge.sql @@ -54,9 +54,8 @@ CREATE TABLE knowledge.tb_knowledge_document ( file_path VARCHAR(500), -- 文件路径 file_size BIGINT, -- 文件大小(字节) mime_type VARCHAR(100), -- MIME类型 - version INTEGER DEFAULT 1, -- 版本号(自动递增) - root_doc_id VARCHAR(50), -- 根文档ID(版本组标识) - is_current BOOLEAN DEFAULT true, -- 是否当前使用的版本 + version INTEGER DEFAULT 1, -- 文档版本号(仅做记录) + root_doc_id VARCHAR(50), -- 根文档ID(版本组标识,保留用于整体版本管理) tags TEXT[], -- 文档标签数组 keywords TEXT[], -- 关键词数组(AI提取) embedding_status VARCHAR(20) DEFAULT 'pending', -- 向量化状态:pending-待处理/processing-处理中/completed-完成/failed-失败 @@ -75,7 +74,6 @@ CREATE TABLE knowledge.tb_knowledge_document ( deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 PRIMARY KEY (doc_id), UNIQUE (optsn), - FOREIGN KEY (knowledge_id) REFERENCES knowledge.tb_knowledge_base(knowledge_id) ); CREATE INDEX idx_doc_kb ON knowledge.tb_knowledge_document(knowledge_id) WHERE deleted = false; @@ -83,13 +81,12 @@ CREATE INDEX idx_doc_service ON knowledge.tb_knowledge_document(service_type) WH CREATE INDEX idx_doc_category ON knowledge.tb_knowledge_document(category) WHERE deleted = false; CREATE INDEX idx_doc_embedding_status ON knowledge.tb_knowledge_document(embedding_status) WHERE deleted = false; CREATE INDEX idx_doc_tags ON knowledge.tb_knowledge_document USING GIN(tags) WHERE deleted = false; -CREATE INDEX idx_doc_root_current ON knowledge.tb_knowledge_document(root_doc_id, is_current) WHERE deleted = false; +CREATE INDEX idx_doc_root ON knowledge.tb_knowledge_document(root_doc_id) WHERE deleted = false; -COMMENT ON TABLE knowledge.tb_knowledge_document IS '知识文档表'; +COMMENT ON TABLE knowledge.tb_knowledge_document IS '知识文档表(文档级元数据,版本控制在chunk级别)'; COMMENT ON COLUMN knowledge.tb_knowledge_document.service_type IS '服务类型(从知识库继承,用于服务间隔离)'; -COMMENT ON COLUMN knowledge.tb_knowledge_document.version IS '版本号(整数,每次创建新版本自动+1)'; -COMMENT ON COLUMN knowledge.tb_knowledge_document.root_doc_id IS '根文档ID(同一文档的所有版本共享此ID,首次上传时等于doc_id)'; -COMMENT ON COLUMN knowledge.tb_knowledge_document.is_current IS '是否当前使用的版本(每个root_doc_id只有一个is_current=true)'; +COMMENT ON COLUMN knowledge.tb_knowledge_document.version IS '文档版本号(仅做记录,实际版本控制在chunk级别)'; +COMMENT ON COLUMN knowledge.tb_knowledge_document.root_doc_id IS '根文档ID(用于文档整体版本管理,可选)'; COMMENT ON COLUMN knowledge.tb_knowledge_document.embedding_status IS '向量化状态:pending/processing/completed/failed'; -- 知识文档片段表(用于RAG检索) @@ -104,7 +101,9 @@ CREATE TABLE knowledge.tb_knowledge_chunk ( content_length INTEGER, -- 内容长度 embedding vector(1536), -- 向量嵌入(假设使用OpenAI 1536维) chunk_type VARCHAR(20) DEFAULT 'text', -- 片段类型:text-文本/table-表格/image-图片 - version INTEGER DEFAULT 1, -- 分段版本号(用于乐观锁,每次编辑+1) + version INTEGER DEFAULT 1, -- chunk版本号(每次修改自动+1) + root_chunk_id VARCHAR(50), -- 根chunk ID(同一chunk的不同版本共享此ID) + is_current BOOLEAN DEFAULT true, -- 是否当前使用的版本 position_info JSONB, -- 位置信息(页码、坐标等) metadata JSONB, -- 片段元数据 dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径 @@ -114,18 +113,20 @@ CREATE TABLE knowledge.tb_knowledge_chunk ( deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 PRIMARY KEY (chunk_id), UNIQUE (optsn), - FOREIGN KEY (doc_id) REFERENCES knowledge.tb_knowledge_document(doc_id), - FOREIGN KEY (knowledge_id) REFERENCES knowledge.tb_knowledge_base(knowledge_id) ); CREATE INDEX idx_chunk_doc ON knowledge.tb_knowledge_chunk(doc_id) WHERE deleted = false; CREATE INDEX idx_chunk_kb ON knowledge.tb_knowledge_chunk(knowledge_id) WHERE deleted = false; --- 向量检索索引(需要安装pgvector扩展) --- CREATE INDEX idx_chunk_embedding ON knowledge.tb_knowledge_chunk USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100); +CREATE INDEX idx_chunk_root_current ON knowledge.tb_knowledge_chunk(root_chunk_id, is_current) WHERE deleted = false; +CREATE INDEX idx_chunk_current ON knowledge.tb_knowledge_chunk(is_current) WHERE deleted = false AND is_current = true; +-- 向量检索索引(需要安装pgvector扩展,建议只索引当前版本) +-- CREATE INDEX idx_chunk_embedding ON knowledge.tb_knowledge_chunk USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100) WHERE deleted = false AND is_current = true; -COMMENT ON TABLE knowledge.tb_knowledge_chunk IS '知识文档片段表(RAG检索)'; -COMMENT ON COLUMN knowledge.tb_knowledge_chunk.version IS '分段版本号(用于乐观锁,防止并发编辑冲突)'; -COMMENT ON COLUMN knowledge.tb_knowledge_chunk.embedding IS '向量嵌入(需要pgvector扩展)'; +COMMENT ON TABLE knowledge.tb_knowledge_chunk IS '知识文档片段表(RAG检索基本单位,支持chunk级版本控制)'; +COMMENT ON COLUMN knowledge.tb_knowledge_chunk.version IS 'chunk版本号(整数,每次修改自动+1)'; +COMMENT ON COLUMN knowledge.tb_knowledge_chunk.root_chunk_id IS '根chunk ID(同一chunk的所有版本共享此ID,首次创建时等于chunk_id)'; +COMMENT ON COLUMN knowledge.tb_knowledge_chunk.is_current IS '是否当前使用的版本(每个root_chunk_id只有一个is_current=true,RAG检索时只使用当前版本)'; +COMMENT ON COLUMN knowledge.tb_knowledge_chunk.embedding IS '向量嵌入(需要pgvector扩展,建议只为is_current=true的chunk生成)'; -- 知识访问日志表 DROP TABLE IF EXISTS knowledge.tb_knowledge_access_log CASCADE; diff --git a/urbanLifelineWeb/packages/portal/Dockerfile.dev b/urbanLifelineWeb/packages/platform/Dockerfile.dev similarity index 100% rename from urbanLifelineWeb/packages/portal/Dockerfile.dev rename to urbanLifelineWeb/packages/platform/Dockerfile.dev diff --git a/urbanLifelineWeb/packages/portal/index.html b/urbanLifelineWeb/packages/platform/index.html similarity index 100% rename from urbanLifelineWeb/packages/portal/index.html rename to urbanLifelineWeb/packages/platform/index.html diff --git a/urbanLifelineWeb/packages/portal/src/views/ImportMapsExample.vue b/urbanLifelineWeb/packages/platform/src/views/ImportMapsExample.vue similarity index 100% rename from urbanLifelineWeb/packages/portal/src/views/ImportMapsExample.vue rename to urbanLifelineWeb/packages/platform/src/views/ImportMapsExample.vue diff --git a/urbanLifelineWeb/packages/shared/api/index.ts b/urbanLifelineWeb/packages/shared/api/index.ts new file mode 100644 index 0000000..e69de29