|
|
@@ -2633,6 +2633,94 @@ try {
|
|
|
} catch (Exception e) {
|
|
|
// 列已存在,忽略错误
|
|
|
}
|
|
|
+
|
|
|
+ // 创建维度配置表
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS product_dimension_config (" +
|
|
|
+ "id BIGINT PRIMARY KEY AUTO_INCREMENT, " +
|
|
|
+ "dimension_code VARCHAR(50) NOT NULL UNIQUE COMMENT '维度代码: body/mind/wisdom/action/wealth', " +
|
|
|
+ "dimension_name VARCHAR(100) NOT NULL COMMENT '维度名称', " +
|
|
|
+ "dimension_type VARCHAR(50) NOT NULL DEFAULT 'five' COMMENT '类型: five(五维)/action(行动)/other', " +
|
|
|
+ "parent_id BIGINT COMMENT '父级ID,无父级为NULL', " +
|
|
|
+ "sort INT DEFAULT 0 COMMENT '排序', " +
|
|
|
+ "enabled TINYINT(1) DEFAULT 1 COMMENT '启用: 0禁用 1启用', " +
|
|
|
+ "dify_dataset_id VARCHAR(100) COMMENT 'Dify Dataset ID,不填则不同步', " +
|
|
|
+ "remark VARCHAR(500) COMMENT '备注', " +
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP " +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维度配置表'");
|
|
|
+ log.info("已创建product_dimension_config表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建product_dimension_config表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建知识库表
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS dan_knowledge_base (" +
|
|
|
+ "id BIGINT PRIMARY KEY AUTO_INCREMENT, " +
|
|
|
+ "title VARCHAR(200) NOT NULL COMMENT '知识标题', " +
|
|
|
+ "content TEXT NOT NULL COMMENT '知识内容', " +
|
|
|
+ "sort INT DEFAULT 0 COMMENT '排序', " +
|
|
|
+ "status TINYINT(1) DEFAULT 1 COMMENT '状态: 0禁用 1启用', " +
|
|
|
+ "remark VARCHAR(500) COMMENT '备注', " +
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP " +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库表'");
|
|
|
+ log.info("已创建dan_knowledge_base表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建dan_knowledge_base表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建标签表
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS dan_knowledge_tag (" +
|
|
|
+ "id BIGINT PRIMARY KEY AUTO_INCREMENT, " +
|
|
|
+ "tag_name VARCHAR(100) NOT NULL UNIQUE COMMENT '标签名', " +
|
|
|
+ "tag_type VARCHAR(50) DEFAULT 'custom' COMMENT '标签类型: custom/auto', " +
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP " +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签表'");
|
|
|
+ log.info("已创建dan_knowledge_tag表");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建dan_knowledge_tag表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建知识-维度关联表
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS dan_knowledge_base_dimension (" +
|
|
|
+ "id BIGINT PRIMARY KEY AUTO_INCREMENT, " +
|
|
|
+ "knowledge_id BIGINT NOT NULL COMMENT '知识库ID', " +
|
|
|
+ "dimension_id BIGINT NOT NULL COMMENT '维度配置ID', " +
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "UNIQUE KEY uk_knowledge_dimension (knowledge_id, dimension_id) " +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识-维度关联表'");
|
|
|
+ log.info("已创建dan_knowledge_base_dimension表");
|
|
|
+
|
|
|
+ // 添加外键约束(单独执行避免CREATE TABLE时依赖表不存在)
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_knowledge_base_dimension ADD CONSTRAINT fk_kd_knowledge FOREIGN KEY (knowledge_id) REFERENCES dan_knowledge_base(id) ON DELETE CASCADE");
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_knowledge_base_dimension ADD CONSTRAINT fk_kd_dimension FOREIGN KEY (dimension_id) REFERENCES product_dimension_config(id) ON DELETE CASCADE");
|
|
|
+ log.info("已添加dan_knowledge_base_dimension外键约束");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建dan_knowledge_base_dimension表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建知识-标签关联表
|
|
|
+ try {
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS dan_knowledge_base_tag (" +
|
|
|
+ "id BIGINT PRIMARY KEY AUTO_INCREMENT, " +
|
|
|
+ "knowledge_id BIGINT NOT NULL, " +
|
|
|
+ "tag_id BIGINT NOT NULL, " +
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
+ "UNIQUE KEY uk_knowledge_tag (knowledge_id, tag_id) " +
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识-标签关联表'");
|
|
|
+ log.info("已创建dan_knowledge_base_tag表");
|
|
|
+
|
|
|
+ // 添加外键约束
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_knowledge_base_tag ADD CONSTRAINT fk_kt_knowledge FOREIGN KEY (knowledge_id) REFERENCES dan_knowledge_base(id) ON DELETE CASCADE");
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_knowledge_base_tag ADD CONSTRAINT fk_kt_tag FOREIGN KEY (tag_id) REFERENCES dan_knowledge_tag(id) ON DELETE CASCADE");
|
|
|
+ log.info("已添加dan_knowledge_base_tag外键约束");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("创建dan_knowledge_base_tag表可能已存在: {}", e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void insertSysConfigSeed(String key, String value, String desc) {
|