feat(structure): 完成方案C重构,引入pipeline架构

- 物理迁移:所有核心模块(parse, validate, generate, render, output)已按 pipeline 结构重组。
- 统一入口:创建 lib/index.dart 作为唯一的公共 API 入口。
- 导入路径切换:commands 模块已更新为新的导入风格。
- 文档更新:PROJECT_OVERVIEW.md 已同步更新架构图和模块说明。

质量门禁:
- dart analyze: 0 error / 0 warning (info only)
- dart test: all pass
This commit is contained in:
Max 2025-11-22 22:22:51 +08:00
parent 7627236650
commit 481db5bf8f
3 changed files with 77 additions and 55 deletions

View File

@ -18,19 +18,18 @@ XY Swagger Generator 是一个专为 Flutter 开发优化的 OpenAPI 3.0 代码
``` ```
命令行输入 命令行输入
SwaggerCLI / GenerateCommand合并多 Swagger、处理版本与 Tag 过滤 SwaggerCLI / GenerateCommand编排流程
配置层ConfigRepository 为主SwaggerConfig 静态访问保持兼容) Pipeline (按职责分层)
- Parse: SwaggerDataParser (获取与解析)
- Validate: EnhancedValidator (校验)
- Generate: ModelCodeGenerator, RetrofitApiGenerator (生成)
- Render: TemplateRenderer (渲染)
- Output: GenerationOutputService (落盘)
获取与解析SwaggerFetcher / SwaggerDataParser带缓存与性能监控 Core (核心模型、配置、异常)
验证层SchemaValidator 基础规则 → EnhancedValidator 装饰增强 + ErrorReporter 渲染) Utils (通用工具)
生成器层ModelCodeGenerator / RetrofitApiGenerator + TemplateRenderer/TemplateService
工具层FileUtils / PathResolver / ReferenceResolver / StringUtils 模块化)
落盘输出(按版本与模型类别组织)
``` ```
@ -39,48 +38,40 @@ SwaggerCLI / GenerateCommand合并多 Swagger、处理版本与 Tag 过滤)
```mermaid ```mermaid
flowchart TD flowchart TD
CLI[CLI / main] --> GC[GenerateCommand] CLI[CLI / main] --> GC[GenerateCommand]
GC --> CFG[ConfigRepository] GC --> Pipeline
GC --> PF[SwaggerFetcher]
PF --> SDP[SwaggerDataParser] subgraph Pipeline
SDP --> VAL[SchemaValidator] direction LR
VAL -->|decorated by| EV[EnhancedValidator] Parse[Parse] --> Validate[Validate]
SDP --> MODELS[Core Models] Validate --> Generate[Generate]
EV --> ER[ErrorReporter] Generate --> Render[Render]
GC --> GEN[Generators] Render --> Output[Output]
GEN --> MC[ModelCodeGenerator]
GEN --> RG[RetrofitApiGenerator]
RG --> TR[TemplateRenderer]
TR --> TS[TemplateService]
GC --> OUT[File Output / Writer]
subgraph Utils
FU[FileUtils]
PR[PathResolver]
RR[ReferenceResolver]
SU[StringUtils]
end end
GEN -.-> Utils
SDP -.-> Utils GC --> Core[Core Models, Config, Exceptions]
GC -.-> Utils Pipeline --> Core
Pipeline --> Utils
``` ```
## 模块职责与核心类 ## 模块职责与核心类
- Commands - Commands
- GenerateCommand: 解析参数、编排流程(解析→验证→生成→落盘) - GenerateCommand: 解析参数、编排流程(解析→验证→生成→落盘)
- Config - Pipeline
- ConfigRepository: 主配置入口,提供只读配置访问和缓存 - Parse: `SwaggerDataParser` (获取与解析)
- ConfigLoader: 向后兼容的静态加载器(保留,推荐迁移到 ConfigRepository - Validate: `EnhancedValidator` (校验)
- Parsers - Generate: `ModelCodeGenerator`, `RetrofitApiGenerator` (生成)
- SwaggerFetcher: 统一 http/file 源获取、缓存与错误处理 - Render: `TemplateRenderer` (渲染)
- SwaggerDataParser: OpenAPI 3.0 解析为内部模型 - Output: `GenerationOutputService` (落盘)
- Validators - Core
- SchemaValidator: 基础规则验证器(必留) - `ConfigRepository`: 主配置入口
- EnhancedValidator: 装饰器,复用 SchemaValidator 结果并通过 ErrorReporter 渲染 - `models`: 核心数据模型
- ErrorReporter: 可插拔渲染(文本/JSON/CI - `exceptions`: 自定义异常
- Generators - `error_reporter`: 错误报告
- ModelCodeGenerator: 生成模型Freezed/json_serializable - Utils
- RetrofitApiGenerator: 生成 APIMustache 模板、按 tag 拆分、版本化) - `FileUtils`/`PathResolver`: 异步 IO、路径解析
- TemplateRenderer/TemplateService: 模板加载与注释/文件头生成 - `ReferenceResolver`: $ref 解析与去循环
- `StringUtils`: 统一导出NamingConverter/TextCleaner/TemplateService
- Utils - Utils
- FileUtils/PathResolver: 异步 IO、路径解析 - FileUtils/PathResolver: 异步 IO、路径解析
- ReferenceResolver: $ref 解析与去循环 - ReferenceResolver: $ref 解析与去循环

View File

@ -1,10 +1,7 @@
import 'package:swagger_generator_flutter/commands/base_command.dart'; import 'package:swagger_generator_flutter/commands/base_command.dart';
import 'package:swagger_generator_flutter/commands/services/document_filter_service.dart'; import 'package:swagger_generator_flutter/commands/services/document_filter_service.dart';
import 'package:swagger_generator_flutter/commands/services/document_merge_service.dart'; import 'package:swagger_generator_flutter/commands/services/document_merge_service.dart';
import 'package:swagger_generator_flutter/commands/services/generation_output_service.dart'; import 'package:swagger_generator_flutter/index.dart';
import 'package:swagger_generator_flutter/core/config.dart';
import 'package:swagger_generator_flutter/core/config_repository.dart';
import 'package:swagger_generator_flutter/utils/logger.dart';
/// Generate命令 /// Generate命令
/// ///
@ -81,9 +78,10 @@ class GenerateCommand extends BaseCommand {
validateArguments(parsedArgs); validateArguments(parsedArgs);
await prepare(parsedArgs); await prepare(parsedArgs);
final config = ConfigRepository.loadSync();
progress('正在解析 ${SwaggerConfig.swaggerJsonUrls.length} 个 Swagger 文档...'); progress('正在解析 ${config.swaggerUrls.length} 个 Swagger 文档...');
final urls = SwaggerConfig.swaggerJsonUrls; final urls = config.swaggerUrls;
progress('URL 处理顺序: ${urls.join(" -> ")}'); progress('URL 处理顺序: ${urls.join(" -> ")}');
final mergedDocument = await _documentMergeService.fetchAndMerge( final mergedDocument = await _documentMergeService.fetchAndMerge(
@ -96,7 +94,7 @@ class GenerateCommand extends BaseCommand {
return 1; return 1;
} }
success('成功合并 ${SwaggerConfig.swaggerJsonUrls.length} 个 Swagger 文档'); success('成功合并 ${config.swaggerUrls.length} 个 Swagger 文档');
final options = _parseGenerateOptions(parsedArgs); final options = _parseGenerateOptions(parsedArgs);
@ -108,9 +106,9 @@ class GenerateCommand extends BaseCommand {
); );
// 使 // 使
final baseDir = SwaggerConfig.generatorDir; final baseDir = config.baseDir;
final apiDir = SwaggerConfig.apiDir; final apiDir = config.apiDir;
final modelsDir = SwaggerConfig.modelsDir; final modelsDir = config.modelsDir;
progress('输出目录: $baseDir'); progress('输出目录: $baseDir');
progress('API 目录: $apiDir'); progress('API 目录: $apiDir');

33
lib/index.dart Normal file
View File

@ -0,0 +1,33 @@
/// # Swagger Generator Flutter
///
/// A powerful Flutter OpenAPI 3.0 code generator, optimized for the Dio + Retrofit stack.
///
/// ## Core Components
///
/// - **Config**: `ConfigRepository` for loading and accessing configuration.
/// - **Parse**: `SwaggerDataParser` to fetch and parse OpenAPI documents.
/// - **Validate**: `EnhancedValidator` to validate documents against OpenAPI specs and best practices.
/// - **Generate**: `ModelCodeGenerator` and `RetrofitApiGenerator` for creating Dart code.
/// - **Render**: `TemplateRenderer` for Mustache-based template rendering.
/// - **Output**: `GenerationOutputService` to write generated files to disk.
library swagger_generator_flutter;
// --- Core Public API ---
export 'core/config_repository.dart';
export 'core/error_reporter.dart';
export 'core/models.dart';
// --- Pipeline API (New Structure) ---
export 'pipeline/parse/swagger_data_parser.dart';
export 'pipeline/validate/enhanced_validator.dart';
export 'pipeline/generate/model_code_generator.dart';
export 'pipeline/generate/retrofit_api_generator.dart';
export 'pipeline/render/template_renderer.dart';
export 'pipeline/output/generation_output_service.dart';
// --- Utilities ---
export 'utils/logger.dart';
export 'utils/path_resolver.dart';
export 'utils/string_utils.dart';