Files
Agent-System/deploy/postgres/kb_init.sql
T

91 lines
4.6 KiB
SQL

-- =============================================================================
-- 共享知识库基础设施 (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);