# 目录组织候选方案与推荐方案(Dart/Flutter OpenAPI 代码生成器) 最后更新:2025-11-22 适用范围:lib/**、templates/**、docs/**、test/**、example/** 不改变现有行为与生成结果;仅优化结构与依赖方向。 ## 现状简述(基于 STRUCTURE_AUDIT) - 分层清晰:commands/config/core/parsers/validators/generators/utils/templates - 聚合导出:swagger_generator_flutter.dart、core/error_reporter.dart、core/models.dart、utils/string_utils.dart - EnhancedValidator 为装饰器,依赖 SchemaValidator;ConfigRepository 为配置主入口 - 主要改进空间: 1) 统一对外“index.dart”聚合导出,避免深层路径泄漏 2) 命令层集中注入单个 ConfigRepository 实例以减少 I/O(可选) 3) 明确模板搜索优先级与上下文基线的构建点 --- ## 方案 A(保守):最小改动,快速落地 目标:基本不动现有目录,仅补充聚合导出与文档约束。 建议目录(节选) ``` lib/ core/ models/ models.dart # 已有:聚合导出 error_reporter/ error_reporter.dart# 已有:聚合导出 utils/ string_utils/ string_utils.dart # 已有:聚合导出 swagger_generator_flutter.dart # 对外主入口 ``` 措施 - 在 docs/USAGE_GUIDE.md 强化“仅从聚合入口导入”的约束 - 在 analysis_options.yaml 添加禁止深层导入的 lint(可选) 优点 - 变更最小,零风险,立刻可用 缺点 - 不能进一步降低跨层依赖;规范依赖于文档与自觉 影响面 - 对外零影响;测试与 CLI 行为不变 --- ## 方案 B(平衡,推荐):完善聚合导出与依赖边界 目标:降低跨层耦合,巩固入口文件,保留现有分层和命名 建议目录(节选) ``` lib/ commands/ base_command.dart generate_command.dart services/ document_merge_service.dart document_filter_service.dart generation_output_service.dart core/ config.dart config_repository.dart template_renderer.dart template/ template_loader.dart (part) models/ models.dart error_reporter/ error_reporter.dart exceptions/ exceptions.dart parsers/ swagger_fetcher.dart swagger_data_parser.dart validators/ core/ rules/ schema_validator.dart enhanced_validator.dart generators/ base_generator.dart model/ model_code_generator.dart retrofit_api/ retrofit_api_generator.dart utils/ file_utils.dart path_resolver.dart reference_resolver.dart string_utils/ string_utils.dart templates/ api/ models/ common/ swagger_generator_flutter.dart ``` 执行要点 - 为 commands/core/parsers/validators/generators/utils 分别补齐/校验聚合导出(需要时新增 index.dart) - 内部互相依赖仅经聚合文件或上层入口(避免跨层直连深文件) - TemplateRenderer 中的上下文构建固化(已完成):仅从 ConfigRepository 构建一次 - 命令层(GenerateCommand)可选集中创建单例 config 并下传 优点 - 依赖边界更清晰;可渐进治理深层导入 - 变更成本适中,兼容性强 缺点 - 需少量导入路径梳理(指向聚合文件) 影响面 - 对外零影响;测试与 CLI 行为不变 --- ## 方案 C(激进):按业务流分区 目标:以 Parse → Validate → Generate → Render → Output 的流水线重组目录 建议目录草案(节选) ``` lib/ pipeline/ parse/ (swagger_fetcher, swagger_data_parser) validate/ (schema_validator, enhanced_validator, error_reporter) generate/ models/ apis/ templates/ (renderer, loader, services) output/ (generation_output_service, file_utils) core/ (models, exceptions, config_repository) commands/ utils/ ``` 优点 - 强业务流程导向;定位问题成本更低 缺点 - 变动大,PR 体积大;回滚复杂 影响面 - 需要系统性迁移与长时间稳定验证 --- ## 推荐方案 - 采纳方案 B(平衡): - 当前分层已合理,主要补强聚合导出与导入规范 - 最小代价减少未来跨层依赖与“深层路径”侵蚀 --- ## 对测试与命令行为的影响 - 三个方案均“不改变行为”;仅目录/导入治理 - 质量门禁:每步迁移后确保 `dart analyze` 0 error / 0 warning、`dart test` 全绿