| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- -- 灵越智报 v2.0 补充表结构
- -- PostgreSQL 15+
- -- 根据产品设计方案补充的表结构
- -- 注意: ID 使用 VARCHAR(36) 以兼容 MyBatis-Plus 的 ASSIGN_UUID 策略
- -- 注意: graph_nodes 和 graph_relations 表已在 graph_tables.sql 中定义,此处不再重复
- -- ============================================
- -- 1. 规则表(rules)
- -- ============================================
- CREATE TABLE IF NOT EXISTS rules (
- id VARCHAR(36) PRIMARY KEY,
- user_id VARCHAR(36) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
- name VARCHAR(255) NOT NULL,
- description TEXT,
- entry_node_id VARCHAR(36) REFERENCES graph_nodes(id) ON DELETE SET NULL,
- exit_node_id VARCHAR(36) REFERENCES graph_nodes(id) ON DELETE SET NULL,
- rule_chain JSONB NOT NULL DEFAULT '[]', -- 规则链(节点ID序列)
- status VARCHAR(20) DEFAULT 'active', -- active/inactive
- metadata JSONB DEFAULT '{}',
- create_by VARCHAR(36),
- create_by_name VARCHAR(100),
- create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- update_by VARCHAR(36),
- update_by_name VARCHAR(100),
- update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
- );
- CREATE INDEX IF NOT EXISTS idx_rules_user_id ON rules(user_id);
- CREATE INDEX IF NOT EXISTS idx_rules_entry_node ON rules(entry_node_id);
- CREATE INDEX IF NOT EXISTS idx_rules_exit_node ON rules(exit_node_id);
- CREATE INDEX IF NOT EXISTS idx_rules_status ON rules(status);
- -- ============================================
- -- 4. 数据源表(data_sources)
- -- ============================================
- CREATE TABLE IF NOT EXISTS data_sources (
- id VARCHAR(36) PRIMARY KEY,
- user_id VARCHAR(36) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
- document_id VARCHAR(36) REFERENCES documents(id) ON DELETE SET NULL,
- name VARCHAR(255) NOT NULL,
- type VARCHAR(50) NOT NULL, -- table/text/image
- source_type VARCHAR(50) NOT NULL DEFAULT 'manual', -- file/manual/rule_result
- node_ids JSONB DEFAULT '{"refs": []}', -- 节点引用列表(支持 graph_node 和 document_element)
- config JSONB DEFAULT '{}', -- 数据源配置
- metadata JSONB DEFAULT '{}',
- value_type VARCHAR(20) DEFAULT 'text', -- 值类型: text/image/table/mixed
- aggregate_type VARCHAR(20) DEFAULT 'first', -- 聚合方式: first/last/concat/sum/avg/list
- separator VARCHAR(50) DEFAULT '', -- 聚合分隔符(concat时使用)
- create_by VARCHAR(36),
- create_by_name VARCHAR(100),
- create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- update_by VARCHAR(36),
- update_by_name VARCHAR(100),
- update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
- );
- CREATE INDEX IF NOT EXISTS idx_data_sources_user_id ON data_sources(user_id);
- CREATE INDEX IF NOT EXISTS idx_data_sources_document_id ON data_sources(document_id);
- CREATE INDEX IF NOT EXISTS idx_data_sources_type ON data_sources(type);
- -- ============================================
- -- 5. 模板表(templates)
- -- ============================================
- CREATE TABLE IF NOT EXISTS templates (
- id VARCHAR(36) PRIMARY KEY,
- user_id VARCHAR(36) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
- name VARCHAR(255) NOT NULL,
- content TEXT NOT NULL, -- 模板内容(带占位符)
- placeholder_mapping JSONB DEFAULT '{}', -- 占位符到数据源的映射
- source_template_id VARCHAR(36) REFERENCES templates(id) ON DELETE SET NULL, -- 复制来源
- status VARCHAR(20) DEFAULT 'active', -- active/inactive
- metadata JSONB DEFAULT '{}',
- create_by VARCHAR(36),
- create_by_name VARCHAR(100),
- create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- update_by VARCHAR(36),
- update_by_name VARCHAR(100),
- update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
- );
- CREATE INDEX IF NOT EXISTS idx_templates_user_id ON templates(user_id);
- CREATE INDEX IF NOT EXISTS idx_templates_source_template ON templates(source_template_id);
- CREATE INDEX IF NOT EXISTS idx_templates_status ON templates(status);
- -- ============================================
- -- 6. 文本存储路径表(text_storage)
- -- ============================================
- CREATE TABLE IF NOT EXISTS text_storage (
- id VARCHAR(36) PRIMARY KEY,
- document_id VARCHAR(36) NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
- file_path VARCHAR(500) NOT NULL, -- TXT文件路径
- file_size BIGINT,
- checksum VARCHAR(64), -- 文件校验和
- create_by VARCHAR(36),
- create_by_name VARCHAR(100),
- create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- update_by VARCHAR(36),
- update_by_name VARCHAR(100),
- update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
- );
- CREATE INDEX IF NOT EXISTS idx_text_storage_document_id ON text_storage(document_id);
- CREATE UNIQUE INDEX IF NOT EXISTS idx_text_storage_document_unique ON text_storage(document_id);
- -- ============================================
- -- 注意: vector_embeddings 表已在 rag_tables_compatible.sql 中定义
- -- 请勿在此重复定义,以避免表结构冲突
- -- ============================================
- -- ============================================
- -- 创建更新时间触发器
- -- ============================================
- -- 注意: graph_nodes 和 graph_relations 的触发器已在 graph_tables.sql 中定义
- -- 注意: vector_embeddings 的触发器已在 rag_tables_compatible.sql 中定义
- DROP TRIGGER IF EXISTS update_rules_update_time ON rules;
- CREATE TRIGGER update_rules_update_time BEFORE UPDATE ON rules
- FOR EACH ROW EXECUTE FUNCTION update_update_time_column();
- DROP TRIGGER IF EXISTS update_data_sources_update_time ON data_sources;
- CREATE TRIGGER update_data_sources_update_time BEFORE UPDATE ON data_sources
- FOR EACH ROW EXECUTE FUNCTION update_update_time_column();
- DROP TRIGGER IF EXISTS update_templates_update_time ON templates;
- CREATE TRIGGER update_templates_update_time BEFORE UPDATE ON templates
- FOR EACH ROW EXECUTE FUNCTION update_update_time_column();
- DROP TRIGGER IF EXISTS update_text_storage_update_time ON text_storage;
- CREATE TRIGGER update_text_storage_update_time BEFORE UPDATE ON text_storage
- FOR EACH ROW EXECUTE FUNCTION update_update_time_column();
|