swagger_generator_flutter/CHANGELOG.md

161 lines
5.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
All notable changes to this project will be documented in this file.
## [3.2.0] - 2026-01-12
### 🎉 新特性
#### 模型类名前缀支持
-**支持配置文件配置**:在 `generator_config.yaml` 中配置 `models.class_prefix`,自动为生成的模型类添加前缀。
-**性能优化**:为 `ConfigRepository` 添加缓存机制,减少磁盘 I/O。
## [3.1.0] - 2025-11-24
### 🎉 新特性
#### 枚举键名映射支持
-**支持 OpenAPI 扩展字段**:通过 `x-enum-varnames``x-enum-descriptions` 生成有意义的枚举键名和注释
-**支持配置文件映射**:在 `generator_config.yaml` 中配置枚举键名映射,无需后端支持
-**三级优先级系统**:配置文件映射 > Swagger 扩展字段 > 智能生成
-**完整类型支持**:支持整数枚举和字符串枚举
-**部分映射支持**:可以只配置部分枚举值,未配置的使用智能生成
#### 配置文件增强
- ✅ 新增 `generation.models.enum_key_mappings` 配置项
- ✅ 更新 `generator_config.template.yaml`,添加详细的枚举映射示例和说明
- ✅ 新增 `EnumKeyMapping` 数据类,支持枚举键名和描述配置
### 📝 文档更新
- 新增 [**枚举快速参考**](./ENUM_QUICK_REFERENCE.md) - 三种生成方式对比和快速上手
- 新增 [**枚举使用指南**](./ENUM_KEY_NAMES_USAGE.md) - 详细的使用说明、后端实现示例和常见问题
- 新增 [**枚举实现总结**](./ENUM_CONFIG_MAPPING_SUMMARY.md) - 功能实现细节和测试验证
- 新增 [**枚举配置示例**](./example/enum_config_mapping_example.yaml) - 完整的配置文件示例
- 更新 README.md添加枚举键名映射功能说明
### 🔧 技术细节
- 修改 `lib/core/config_repository.dart`:添加 `enumKeyMappings` 解析逻辑
- 修改 `lib/core/config.dart`:暴露枚举映射配置
- 修改 `lib/pipeline/generate/impl/model/model_content_builders.dart`:实现三级优先级枚举生成
- 新增 `EnumKeyMapping` 类:封装枚举键名和描述配置
### 💡 使用场景
1. 后端支持 OpenAPI 扩展字段 → 使用 `x-enum-varnames`
2. 后端不支持扩展字段 → 使用配置文件映射
3. 需要覆盖 Swagger 定义 → 使用配置文件映射
4. 快速原型开发 → 使用智能生成(默认)
### 📚 相关资源
- [OpenAPI 扩展字段规范](https://swagger.io/docs/specification/openapi-extensions/)
- [示例 Swagger 文档](./example/swagger_enum_example.json)
- [配置文件示例](./example/enum_config_mapping_example.yaml)
---
## [3.0.0] - 2025-11-21
### Breaking changes
- Removed OptimizedRetrofitGenerator and its public export. RetrofitApiGenerator is now the sole supported generator.
### Migration
- Replace imports/usages of OptimizedRetrofitGenerator with RetrofitApiGenerator. Example:
- Before:
import 'package:swagger_generator_flutter/generators/optimized_retrofit_generator.dart';
final generator = OptimizedRetrofitGenerator(className: 'ApiService');
- After:
import 'package:swagger_generator_flutter/generators/retrofit_api_generator.dart';
final generator = RetrofitApiGenerator(
className: 'ApiService',
useRetrofit: true,
useDio: true,
splitByTags: true,
versionedApi: true,
);
### Docs
- Updated README and docs to reference RetrofitApiGenerator only.
## [2.1.1] - 2025-11-05
### 🎉 新特性
#### 作为 dev_dependencies 支持
- ✅ 添加 `executables` 配置,支持作为 dev_dependencies 在其他项目中使用
- ✅ 可通过 `dart run swagger_generator_flutter generate` 命令执行
- ✅ 支持从使用者项目根目录读取 `generator_config.yaml` 配置文件
- ✅ 新增完整的使用指南 `USAGE_AS_DEV_DEPENDENCY.md`
- ✅ 提供配置文件模板 `generator_config.template.yaml`
### 📝 文档更新
- 更新 README.md新增 "作为 dev_dependencies 使用" 章节
- 新增详细的集成指南,包含 CI/CD 示例
- 提供完整的工作流程说明
### 🔧 配置优化
- 更新 `pubspec.yaml` 描述信息
- 添加可执行命令映射配置
---
## [2.1.0] - 2025-11-03
### 🎉 主要新特性
#### 多版本 API 支持
- 支持解析多个 Swagger 文档 URLv1/v2/v3...
- API 文件按版本自动分目录api/v1/、api/v2/
- V1 版本类名保持简洁(不加后缀,如 `MobileManagerApi`
- V2+ 版本类名添加版本号后缀(如 `MobileManagerApiV2`
- ApiClient 提供清晰的版本化访问器
#### 模型智能分类
- 新增 `ModelUsageType` 枚举request/response/common/unknown
- 自动分析 Swagger paths 判定模型实际用途
- 精确区分请求参数和返回结果
#### 目录结构优化
- `api_models/enums/` - 枚举类型
- `api_models/request/` - 请求模型
- `api_models/result/` - 响应模型
- `api_models/parameters/` - 查询参数类
- 每个子目录自动生成 `index.dart` 便于导入
### ✨ 改进
#### 默认值处理
- 响应模型的 List 类型自动添加 `@JsonKey(defaultValue: [])`
- 请求模型不添加默认值,避免影响后端接收
- 更安全的 null 值处理
#### 导入策略
- API 文件统一使用 `import '../../api_models/index.dart'`
- 利用 Dart tree-shaking不影响应用大小
- 简化导入管理,提高可维护性
### 🔧 配置变更
- `SwaggerConfig.swaggerJsonUrls` 现在支持多个 Swagger 文档 URL
- 移除了单独的 `swaggerJsonUrl` 配置项
### 📝 文档
- 新增 `CANCELTOKEN_USAGE_GUIDE.md` - CancelToken 使用指南
- 新增 `CHANGELOG_CANCELTOKEN.md` - CancelToken 功能变更日志
---
## [2.0.1] - 2025-10-XX
### 改进
- 性能优化和 bug 修复
- 代码质量提升
---
## [2.0.0] - 2025-09-XX
### 重大变更
- 项目重构
- 支持 Retrofit
- 优化代码生成逻辑