用途:BESSER 代码生成器的运维参考,覆盖各生成器的选项、输出文件布局、重新生成/覆盖行为与安全定制方式。
主要能力:所有生成器实现同一接口 GeneratorInterface,含 init(model, output_dir=None) 与 generate()。省略 output_dir 时输出到 <cwd>/output/ 目录,目录会自动创建。生成器涵盖 Python/Java 类、Pydantic、JSON Schema、RDF、SQLAlchemy、SQL DDL、Supabase、FastAPI/REST/Django、WebApp、Flutter、对话智能体、量子电路、Terraform、PyTorch/TensorFlow 等,按 references/ 分文件给出细节。
使用方式:每次 generate() 会整体覆盖输出文件,模型是唯一事实来源。默认输出到 <cwd>/output/ 下单一文件;例外包括 BackendGenerator 默认 ./output_backend/ 并输出包结构,WebAppGenerator 必须指定 output_dir 并输出 frontend/、backend/、docker-compose.yml,DjangoGenerator 在当前目录创建项目,SupabaseGenerator 使用带时间戳的文件名因而不会覆盖。生成结果跨运行语义等价但非逐字节相同,集合遍历无序,字段与列顺序可能变化;不要对比两次重新生成的差异,也不要硬编码列位置,应按名称查找列。
安全定制:优先使用生成器选项(如 SQLAlchemyGenerator 的 dbms、BackendGenerator 的 http_methods 与 nested_creations、DjangoGenerator 的 containerization、QiskitGenerator 的 backend_type/shots、BAFGenerator 的 generation_mode);其次把定制代码放在导入生成代码的独立文件中;也可用包装脚本挂载生成的 FastAPI app;还可在模型层用 MethodImplementationType.BAL 或 CODE 定义方法,方法体原样插入生成的处理器,需自行确认其引用的名称在作用域内;模板覆盖与 git 补丁工作流适合小改动。不要把直接编辑生成文件作为主要工作流,不要混合生成与手写代码,也不要为小功能 fork 生成器。
限制与排查:BAL/CODE 方法体不被解析或限定作用域,方法名不得与同类属性或关联端同名,否则模型无法校验;名称映射需对照生成类确认。生成器运行但输出错误或为空时参见 debugging.md;安装/导入错误参见 besser-troubleshooting。部分生成器由子生成器编排,排错需定位到具体子生成器。网页编辑器需在 generators.py 中注册 SUPPORTED_GENERATORS 与 get_filename_for_generator() 后才会出现。具体输入输出、模板与注意事项暂未在资料中全部提供。