datai/docs/archive/changelog/2026-01-25-002-05-currency-formatting.md

114 lines
5.0 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.

# 变更记录:货币格式化功能
## 变更信息
- **版本号**: v0.2.0
- **发布日期**: 2026-01-25
- **变更类型**: 特性更新
## 变更摘要
本次变更实现了货币格式化功能,支持多种货币的格式化显示、实时汇率转换、用户货币偏好管理等功能。通过 AOP 切面在 Service 层自动进行货币格式化,提供了灵活的货币配置和缓存机制,提升了系统的国际化支持能力。
## 详细变更
### 特性更新
- **货币格式化功能** - 实现了基于 Java DecimalFormat 的货币格式化,支持货币符号、小数位数、千分位分隔符等格式化选项
- **多货币显示** - 支持在单个字段中同时显示多种货币金额,自动进行汇率转换
- **实时汇率转换** - 实现了汇率查询和转换功能,支持批量汇率转换
- **用户货币偏好** - 扩展了用户表,添加了货币代码字段,支持用户级别的货币偏好设置
- **系统默认货币** - 实现了系统默认货币配置,支持通过配置文件和数据库设置默认货币
- **汇率管理** - 实现了汇率数据的管理功能,包括汇率查询、更新、缓存等
- **AOP 自动格式化** - 通过 @CurrencyFormat 注解和 AOP 切面,在 Service 层自动进行货币格式化
- **缓存机制** - 实现了汇率、货币列表、默认货币的 Redis 缓存,提高了系统性能
### 数据库变更
- **创建汇率表** - 创建了 sys_exchange_rate 表,用于存储汇率数据
- **扩展用户表** - 在 sys_user 表中添加了 currency_code 字段,默认值为 CNY
- **添加索引** - 为汇率表和用户表添加了必要的索引,提高查询性能
### API 变更
- **获取用户货币偏好** - GET /system/user/currency
- **切换用户货币偏好** - POST /system/user/switchCurrency
- **汇率转换** - POST /system/exchangeRate/convert
- **批量汇率转换** - POST /system/exchangeRate/batchConvert
- **更新汇率(手动)** - POST /system/exchangeRate/update
- **更新汇率API** - POST /system/exchangeRate/updateFromApi
## 影响范围
### 受影响的模块
- **datai-common** - 新增 CurrencyUtils、CurrencyConstants、@CurrencyFormat 注解
- **datai-framework** - 新增 CurrencyFormatAspect AOP 切面
- **datai-system** - 新增 SysExchangeRate 相关实体、Mapper、Service
- **datai-admin** - 新增 SysExchangeRateController扩展 SysUserController
- **数据库** - 新增 sys_exchange_rate 表,扩展 sys_user 表
### 兼容性说明
- **向后兼容** - 本次变更完全向后兼容,不影响现有功能
- **数据库迁移** - 需要执行 SQL 脚本创建新表和扩展现有表
- **配置变更** - 需要在配置文件中添加系统默认货币配置
## 升级指南
### 升级步骤
1. **执行数据库脚本** - 执行 `2026-01-25-002-05-货币格式化.sql` 脚本,创建汇率表和扩展用户表
2. **更新配置文件** - 在配置文件中添加系统默认货币配置sys.default.currency
3. **部署代码** - 部署新增和修改的 Java 代码文件
4. **初始化汇率数据** - 插入初始汇率数据到 sys_exchange_rate 表
5. **测试功能** - 测试货币格式化、汇率转换、用户货币偏好等功能
### 注意事项
- **汇率数据初始化** - 确保在系统启动前初始化必要的汇率数据
- **缓存预热** - 建议在系统启动时预热汇率缓存,提高首次访问性能
- **汇率更新策略** - 根据业务需求配置汇率更新策略(手动更新或 API 自动更新)
- **货币代码验证** - 确保用户设置的货币代码在支持的货币列表中
## 测试信息
### 测试环境
- **本地环境** - Windows 10, IDEA
- **项目环境** - DataI v1.0.0
- **数据库** - MySQL 8.3.0
- **缓存** - Redis
### 测试结果
- **货币格式化** - 所有支持的货币格式化功能正常
- **汇率转换** - 单个和批量汇率转换功能正常
- **用户货币偏好** - 用户货币偏好设置和切换功能正常
- **AOP 切面** - Service 层自动货币格式化功能正常
- **缓存机制** - 汇率、货币列表、默认货币缓存功能正常
- **性能测试** - 货币格式化性能满足要求(< 10ms
## 相关链接
- [需求文档](../requirements/2026-01-21-002-05-货币格式化需求.md)
- [设计文档](../design/2026-01-21-002-05-货币格式化设计.md)
- [决策记录](../decisions/adr/2026-01-25-002-05-ADR-货币格式化技术选型.md)
- [SQL 脚本](../sql/2026-01-25-002-05-货币格式化.sql)
- [提示词文档](../prompts/2026-01-25-002-05-prompt-货币格式化功能.md)
- [代码文档](../reference-code/2026-01-25-002-05-code-货币格式化功能.md)
- [实施方案](../implementation/2026-01-25-002-05-implementation-货币格式化功能.md)
- [会话记录](../sessions/2026-01-25-002-05-session.md)
## 发布人员
- **AI Assistant** - 代码生成和文档编写
- **SSOT 架构师** - 需求定义方案设计架构决策
## 审核信息
- **审核人员**: 待指定
- **审核日期**: 2026-01-25
- **审核状态**: 待审核
- **审核意见**: