用途:按 Go 模块化架构约定生成服务文件,适用于创建可复用的业务服务。
主要能力:采用三文件模式,每个服务最多包含三个文件——DTO 结构体(internal/modules/<module>/dto/<service_name>_dto.go)、端口接口(internal/modules/<module>/ports/<service_name>_service.go)、服务实现(internal/modules/<module>/service/<service_name>_service.go)。支持单动作服务(Execute 模式)、多方法服务(具名方法)和无依赖的无状态服务。
使用方式:先创建 DTO 文件,再创建端口接口,然后创建服务实现,最后在模块的 module.go 或 fx.go 中添加 Fx 装配,运行 make lint 校验、make nilaway 做静态分析。Fx 装配使用 fx.Provide 配合 fx.Annotate 与 fx.As 绑定接口。
关键约定:接口位于 ports 包且无后缀,实现结构体同名但位于 service 包;构造函数 NewXxxService 必须返回指针;结构体下方添加编译期接口断言 var _ ports.XxxService = (*XxxService)(nil);执行 I/O 的方法必须以 context.Context 为首参数并使用 trace.Span,span 名称格式为 StructName.MethodName;依赖只面向端口接口,不依赖具体实现;每个返回的错误须先用 Bricks logger 记录再返回。
限制:资料未提供安装命令、收费、价格、平台与效果信息;纯工具类服务可省略 logger 与 config 并跳过链路追踪。