bindbox-game/docs/开发规范/DESIGN_开发规范.md
邹方成 1ab39d2f5a
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 25s
refactor: 重构项目结构并重命名模块
feat(admin): 新增工会管理功能
feat(activity): 添加活动管理相关服务
feat(user): 实现用户道具卡和积分管理
feat(guild): 新增工会成员管理功能

fix: 修复数据库连接配置
fix: 修正jwtoken导入路径
fix: 解决端口冲突问题

style: 统一代码格式和注释风格
style: 更新项目常量命名

docs: 添加项目框架和开发规范文档
docs: 更新接口文档注释

chore: 移除无用代码和文件
chore: 更新Makefile和配置文件
chore: 清理日志文件

test: 添加道具卡测试脚本
2025-11-14 21:10:00 +08:00

82 lines
3.8 KiB
Markdown
Raw 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.

# DESIGN: 开发规范文档设计
本文档定义了最终 `docs/开发规范.md` 的结构和核心内容,旨在为后续的文档撰写提供清晰的蓝图。
## 1. 整体结构
最终的开发规范文档将分为以下几个核心章节,每个章节都将包含详细的规则描述和代码示例。
```mermaid
graph TD
A[开发规范] --\u003e B[1. 概述];
A --\u003e C[2. 目录与文件结构];
A --\u003e D[3. 命名规范];
A --\u003e E[4. API Handler 规范];
A --\u003e F[5. 数据传输对象 (DTO) 规范];
A --\u003e G[6. 错误处理规范];
A --\u003e H[7. 日志记录规范];
A --\u003e I[8. 注释与文档(Swagger)];
subgraph E [4. API Handler 规范]
E1[4.1 Handler 定义]
E2[4.2 路由与函数签名]
E3[4.3 参数绑定与校验]
E4[4.4 业务逻辑调用]
E5[4.5 响应处理]
end
subgraph F [5. 数据传输对象 (DTO) 规范]
F1[5.1 Request/Response 结构体]
F2[5.2 JSON Tags]
F3[5.3 Validation Tags]
end
```
## 2. 核心章节设计
### 2.1 概述
* **目的**:阐明制定此规范的背景和目标。
* **范围**明确规范的适用范围API 层)。
* **原则**:强调代码清晰、一致、可维护的核心原则。
### 2.2 目录与文件结构
* **规则**
* API 功能模块应在 `internal/api/{模块名}` 下创建独立目录。
* 每个目录包含 `*.go` 文件,每个文件实现一个独立的 API 端点。
* `{模块名}.go` 文件用于定义 `handler` 结构体和 `New` 初始化函数。
* **示例**:以 `admin` 模块为例,展示其目录结构。
### 2.3 命名规范
* **规则**
* Handler 文件名:使用小写蛇形命名法,如 `login.go`, `admin_create.go`
* 请求/响应结构体:使用驼峰式命名,并以 `Request`/`Response` 结尾,如 `loginRequest`, `loginResponse`
* Handler 函数:使用驼峰式命名,如 `Login()`, `CreateAdmin()`
### 2.4 API Handler 规范
* **Handler 定义**`handler` 结构体应包含 `logger` 和数据库连接(`readDB`, `writeDB`)。
* **路由与函数签名**Handler 函数必须返回 `core.HandlerFunc` 类型。
* **参数绑定与校验**:必须使用 `ctx.ShouldBindJSON()` 进行参数绑定,并结合 `validation` 包进行错误信息格式化。
* **业务逻辑调用**:通过 `h.readDB``h.writeDB` 与数据库交互,或调用 `service` 层方法。
* **响应处理**:成功时使用 `ctx.Payload(res)` 返回数据。
### 2.5 数据传输对象 (DTO) 规范
* **Request/Response 结构体**:每个 API 都应定义独立的请求和响应结构体。
* **JSON Tags**:所有结构体字段必须包含 `json:"..."` tag。
* **Validation Tags**:对需要校验的请求字段,必须添加 `binding:"..."` tag。
### 2.6 错误处理规范
* **规则**:必须使用 `ctx.AbortWithError(core.Error(...))` 来中断请求并返回标准格式的错误。
* **`core.Error` 参数**:需提供 HTTP 状态码、业务错误码 (`code.Code`) 和详细错误信息。
### 2.7 日志记录规范
* **规则**:通过注入的 `h.logger` 实例进行日志记录(虽然在 `admin` 示例中不明显,但这是标准实践)。
### 2.8 注释与文档 (Swagger)
* **规则**
* 每个 Handler 函数上方必须有完整的 Swagger 注解,包括 `@Summary`, `@Description`, `@Tags`, `@Param`, `@Success`, `@Failure`, `@Router` 等。
* 所有 DTO 字段和函数都应有清晰的中文注释。
## 3. 数据流与接口契约
本文档本身不定义新的数据流或接口,而是规范如何定义它们。其核心思想是:**通过严格的结构体和规范化的错误处理,确保所有 API 的接口契约都是明确和一致的。**