6.7 KiB
6.7 KiB
Changelog - 环境有效性字段功能
变更信息
- 版本号: v0.1.12
- 发布日期: 2026-01-23
- 变更类型: 特性更新
变更摘要
在 DataiConfigEnvironment 实体类中新增 isValid 字段,用于标记环境是否有效。当环境登录成功后,自动将对应环境设置为有效状态。使用乐观锁机制确保并发安全,保证数据一致性。
详细变更
特性更新
-
新增 isValid 字段 - 在 DataiConfigEnvironment 实体类中新增 isValid 字段,用于标记环境是否有效
- 数据库字段:is_valid(TINYINT(1),默认值:NULL)
- Java 字段:isValid(Boolean 类型)
- 字段含义:true 表示环境有效,false 表示环境无效,NULL 表示历史数据
-
新增 version 字段 - 在 DataiConfigEnvironment 实体类中新增 version 字段,用于乐观锁控制
- 数据库字段:version(BIGINT,默认值:0)
- Java 字段:version(Long 类型)
- 使用 @Version 注解实现乐观锁机制
-
新增 updateEnvironmentValidity 方法 - 在 SalesforceLoginServiceImpl 中新增 updateEnvironmentValidity 方法,用于更新环境有效性
- 方法签名:public void updateEnvironmentValidity(String orgType, Boolean isValid)
- 使用 @Transactional 注解确保事务一致性
- 添加重试机制,处理并发冲突
- 添加异常处理,确保更新失败不影响登录结果
-
登录成功后自动更新环境有效性 - 在登录成功后自动将对应环境设置为有效状态
- 在 SalesforceLoginServiceImpl.login 方法中,登录成功后调用 updateEnvironmentValidity 方法
- 确保数据一致性,但添加异常处理,确保更新失败不影响登录结果
-
新增单元测试 - 为新增功能添加单元测试
- DataiConfigEnvironmentTest:测试 isValid 和 version 字段的 getter/setter 方法
- SalesforceLoginServiceImplTest:测试 updateEnvironmentValidity 方法的各种场景
数据库变更
-
新增 is_valid 字段 - 在 datai_config_environment 表中新增 is_valid 字段
- 字段类型:TINYINT(1)
- 默认值:NULL
- 允许为空,兼容历史数据
-
新增 version 字段 - 在 datai_config_environment 表中新增 version 字段
- 字段类型:BIGINT
- 默认值:0
- 不允许为空
影响范围
受影响的模块
-
datai-salesforce-setting - 配置环境管理模块
- 影响程度:中等
- 影响文件:DataiConfigEnvironment.java、DataiConfigEnvironmentDto.java、DataiConfigEnvironmentVo.java、DataiConfigEnvironmentMapper.xml
-
datai-salesforce-auth - 认证管理模块
- 影响程度:中等
- 影响文件:SalesforceLoginServiceImpl.java
兼容性说明
- 向后兼容 - 本次变更向后兼容,历史数据中 is_valid 字段为 NULL,查询时将 NULL 视为 false
- 数据库升级 - 需要执行 SQL 脚本升级数据库结构
- 代码升级 - 需要修改相关代码文件
升级指南
升级步骤
-
执行数据库升级脚本
- 执行 SQL 脚本:docs/sql/2026-01-22-012-environment-validity-field.sql
- 确认数据库表结构已更新
-
修改代码文件
- 修改 DataiConfigEnvironment.java,添加 isValid 和 version 字段
- 修改 DataiConfigEnvironmentDto.java,添加 isValid 字段
- 修改 DataiConfigEnvironmentVo.java,添加 isValid 字段
- 修改 DataiConfigEnvironmentMapper.xml,添加 is_valid 和 version 字段映射
- 修改 SalesforceLoginServiceImpl.java,添加 updateEnvironmentValidity 方法
-
运行单元测试
- 运行 DataiConfigEnvironmentTest 单元测试
- 运行 SalesforceLoginServiceImplTest 单元测试
- 确认所有测试通过
-
重新编译项目
- 使用 Maven 或 Gradle 重新编译项目
- 确认编译成功
-
功能验证
- 登录 Salesforce 环境
- 确认登录成功后,环境有效性字段自动更新为 true
- 确认环境管理接口支持 isValid 字段
-
性能验证
- 确认登录成功后更新环境有效性不影响登录性能
- 确认并发场景下数据一致性
注意事项
- 数据库备份 - 在执行数据库升级脚本前,请先备份数据库
- 测试环境验证 - 建议先在测试环境中验证升级过程,确认无误后再在生产环境中升级
- 回滚方案 - 如果升级过程中出现问题,可以使用回滚方案恢复到升级前的状态
- 并发控制 - 使用乐观锁机制,确保并发场景下数据一致性
测试信息
测试环境
- 本地开发环境 - 用于单元测试和功能验证
- 操作系统:Windows
- Java 版本:17
- 数据库:MySQL 8.0
- 框架:Spring Boot 3、若依框架
测试结果
-
单元测试 - 所有单元测试通过
- DataiConfigEnvironmentTest.testIsValidField():通过
- DataiConfigEnvironmentTest.testVersionField():通过
- DataiConfigEnvironmentTest.testToString():通过
- SalesforceLoginServiceImplTest.testUpdateEnvironmentValiditySuccess():通过
- SalesforceLoginServiceImplTest.testUpdateEnvironmentValidityNotFound():通过
- SalesforceLoginServiceImplTest.testUpdateEnvironmentValidityConcurrentConflict():通过
- SalesforceLoginServiceImplTest.testUpdateEnvironmentValidityException():通过
-
功能测试 - 功能验证通过
- 登录成功后,环境有效性字段自动更新为 true:通过
- 环境管理接口支持 isValid 字段:通过
- 历史数据中 is_valid 字段为 NULL,查询时将 NULL 视为 false:通过
-
性能测试 - 性能验证通过
- 登录成功后更新环境有效性不影响登录性能:通过
- 并发场景下数据一致性:通过
相关链接
- 需求文档 - 环境有效性字段功能需求文档
- 设计文档 - 环境有效性字段功能设计文档
- 架构决策 - 环境有效性字段功能架构决策
- SQL 脚本 - 环境有效性字段功能 SQL 脚本
- 参考代码 - 环境有效性字段功能参考代码
- 实施方案 - 环境有效性字段功能实施方案
- 会话记录 - 环境有效性字段功能会话记录
发布人员
- AI 助手 - 负责需求分析、设计、代码生成和文档编写
审核信息
- 审核人员: 待审核
- 审核日期: 待审核
- 审核状态: 待审核
- 审核意见: 待审核