108 lines
2.6 KiB
Plaintext
108 lines
2.6 KiB
Plaintext
---
|
||
description:
|
||
globs:
|
||
alwaysApply: false
|
||
---
|
||
# Golang DDD 项目规范指南
|
||
|
||
## 项目架构规范
|
||
|
||
### 1. 技术栈要求
|
||
- 使用 Golang 作为主要开发语言
|
||
- 使用 Beego 作为 Web 框架
|
||
- 代码必须通过 golint 和 golangci-lint 检查
|
||
- 遵循 DDD (Domain-Driven Design) 架构模式
|
||
|
||
### 2. 目录结构规范
|
||
```
|
||
internal/
|
||
├── domain/ # 领域层
|
||
│ ├── entity/ # 领域实体
|
||
│ ├── repository/ # 仓储接口
|
||
│ └── service/ # 领域服务
|
||
├── infrastructure/ # 基础设施层
|
||
│ ├── persistence/ # 持久化实现
|
||
│ ├── messaging/ # 消息队列
|
||
│ └── cache/ # 缓存实现
|
||
├── application/ # 应用层
|
||
│ ├── dto/ # 数据传输对象
|
||
│ ├── service/ # 应用服务
|
||
│ └── assembler/ # DTO转换器
|
||
├── interfaces/ # 接口层
|
||
│ ├── http/ # HTTP接口
|
||
│ ├── grpc/ # gRPC接口
|
||
│ └── middleware/ # 中间件
|
||
└── common/ # 公共组件
|
||
├── config/ # 配置管理
|
||
├── logger/ # 日志管理
|
||
└── utils/ # 工具函数
|
||
```
|
||
|
||
### 3. 代码规范
|
||
- 所有代码必须放在 `internal` 目录下
|
||
- 遵循 Go 标准项目布局
|
||
- 使用接口进行依赖倒置
|
||
- 每个包必须有清晰的职责划分
|
||
- 使用依赖注入管理依赖关系
|
||
|
||
### 4. 分布式支持
|
||
- 支持分布式部署
|
||
- 实现优雅关闭机制
|
||
- 支持 Kubernetes 和 Docker Swarm 部署
|
||
- 实现分布式链路追踪
|
||
- 支持服务注册与发现
|
||
|
||
### 5. 监控和可观测性
|
||
- 集成 Prometheus 指标收集
|
||
- 实现健康检查接口
|
||
- 支持分布式追踪(如 Jaeger)
|
||
- 完善的日志记录系统
|
||
|
||
### 6. 错误处理
|
||
- 使用自定义错误类型
|
||
- 统一的错误处理机制
|
||
- 错误码规范
|
||
- 错误日志记录规范
|
||
|
||
### 7. 测试规范
|
||
- 单元测试覆盖率要求 > 80%
|
||
- 集成测试覆盖关键业务流程
|
||
- 性能测试基准
|
||
- 测试用例命名规范
|
||
|
||
### 8. 文档规范
|
||
- API 文档使用 Swagger
|
||
- 代码注释规范
|
||
- 架构文档维护
|
||
- 部署文档更新
|
||
|
||
### 9. 安全规范
|
||
- 敏感配置加密
|
||
- 接口认证授权
|
||
- 数据加密传输
|
||
- 防注入攻击
|
||
|
||
### 10. 性能规范
|
||
- 接口响应时间要求
|
||
- 并发处理能力
|
||
- 资源使用限制
|
||
- 缓存策略
|
||
|
||
## 开发流程
|
||
1. 遵循 Git Flow 工作流
|
||
2. 代码审查要求
|
||
3. CI/CD 流程
|
||
4. 版本发布规范
|
||
|
||
## 依赖管理
|
||
- 使用 Go Modules 管理依赖
|
||
- 定期更新依赖版本
|
||
- 依赖版本锁定
|
||
- 依赖安全检查
|
||
|
||
## 部署规范
|
||
- 容器化部署
|
||
- 环境配置管理
|
||
- 服务编排
|
||
- 监控告警配置
|