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

68 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# chatapp3-golang Agent Guide
## 目标
- 这个仓库现在按模块组织,新增功能时不要再把代码堆回平铺目录。
- 路由、业务、工具函数、共享类型要分层放置,优先保持“一个文件只表达一个明确职责”。
## 目录约定
- `cmd/api`
- 仅负责启动、依赖组装、优雅退出。
- `cmd/consumer`
- 仅负责事件消费任务启动、优雅退出。
- 当前只承接 `registerreward` Redis Stream 与 `weekstar` RocketMQ 消费。
- `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 又写回逻辑文件
## 当前模块
- `invite`
- `baishun`
- `luckygift`
- `registerreward`
- `weekstar`
## 运行边界
- `chatapp3-golang`
- 负责 HTTP API 与事件消费。
- 不负责 `weekstar` 周期结算扫描、快照冻结、自动发奖、失败补发执行。
- `chatapp-cron`
-`weekstar` 结算、自动发奖、失败补发执行的唯一执行方。