yumi-golang/AGENT.md
2026-04-20 13:38:30 +08:00

3.2 KiB
Raw Blame History

chatapp3-golang Agent Guide

目标

  • 这个仓库现在按模块组织,新增功能时不要再把代码堆回平铺目录。
  • 路由、业务、工具函数、共享类型要分层放置,优先保持“一个文件只表达一个明确职责”。

目录约定

  • cmd/api
    • 仅负责启动、依赖组装、优雅退出。
  • cmd/consumer
    • 仅负责事件消费任务启动、优雅退出。
    • 当前只承接 registerreward Redis Stream 与 weekstar RocketMQ 消费。
  • internal/bootstrap
    • 负责配置加载、存储初始化、Java 网关装配。
    • apiconsumer 统一复用,不要重复写一份启动拼装逻辑。
  • internal/router
    • 只负责 HTTP 路由注册、请求绑定、中间件、统一响应。
    • 每个模块单独一个 *_routes.go 文件。
  • internal/service/<module>
    • 每个业务模块一个目录。
    • types.go 放服务结构体、常量、DTO、内部类型。
    • 模块内辅助函数不要再统一塞进 utils.go,而是按语义放进 normalize.gostream.gomapper.goconvert.go 这类文件。
    • 业务按职责拆文件,例如 config.gopage.gocallback.goreward.goconsumer.go
    • 一个文件只保留一类逻辑,不要再出现“一个文件承接整个模块所有流程”的写法。
  • internal/common
    • 放跨模块共享的类型,比如 AppErrorAuthUser
  • internal/utils
    • 放跨模块复用的通用工具函数。
  • internal/model
    • 只放 Gorm 模型和表结构映射。
    • 模型按业务模块拆文件,例如 invite_models.goweekstar_models.goluckygift_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 又写回逻辑文件

当前模块

  • invite
  • baishun
  • luckygift
  • registerreward
  • weekstar

运行边界

  • chatapp3-golang
    • 负责 HTTP API 与事件消费。
    • 不负责 weekstar 周期结算扫描、快照冻结、自动发奖、失败补发执行。
  • chatapp-cron
    • weekstar 结算、自动发奖、失败补发执行的唯一执行方。