supplement_tables.sql 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. -- 灵越智报 v2.0 补充表结构
  2. -- PostgreSQL 15+
  3. -- 根据产品设计方案补充的表结构
  4. -- 注意: ID 使用 VARCHAR(36) 以兼容 MyBatis-Plus 的 ASSIGN_UUID 策略
  5. -- 注意: graph_nodes 和 graph_relations 表已在 graph_tables.sql 中定义,此处不再重复
  6. -- ============================================
  7. -- 1. 规则表(rules)
  8. -- ============================================
  9. CREATE TABLE IF NOT EXISTS rules (
  10. id VARCHAR(36) PRIMARY KEY,
  11. user_id VARCHAR(36) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  12. name VARCHAR(255) NOT NULL,
  13. description TEXT,
  14. entry_node_id VARCHAR(36) REFERENCES graph_nodes(id) ON DELETE SET NULL,
  15. exit_node_id VARCHAR(36) REFERENCES graph_nodes(id) ON DELETE SET NULL,
  16. rule_chain JSONB NOT NULL DEFAULT '[]', -- 规则链(节点ID序列)
  17. status VARCHAR(20) DEFAULT 'active', -- active/inactive
  18. metadata JSONB DEFAULT '{}',
  19. create_by VARCHAR(36),
  20. create_by_name VARCHAR(100),
  21. create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  22. update_by VARCHAR(36),
  23. update_by_name VARCHAR(100),
  24. update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  25. );
  26. CREATE INDEX IF NOT EXISTS idx_rules_user_id ON rules(user_id);
  27. CREATE INDEX IF NOT EXISTS idx_rules_entry_node ON rules(entry_node_id);
  28. CREATE INDEX IF NOT EXISTS idx_rules_exit_node ON rules(exit_node_id);
  29. CREATE INDEX IF NOT EXISTS idx_rules_status ON rules(status);
  30. -- ============================================
  31. -- 4. 数据源表(data_sources)
  32. -- ============================================
  33. CREATE TABLE IF NOT EXISTS data_sources (
  34. id VARCHAR(36) PRIMARY KEY,
  35. user_id VARCHAR(36) NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  36. document_id VARCHAR(36) REFERENCES documents(id) ON DELETE SET NULL,
  37. name VARCHAR(255) NOT NULL,
  38. type VARCHAR(50) NOT NULL, -- table/text/image
  39. source_type VARCHAR(50) NOT NULL DEFAULT 'manual', -- file/manual/rule_result
  40. node_ids JSONB DEFAULT '{"refs": []}', -- 节点引用列表(支持 graph_node 和 document_element)
  41. config JSONB DEFAULT '{}', -- 数据源配置
  42. metadata JSONB DEFAULT '{}',
  43. value_type VARCHAR(20) DEFAULT 'text', -- 值类型: text/image/table/mixed
  44. aggregate_type VARCHAR(20) DEFAULT 'first', -- 聚合方式: first/last/concat/sum/avg/list
  45. separator VARCHAR(50) DEFAULT '', -- 聚合分隔符(concat时使用)
  46. create_by VARCHAR(36),
  47. create_by_name VARCHAR(100),
  48. create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  49. update_by VARCHAR(36),
  50. update_by_name VARCHAR(100),
  51. update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  52. );
  53. CREATE INDEX IF NOT EXISTS idx_data_sources_user_id ON data_sources(user_id);
  54. CREATE INDEX IF NOT EXISTS idx_data_sources_document_id ON data_sources(document_id);
  55. CREATE INDEX IF NOT EXISTS idx_data_sources_type ON data_sources(type);
  56. -- ============================================
  57. -- 5. 模板表(templates)
  58. -- ============================================
  59. -- 注意: templates 表已迁移至 template_tables.sql(v2.0 版本)
  60. -- 新版包含: templates, source_files, variables, generations
  61. -- 请勿在此重复定义
  62. -- ============================================
  63. -- 6. 文本存储路径表(text_storage)
  64. -- ============================================
  65. CREATE TABLE IF NOT EXISTS text_storage (
  66. id VARCHAR(36) PRIMARY KEY,
  67. document_id VARCHAR(36) NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
  68. file_path VARCHAR(500) NOT NULL, -- TXT文件路径
  69. file_size BIGINT,
  70. checksum VARCHAR(64), -- 文件校验和
  71. create_by VARCHAR(36),
  72. create_by_name VARCHAR(100),
  73. create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  74. update_by VARCHAR(36),
  75. update_by_name VARCHAR(100),
  76. update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  77. );
  78. CREATE INDEX IF NOT EXISTS idx_text_storage_document_id ON text_storage(document_id);
  79. CREATE UNIQUE INDEX IF NOT EXISTS idx_text_storage_document_unique ON text_storage(document_id);
  80. -- ============================================
  81. -- 注意: vector_embeddings 表已在 rag_tables_compatible.sql 中定义
  82. -- 请勿在此重复定义,以避免表结构冲突
  83. -- ============================================
  84. -- ============================================
  85. -- 创建更新时间触发器
  86. -- ============================================
  87. -- 注意: graph_nodes 和 graph_relations 的触发器已在 graph_tables.sql 中定义
  88. -- 注意: vector_embeddings 的触发器已在 rag_tables_compatible.sql 中定义
  89. DROP TRIGGER IF EXISTS update_rules_update_time ON rules;
  90. CREATE TRIGGER update_rules_update_time BEFORE UPDATE ON rules
  91. FOR EACH ROW EXECUTE FUNCTION update_update_time_column();
  92. DROP TRIGGER IF EXISTS update_data_sources_update_time ON data_sources;
  93. CREATE TRIGGER update_data_sources_update_time BEFORE UPDATE ON data_sources
  94. FOR EACH ROW EXECUTE FUNCTION update_update_time_column();
  95. -- templates 触发器已迁移至 template_tables.sql
  96. DROP TRIGGER IF EXISTS update_text_storage_update_time ON text_storage;
  97. CREATE TRIGGER update_text_storage_update_time BEFORE UPDATE ON text_storage
  98. FOR EACH ROW EXECUTE FUNCTION update_update_time_column();