feat(db): 启动本项目专属知识库容器并完成法规数据无损迁移与解耦
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+83
-27
@@ -1,34 +1,90 @@
|
||||
-- 共享知识库 (Shared Knowledge Base) 初始化脚本
|
||||
-- pgvector 扩展及基础条目库
|
||||
-- =============================================================================
|
||||
-- 共享知识库基础设施 (Shared Knowledge Base) 数据库初始化脚本
|
||||
-- 适用于三套环境服务共享的 pgvector 向量数据库 (shuimu-kb-shared:5432)
|
||||
-- 支持多领域知识中枢:法规标准 (Regulatory) + 项目数字资产 (ProjectAsset) + 员工能力模型 (StaffCapability)
|
||||
-- =============================================================================
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS vector;
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS kb_documents (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
doc_no TEXT NOT NULL DEFAULT '',
|
||||
category TEXT NOT NULL DEFAULT '',
|
||||
content TEXT NOT NULL,
|
||||
embedding vector(1024),
|
||||
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
is_active BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
-- =============================================================================
|
||||
-- 领域一:法规标准知识领域 (Domain: Regulatory)
|
||||
-- 包含医疗器械法律法规、国家标准(GB/T)、行业标准(YY)及指导原则
|
||||
-- 注:reg_* 系列表结构及 2,907 篇法规基线数据由流式迁移转储脚本导入
|
||||
-- =============================================================================
|
||||
|
||||
-- =============================================================================
|
||||
-- 领域二:项目数字资产知识领域 (Domain: ProjectAsset, 预留与扩展)
|
||||
-- 沉淀已完成项目的可行性报告、CDO 报价模型、系统方案、BOM、踩坑避险记录
|
||||
-- =============================================================================
|
||||
CREATE TABLE IF NOT EXISTS asset_projects (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
project_code TEXT UNIQUE NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
device_type TEXT NOT NULL DEFAULT '',
|
||||
customer_name TEXT NOT NULL DEFAULT '',
|
||||
stage_reached TEXT NOT NULL DEFAULT '',
|
||||
summary TEXT NOT NULL DEFAULT '',
|
||||
metadata_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_kb_doc_title ON kb_documents USING gin (title gin_trgm_ops);
|
||||
CREATE INDEX IF NOT EXISTS idx_kb_doc_no ON kb_documents(doc_no);
|
||||
CREATE INDEX IF NOT EXISTS idx_kb_category ON kb_documents(category);
|
||||
|
||||
-- 共享法规/知识切片表
|
||||
CREATE TABLE IF NOT EXISTS kb_chunks (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
document_id BIGINT REFERENCES kb_documents(id) ON DELETE CASCADE,
|
||||
chunk_index INT NOT NULL DEFAULT 0,
|
||||
chunk_text TEXT NOT NULL,
|
||||
embedding vector(1024),
|
||||
tokens_count INT NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
CREATE TABLE IF NOT EXISTS asset_documents (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
project_id BIGINT REFERENCES asset_projects(id) ON DELETE CASCADE,
|
||||
doc_type TEXT NOT NULL, -- feasibility, quote, cad, pcb, bom, testing
|
||||
title TEXT NOT NULL,
|
||||
file_path TEXT NOT NULL,
|
||||
metadata_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_kb_chunk_doc ON kb_chunks(document_id);
|
||||
CREATE TABLE IF NOT EXISTS asset_chunks (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
project_id BIGINT REFERENCES asset_projects(id) ON DELETE CASCADE,
|
||||
document_id BIGINT REFERENCES asset_documents(id) ON DELETE CASCADE,
|
||||
chunk_title TEXT NOT NULL DEFAULT '',
|
||||
content TEXT NOT NULL,
|
||||
cite_key TEXT NOT NULL DEFAULT '',
|
||||
embedding vector(1024),
|
||||
tsv tsvector,
|
||||
metadata_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_asset_chunks_project ON asset_chunks(project_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_asset_chunks_doc ON asset_chunks(document_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_asset_chunks_tsv ON asset_chunks USING gin (tsv);
|
||||
|
||||
-- =============================================================================
|
||||
-- 领域三:员工工作能力知识领域 (Domain: StaffCapability, 预留与扩展)
|
||||
-- 沉淀研发工程师专长技能图谱、历史人效系数、工时评估模型,辅助智能排班与精准估算
|
||||
-- =============================================================================
|
||||
CREATE TABLE IF NOT EXISTS staff_profiles (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
staff_code TEXT UNIQUE NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
role_category TEXT NOT NULL, -- optical, mechanical, hardware, firmware, algorithm, regulatory, qa
|
||||
seniority_level TEXT NOT NULL DEFAULT 'senior',
|
||||
skills TEXT[] NOT NULL DEFAULT '{}',
|
||||
hourly_rate_cny NUMERIC(10,2) NOT NULL DEFAULT 0.00,
|
||||
metadata_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS staff_experience_records (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
staff_id BIGINT REFERENCES staff_profiles(id) ON DELETE CASCADE,
|
||||
project_code TEXT NOT NULL DEFAULT '',
|
||||
task_type TEXT NOT NULL,
|
||||
planned_hours NUMERIC(8,2) NOT NULL DEFAULT 0.00,
|
||||
actual_hours NUMERIC(8,2) NOT NULL DEFAULT 0.00,
|
||||
variance_ratio NUMERIC(5,2) NOT NULL DEFAULT 1.00,
|
||||
learnings TEXT NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_staff_exp_staff ON staff_experience_records(staff_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_staff_exp_task ON staff_experience_records(task_type);
|
||||
|
||||
Reference in New Issue
Block a user