datai/docs/archive/changelog/2026-01-24-002-changelog.md

89 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 变更日志
## 元数据
- **需求编号**: 2026-01-24-002
- **创建时间**: 2026-01-24
- **创建人**: SSOT 架构师
- **版本号**: v1.0.0
## 变更概述
实现环境从库初始化功能,允许为环境配置自动创建对应的从库数据源。该功能包括数据库创建、配置写入、数据源注册、连接验证等步骤,并确保从库一经创建不允许修改或删除。
## 变更内容
### 新增功能
- 实现环境从库初始化功能,包括:
- 从配置文件读取主库配置application-druid.yml
- 生成从库名称slave_环境编码
- 检查数据源名称是否已存在
- 使用 JDBC 创建数据库字符集utf8mb4排序规则utf8mb4_general_ci
- 写入数据源配置表
- 注册数据源到 DataSourceManager
- 切换到从库
- 验证连接有效性
- 切换回主库
- 使用 Spring 事务保证原子性,验证失败时自动回滚
- 从库一经创建,不允许任何修改、删除或重新初始化
### 新增代码文件
- `datai-system/src/main/java/com/datai/system/service/ISysDatasourceConfigService.java`
- 新增方法:`createSlaveDatabase(String environmentCode)`
- `datai-system/src/main/java/com/datai/system/service/impl/SysDatasourceConfigServiceImpl.java`
- 新增方法:`createSlaveDatabase(String environmentCode)`
- 新增辅助方法:`extractDbNameFromUrl(String jdbcUrl)`
- 新增辅助方法:`extractHostFromUrl(String jdbcUrl)`
- 新增辅助方法:`extractPortFromUrl(String jdbcUrl)`
- 新增辅助方法:`extractDbTypeFromUrl(String jdbcUrl)`
- `datai-scenes/datai-scene-salesforce/datai-salesforce-setting/src/main/java/com/datai/setting/service/IDataiConfigEnvironmentService.java`
- 新增方法:`initSlaveDatasource(String environmentCode)`
- `datai-scenes/datai-scene-salesforce/datai-salesforce-setting/src/main/java/com/datai/setting/service/impl/DataiConfigEnvironmentServiceImpl.java`
- 新增方法:`initSlaveDatasource(String environmentCode)`
- `datai-scenes/datai-scene-salesforce/datai-salesforce-setting/src/main/java/com/datai/setting/controller/DataiConfigEnvironmentController.java`
- 新增方法:`initSlaveDatasource(String environmentCode)`
- 接口路径:`POST /setting/environment/initSlave`
- 权限注解:`@PreAuthorize("@ss.hasPermi('setting:environment:initSlave')")`
- 日志注解:`@Log(title = "配置环境", businessType = BusinessType.OTHER)`
### 修改代码文件
- `datai-scenes/datai-scene-salesforce/datai-salesforce-setting/src/main/java/com/datai/setting/model/domain/DataiConfigEnvironment.java`
- 新增字段:`datasourceId`Long 类型)
- 新增 getter/setter 方法
- 新增 Swagger 注解:`@Schema(title = "数据源ID")`
- 新增 Excel 注解:`@Excel(name = "数据源ID")`
### 数据库变更
- 修改表:`datai_config_environment`
- 新增字段:`datasource_id`BIGINT 类型)
- 新增索引:`idx_datasource_id`(针对 datasource_id 字段)
### 新增文档
- [需求文档](../requirements/2026-01-24-002-环境从库初始化.md)
- [设计文档](../design/2026-01-24-002-环境从库初始化设计.md)
- [决策记录](../decisions/adr/2026-01-24-002-ADR-环境从库初始化.md)
- [SQL 脚本](../sql/2026-01-24-002-datai_config_environment_datasourceId.sql)
- [提示词文档](../prompts/2026-01-24-002-prompt-环境从库初始化.md)
- [参考代码文档](../reference-code/2026-01-24-002-code-环境从库初始化.md)
- [实施方案文档](../implementation/2026-01-24-002-implementation-环境从库初始化.md)
- [会话记录](../sessions/2026-01-24-002-session.md)
## 影响范围
- **模块**: datai-system、datai-salesforce-setting
- **功能**: 环境配置管理、数据源管理
- **文件**: 5 个修改文件
- **数据库**: 1 个表修改datai_config_environment
- **接口**: 1 个新增接口POST /setting/environment/initSlave
## 相关文档
- [需求文档](../requirements/2026-01-24-002-环境从库初始化.md)
- [设计文档](../design/2026-01-24-002-环境从库初始化设计.md)
- [决策记录](../decisions/adr/2026-01-24-002-ADR-环境从库初始化.md)
- [SQL 脚本](../sql/2026-01-24-002-datai_config_environment_datasourceId.sql)
- [提示词文档](../prompts/2026-01-24-002-prompt-环境从库初始化.md)
- [参考代码文档](../reference-code/2026-01-24-002-code-环境从库初始化.md)
- [实施方案文档](../implementation/2026-01-24-002-implementation-环境从库初始化.md)
- [会话记录](../sessions/2026-01-24-002-session.md)