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

161 lines
6.7 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.

# 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通过
- **性能测试** - 性能验证通过
- 登录成功后更新环境有效性不影响登录性能:通过
- 并发场景下数据一致性:通过
## 相关链接
- [需求文档](./requirements/REQ-012.md) - 环境有效性字段功能需求文档
- [设计文档](./design/2026-01-22-012-环境有效性字段功能设计.md) - 环境有效性字段功能设计文档
- [架构决策](./decisions/adr/2026-01-22-012-ADR-环境有效性字段功能.md) - 环境有效性字段功能架构决策
- [SQL 脚本](./sql/2026-01-22-012-environment-validity-field.sql) - 环境有效性字段功能 SQL 脚本
- [参考代码](./reference-code/2026-01-22-012-code-环境有效性字段功能.md) - 环境有效性字段功能参考代码
- [实施方案](./implementation/2026-01-22-012-implementation-环境有效性字段功能.md) - 环境有效性字段功能实施方案
- [会话记录](./sessions/20260122-req-012-environment-validity-field.md) - 环境有效性字段功能会话记录
## 发布人员
- **AI 助手** - 负责需求分析、设计、代码生成和文档编写
## 审核信息
- **审核人员**: 待审核
- **审核日期**: 待审核
- **审核状态**: 待审核
- **审核意见**: 待审核