SuperAPI AI 工具集

go-usecase

编程与开发

查看项目

更新于 10-16 05:04

技能介绍

用途:在 Go 模块化架构中生成 use case 实现,覆盖业务操作、CRUD 用例,以及任何需要输入校验与错误处理、编排 ports 的领域逻辑。

主要能力与约定:每个操作一个文件,路径为 internal/modules/<module>/usecase/<noun>_<action>_usecase.go,例如 user_create_usecase.go、order_cancel_usecase.go。命名固定为 Struct 用 NounActionUseCase、Input 用 NounActionInput、Output 用 NounActionOutput、构造函数用 NewNounActionUseCase、方法为 Execute;Input 与 Output 必须始终定义,即使为空。

Execute 流程:首先执行 uc.validator.Struct(input) 校验(validate 标签如 required、min、max、email、oneof),随后执行业务逻辑(仓储、服务、领域检查),每个错误返回前必须记录日志,返回模块 errs 包中的类型化错误而非 errors.New。依赖使用 ports.* 接口,避免注入具体类型;每个 use case 只暴露一个 Execute(ctx context.Context, input Input) (Output, error)。Input/Output 必须是自包含的边界类型,不得引用共享模块 DTO/模型、不得带 json 标签、不得被其他 use case 复用。

Fx 装配:在模块 fx.go 中注册原始构造函数,并通过单个 provideDecoratedUseCases 函数用 ucdecorator.Wrap 包装,使用 fx.In/fx.Out 结构体。可观测性(tracing/metrics)不在 use case 内实现,由 ucdecorator 外部处理。

限制与校验:禁止缺失校验、未记录日志的错误、原始错误、具体类型注入、错误命名、冗余注释和包级独立函数。完成后运行 make lint 与 make nilaway 验证。