# 项目和任务特性规范 ## 原始需求 梳理项目框架,为后续开发做准备。 ## 边界确认 - **目标**: 分析现有项目结构、技术栈、架构模式、依赖关系,并输出分析报告。 - **范围**: 仅分析现有代码库,不涉及运行时环境或外部系统。 ## 需求理解 该项目是一个Go语言编写的后端服务,命名为 `bindbox_game`,可能是一个“盲盒游戏”相关的应用。 从目录结构来看,项目遵循了一定的分层架构或整洁架构思想,主要模块包括: - `cmd/`: 存放可执行命令,如代码生成器 (`gormgen`, `handlergen`)。 - `configs/`: 配置文件,区分不同环境 (`dev`, `fat`, `pro`, `uat`)。 - `deploy/`: 部署相关文件,如 `docker-compose.yaml`。 - `docs/`: 项目文档,包括 `swagger` 定义和一些说明文档。 - `internal/`: 项目核心业务逻辑,这是分析的重点。 - `scripts/`: 辅助脚本。 - `static/`: 静态资源。 `internal/` 目录下的结构进一步体现了分层设计: - `api/`: API接口定义,按模块划分(如 `admin`)。 - `repository/`: 数据仓库层,负责与数据库交互,使用了 `gorm`(从 `gormgen` 推断)和 `mysql`。 - `service/` 和 `services/`: 服务层,处理核心业务逻辑。 - `router/`: 路由定义和中间件。 - `pkg/`: 可重用的公共库或工具类,如日志、错误处理、加解密等。 - `code/`: 业务状态码定义。 - `metrics/`: 监控指标。 - `alert/`: 告警。 技术栈和依赖推断: - **语言**: Go - **Web框架**: 可能是 `Gin` 或类似框架(需要查看 `go.mod` 确认)。 - **ORM**: `GORM`(从 `gormgen` 和 `internal/repository/mysql` 目录推断)。 - **数据库**: `MySQL`。 - **文档**: `Swagger`。 - **部署**: `Docker`。 ## 疑问澄清 - Web框架具体是哪个? **Gin** - 项目依赖了哪些主要的第三方库? **GORM, Viper, Zap, Gin** - `service` 和 `services` 两个目录的区别是什么? `service` 目录为空,`services` 目录用于存放按功能模块组织的业务逻辑,但目前未被积极使用。 - `proposal` 目录的作用是什么? 定义了用于告警、日志等目的的数据结构和处理器。 接下来,我将通过分析 `go.mod` 文件来解答这些疑问。