-- ============================================================================= -- 共享知识库基础设施 (Shared Knowledge Base) 数据库初始化脚本 -- 适用于三套环境服务共享的 pgvector 向量数据库 (shuimu-kb-shared:5432) -- 支持多领域知识中枢:法规标准 (Regulatory) + 项目数字资产 (ProjectAsset) + 员工能力模型 (StaffCapability) -- ============================================================================= CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS pg_trgm; -- ============================================================================= -- 领域一:法规标准知识领域 (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 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 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);