3.2 KiB
3.2 KiB
chatapp3-golang Agent Guide
目标
- 这个仓库现在按模块组织,新增功能时不要再把代码堆回平铺目录。
- 路由、业务、工具函数、共享类型要分层放置,优先保持“一个文件只表达一个明确职责”。
目录约定
cmd/api- 仅负责启动、依赖组装、优雅退出。
cmd/consumer- 仅负责事件消费任务启动、优雅退出。
- 当前只承接
registerrewardRedis Stream 与weekstarRocketMQ 消费。
internal/bootstrap- 负责配置加载、存储初始化、Java 网关装配。
api与consumer统一复用,不要重复写一份启动拼装逻辑。
internal/router- 只负责 HTTP 路由注册、请求绑定、中间件、统一响应。
- 每个模块单独一个
*_routes.go文件。
internal/service/<module>- 每个业务模块一个目录。
types.go放服务结构体、常量、DTO、内部类型。- 模块内辅助函数不要再统一塞进
utils.go,而是按语义放进normalize.go、stream.go、mapper.go、convert.go这类文件。 - 业务按职责拆文件,例如
config.go、page.go、callback.go、reward.go、consumer.go。 - 一个文件只保留一类逻辑,不要再出现“一个文件承接整个模块所有流程”的写法。
internal/common- 放跨模块共享的类型,比如
AppError、AuthUser。
- 放跨模块共享的类型,比如
internal/utils- 放跨模块复用的通用工具函数。
internal/model- 只放 Gorm 模型和表结构映射。
- 模型按业务模块拆文件,例如
invite_models.go、weekstar_models.go、luckygift_models.go。
internal/integration- 只放外部系统调用封装。
integration.Client已按职责包装成多个 gateway,新增下游能力时优先按网关语义扩展。
internal/repo- 只放基础存储初始化和仓储级装配。
- 不要再把 schema 自动修正逻辑塞回启动流程,数据库变更统一走
migrations/。
编码规则
- 新增 helper 时,优先判断是不是“辅助函数”:
- 模块内使用:放对应模块目录下有语义的文件名里,不要新增
utils.go - 跨模块复用:放
internal/utils
- 模块内使用:放对应模块目录下有语义的文件名里,不要新增
- 不要在 router 里写业务判断,不要在 service 里拼 HTTP 响应。
- 不要把不同模块的 request / response / callback DTO 混放到一个文件里。
- 不要把配置查询、榜单查询、MQ 消费、发奖、回调处理重新揉回一个文件。
- 新增路由时,先在
internal/router下新建模块路由文件,再在router.go里挂载。 weekstar自动结算和自动发奖已经迁到chatapp-cron,不要在这个仓库重新引入任何 scheduler/settlement runner。
提交前检查
goimports -w涉及 Go 文件gofmt -w涉及文件go test ./...- 确认没有把模块 helper 又写回逻辑文件
当前模块
invitebaishunluckygiftregisterrewardweekstar
运行边界
chatapp3-golang- 负责 HTTP API 与事件消费。
- 不负责
weekstar周期结算扫描、快照冻结、自动发奖、失败补发执行。
chatapp-cron- 是
weekstar结算、自动发奖、失败补发执行的唯一执行方。
- 是