Commit Graph

6 Commits

Author SHA1 Message Date
2d8f9c0aa2 feat: 实现从库数据源注解功能 (REQ-003)
- 扩展 @DataSource 注解,支持从库数据源的动态切换
- 在 DataSourceAspect 切面中添加动态路由逻辑,通过反射调用 SalesforceConfigCacheManager.getCurrentEnvironmentCode() 方法获取当前激活环境编码
- 构造从库数据源名称(slave_环境编码),检查从库是否存在,存在则切换到从库,不存在则回退到主库
- 缓存 SalesforceConfigCacheManager Bean 和 getCurrentEnvironmentCode Method 对象,优化性能
- 为 8 个方法添加 @DataSource(DataSourceType.SLAVE) 注解:
  - DataiIntegrationObjectServiceImpl.createObjectStructure
  - DataiIntegrationObjectServiceImpl.syncSingleObjectData
  - DataiIntegrationObjectServiceImpl.syncMultipleObjectData
  - DataiIntegrationBatchServiceImpl.syncBatchData
  - DataiIntegrationMetadataChangeServiceImpl.syncToLocalDatabase
  - DataiIntegrationMetadataChangeServiceImpl.syncBatchToLocalDatabase
  - DataSynchronizerImpl.synchronizeData
  - DataSynchronizerImpl.batchSynchronizeData
- 创建需求文档、设计文档、决策记录、提示词文档、会话记录、变更日志、复盘文档和 API 文档
- 更新 CHANGELOG.md 和索引文档
2026-01-24 23:21:57 +08:00
fe887c0641 fix: 修改从库数据库排序规则为 utf8mb4_general_ci
问题:从库数据库排序规则应使用 utf8mb4_general_ci 而非 utf8mb4_unicode_ci

修复:
- 修改 SQL 语句,将 COLLATE utf8mb4_unicode_ci 改为 COLLATE utf8mb4_general_ci
- 更新相关文档,包括接口文档、API 文档、变更日志、实施方案

说明:
- utf8mb4_general_ci 是 MySQL 的默认排序规则,性能更好
- utf8mb4_unicode_ci 是基于 Unicode 标准的排序规则,支持更多语言,但性能稍差
2026-01-24 20:51:46 +08:00
e80489530b docs: 更新 DataiConfigEnvironmentController 接口文档
- 新增 0009-init-slave-datasource.md 接口文档
- 更新 0001-environment-list.md 接口文档,添加 datasourceId 字段
- 更新 0003-get-info.md 接口文档,添加 datasourceId 字段
- 更新 0004-add-environment.md 接口文档,更新最后更新日期
- 更新 0005-edit-environment.md 接口文档,更新最后更新日期
- 更新 index.md 索引,添加新接口链接并更新接口统计
2026-01-24 20:20:46 +08:00
b9be19c94d feat: 环境从库初始化功能 (2026-01-24-002)
实现环境从库初始化功能,包括数据库创建、配置写入、数据源注册、连接验证等步骤。

主要变更:
- 在 ISysDatasourceConfigService 接口中新增 createSlaveDatabase 方法
- 在 SysDatasourceConfigServiceImpl 中实现 createSlaveDatabase 方法
  - 从 application-druid.yml 配置文件中读取主库配置
  - 生成从库名称(slave_环境编码)
  - 检查数据源名称是否已存在
  - 使用 JDBC 创建数据库(字符集:utf8mb4,排序规则:utf8mb4_unicode_ci)
  - 写入数据源配置表
  - 注册数据源到 DataSourceManager
  - 切换到从库并验证连接有效性
  - 切换回主库
  - 使用 Spring 事务保证原子性,验证失败时自动回滚
  - 新增辅助方法:extractDbNameFromUrl、extractHostFromUrl、extractPortFromUrl、extractDbTypeFromUrl
- 在 IDataiConfigEnvironmentService 接口中新增 initSlaveDatasource 方法
- 在 DataiConfigEnvironmentServiceImpl 中实现 initSlaveDatasource 方法
- 在 DataiConfigEnvironmentController 中新增 initSlaveDatasource 接口方法
- 在 DataiConfigEnvironment 实体类中新增 datasourceId 字段
- 在 datai_config_environment 表中新增 datasource_id 字段并添加索引

文档变更:
- 新增需求文档:2026-01-24-002-环境从库初始化.md
- 新增设计文档:2026-01-24-002-环境从库初始化设计.md
- 新增决策记录:2026-01-24-002-ADR-环境从库初始化.md
- 新增提示词文档:2026-01-24-002-prompt-环境从库初始化.md
- 新增实施方案:2026-01-24-002-implementation-环境从库初始化.md
- 新增变更日志:2026-01-24-002-changelog.md
- 新增复盘文档:2026-01-24-002-retro.md
- 新增 API 文档:2026-01-24-002-api-环境从库初始化.md
- 新增会话记录:2026-01-24-002-session.md
- 更新项目索引:index.md
- 更新根目录变更日志:CHANGELOG.md

相关需求:2026-01-24-002
2026-01-24 20:12:48 +08:00
dd4efbd4e1 feat: [012] 环境有效性字段功能 2026-01-23 13:29:49 +08:00
1af07403fb fix: 修复 setting 模块业务逻辑问题和 NullPointerException
主要修改:
1. 添加 orgType 字段支持源/目标 ORG 类型隔离
   - DataiConfigAuditLog、DataiConfigEnvironment、DataiConfigSnapshot 添加 orgType 字段
   - 相关 DTO、VO、Mapper XML 同步更新
   - 创建 SQL 脚本:add_org_type_to_*.sql

2. 修复业务逻辑问题
   - SalesforceConfigCacheManager:添加并发安全锁,修复环境初始化查询条件
   - DataiConfigSnapshotServiceImpl:添加快照恢复审计日志记录
   - DataiConfigEnvironmentServiceImpl:完善环境切换的事务回滚机制
   - EnvironmentSwitchListener:移除重复环境切换,移除 @Async 注解
   - ConfigChangeListener:添加空指针检查

3. 修复 NullPointerException
   - DataiConfigurationController.list():添加 list 空值检查
   - DataiConfigSnapshotController.list():添加 list 空值检查
   - 过滤 null environmentId 防止 Map 创建失败

4. 生成 API 文档
   - DataiConfigEnvironmentController:切换环境、获取当前环境接口文档
   - DataiConfigSnapshotController:快照管理完整接口文档
   - DataiConfigurationController:配置管理完整接口文档
   - 创建 setting 模块索引:docs/api-docs/setting/index.md

5. 更新文档索引
   - 更新 docs/index.md 添加 setting 模块索引链接
2026-01-14 14:08:33 +08:00