datai/docs/archive/changelog/0012-environment-validity-field.md

6.7 KiB
Raw Blame History

Changelog - 环境有效性字段功能

变更信息

  • 版本号: v0.1.12
  • 发布日期: 2026-01-23
  • 变更类型: 特性更新

变更摘要

在 DataiConfigEnvironment 实体类中新增 isValid 字段,用于标记环境是否有效。当环境登录成功后,自动将对应环境设置为有效状态。使用乐观锁机制确保并发安全,保证数据一致性。

详细变更

特性更新

  • 新增 isValid 字段 - 在 DataiConfigEnvironment 实体类中新增 isValid 字段,用于标记环境是否有效

    • 数据库字段is_validTINYINT(1)默认值NULL
    • Java 字段isValidBoolean 类型)
    • 字段含义true 表示环境有效false 表示环境无效NULL 表示历史数据
  • 新增 version 字段 - 在 DataiConfigEnvironment 实体类中新增 version 字段,用于乐观锁控制

    • 数据库字段versionBIGINT默认值0
    • Java 字段versionLong 类型)
    • 使用 @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 脚本升级数据库结构
  • 代码升级 - 需要修改相关代码文件

升级指南

升级步骤

  1. 执行数据库升级脚本

    • 执行 SQL 脚本docs/sql/2026-01-22-012-environment-validity-field.sql
    • 确认数据库表结构已更新
  2. 修改代码文件

    • 修改 DataiConfigEnvironment.java添加 isValid 和 version 字段
    • 修改 DataiConfigEnvironmentDto.java添加 isValid 字段
    • 修改 DataiConfigEnvironmentVo.java添加 isValid 字段
    • 修改 DataiConfigEnvironmentMapper.xml添加 is_valid 和 version 字段映射
    • 修改 SalesforceLoginServiceImpl.java添加 updateEnvironmentValidity 方法
  3. 运行单元测试

    • 运行 DataiConfigEnvironmentTest 单元测试
    • 运行 SalesforceLoginServiceImplTest 单元测试
    • 确认所有测试通过
  4. 重新编译项目

    • 使用 Maven 或 Gradle 重新编译项目
    • 确认编译成功
  5. 功能验证

    • 登录 Salesforce 环境
    • 确认登录成功后,环境有效性字段自动更新为 true
    • 确认环境管理接口支持 isValid 字段
  6. 性能验证

    • 确认登录成功后更新环境有效性不影响登录性能
    • 确认并发场景下数据一致性

注意事项

  • 数据库备份 - 在执行数据库升级脚本前,请先备份数据库
  • 测试环境验证 - 建议先在测试环境中验证升级过程,确认无误后再在生产环境中升级
  • 回滚方案 - 如果升级过程中出现问题,可以使用回滚方案恢复到升级前的状态
  • 并发控制 - 使用乐观锁机制,确保并发场景下数据一致性

测试信息

测试环境

  • 本地开发环境 - 用于单元测试和功能验证
    • 操作系统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通过
  • 性能测试 - 性能验证通过

    • 登录成功后更新环境有效性不影响登录性能:通过
    • 并发场景下数据一致性:通过

相关链接

发布人员

  • AI 助手 - 负责需求分析、设计、代码生成和文档编写

审核信息

  • 审核人员: 待审核
  • 审核日期: 待审核
  • 审核状态: 待审核
  • 审核意见: 待审核