GoTest/PROJECT_SUMMARY.md
Table 4f6f308d23 docs: 更新 README 和 PROJECT_SUMMARY 文档
- README.md 更新:
  * 文档生成部分:添加详细的命令说明和使用方法
  * 新增 SWAGGER_PORT 配置说明章节,包括变量定义、影响范围、修改方法
  * 更新系统接口表格中的 Swagger 描述
  * 说明应用内置 Swagger UI 的使用方法

- PROJECT_SUMMARY.md 更新:
  * 添加项目概述描述
  * 更新 API 文档部分,反映已实现的功能
  * 更新构建和部署部分,添加端口配置和进程管理功能
  * 详细分类 Make 命令,添加所有新命令说明
  * 更新系统接口说明,添加 Swagger UI 访问地址
  * 更新下一步建议,使用新的文档生成命令
  * 新增"最新优化功能"章节,详细说明端口配置和文档优化
2025-11-29 20:13:00 +08:00

349 lines
10 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.

# Yinli API 项目总结
## 🎉 项目概述
基于 Golang Gin 框架构建的高性能 RESTful API 服务,集成了 JWT 认证、Redis 缓存、频率限制、CORS 等安全特性,支持多环境部署和完整的 API 文档生成。
以下是项目的详细总结:
## ✅ 已完成的功能
### 1. 项目基础架构
- ✅ 基于 Gin 框架的 RESTful API 服务
- ✅ 清晰的项目目录结构src 目录统一管理源代码)
- ✅ Go 模块依赖管理
### 2. 配置管理系统
- ✅ 使用 Viper 库进行配置管理
- ✅ 支持三种环境配置dev开发、stage预发布、prod生产
- ✅ 配置文件保存在 `config/` 目录
### 3. 数据库集成
- ✅ MySQL 数据库连接和管理
- ✅ GORM ORM 库集成
- ✅ 用户模型和数据访问层
- ✅ 数据库初始化脚本(`sql/init.sql`
### 4. 缓存系统
- ✅ Redis 缓存集成
- ✅ 完整的 Redis 操作封装
- ✅ 用于频率限制和会话管理
### 5. 安全特性
- ✅ JWT 认证系统
- ✅ CORS 跨域支持
- ✅ 基于 Redis 的 API 频率限制
- ✅ bcrypt 密码加密
- ✅ 多层中间件安全防护
### 6. 用户认证接口
- ✅ 用户注册接口 (`POST /api/auth/register`)
- ✅ 用户登录接口 (`POST /api/auth/login`)
- ✅ 用户资料管理接口
- ✅ 管理员权限接口
### 7. 构建和部署
- ✅ 完整的 Makefile 构建脚本
- ✅ 支持多环境启动命令(`make dev`、`make stage`、`make prod`
- ✅ Docker 容器化支持
- ✅ 自动生成 Docker Compose 文件
- ✅ 端口配置变量化(`SERVER_PORT`、`SWAGGER_PORT`
- ✅ 端口占用检查和自动处理
- ✅ 端口进程管理命令(`kill-port`、`kill-port-force`
### 8. 测试框架
- ✅ 使用 Testify 测试框架
- ✅ 配置系统测试
- ✅ 中间件测试
- ✅ 接口测试框架(需要数据库连接时可启用)
### 9. API 文档
- ✅ Swagger 文档自动生成(`make docs`
- ✅ 自动安装 swag 工具(如果未安装)
- ✅ 自动过滤生成过程中的警告信息
- ✅ 自动修复生成的 `docs.go` 文件兼容性问题
- ✅ 支持按环境分离文档生成dev/stage/prod
- ✅ Docker Swagger UI 服务(`make docs-serve`
- ✅ 应用内置 Swagger UI`/swagger/index.html`
- ✅ 文档保存在 `doc/` 目录
### 10. 详细文档
- ✅ 完整的 README.md 说明文档
- ✅ 技术架构说明
- ✅ 开发调试指南
- ✅ 部署说明
## 🚀 快速启动指南
### 1. 基本启动
```bash
# 进入项目目录
cd /home/table/Workspace/go/src/yinli-api
# 查看所有可用命令
make help
# 下载依赖
make deps
# 启动开发环境
make dev
```
### 2. Docker 启动
#### 开发环境
```bash
# 生成 Docker Compose 文件(可选,文件已存在)
make docker-compose-dev
# 启动开发环境容器
make docker-up-dev
# 查看日志
make docker-logs-dev
# 停止服务
make docker-down-dev
```
#### 预发布环境
```bash
# 启动预发布环境容器
make docker-up-stage
# 查看日志
make docker-logs-stage
# 停止服务
make docker-down-stage
```
#### 生产环境
```bash
# 设置环境变量(重要!)
export MYSQL_ROOT_PASSWORD=your_secure_password
export REDIS_PASSWORD=your_redis_password
# 启动生产环境容器
make docker-up-prod
# 查看日志
make docker-logs-prod
# 停止服务
make docker-down-prod
```
### 3. 运行测试
```bash
# 运行所有测试
make test
# 生成测试覆盖率报告
make test-coverage
```
## 📁 项目结构概览
```
yinli-api/
├── src/ # 源代码目录
│ ├── main.go # 应用程序入口
│ ├── handler/ # HTTP 处理器
│ ├── middleware/ # 中间件
│ ├── model/ # 数据模型
│ ├── repository/ # 数据访问层
│ ├── service/ # 业务逻辑层
│ └── pkg/ # 可复用包
│ ├── auth/ # JWT 认证
│ ├── cache/ # Redis 缓存
│ ├── config/ # 配置管理
│ └── database/ # 数据库连接
├── config/ # 配置文件目录
│ ├── dev.yaml # 开发环境配置
│ ├── stage.yaml # 预发布环境配置
│ └── prod.yaml # 生产环境配置
├── docker/ # Docker 相关文件
├── sql/ # 数据库脚本
├── test/ # 测试文件
├── Dockerfile # Docker 镜像构建
├── Makefile # 构建脚本
└── README.md # 项目说明
```
## 🔧 主要技术栈
- **Web 框架**: Gin v1.11.0
- **数据库**: MySQL 8.0 + GORM
- **缓存**: Redis 7
- **认证**: JWT (golang-jwt/jwt/v5)
- **配置**: Viper v1.21.0
- **测试**: Testify v1.11.1
- **文档**: Swagger (gin-swagger)
- **容器**: Docker + Docker Compose
## 🛠️ 可用的 Make 命令
### 开发命令
```bash
make help # 显示所有可用命令
make dev # 启动开发环境
make stage # 启动预发布环境
make prod # 启动生产环境
```
### 构建命令
```bash
make build # 构建应用程序
make build-all # 构建所有平台版本
make clean # 清理构建文件
```
### 测试命令
```bash
make test # 运行测试
make test-coverage # 运行测试并生成覆盖率报告
```
### 文档命令
```bash
make docs # 生成 API 文档(自动安装 swag
make docs-serve # 启动 Swagger UI 服务器Docker
make docs-stop # 停止 Swagger UI 服务器
```
### Docker 命令
```bash
make docker-up-dev # 启动 Docker 开发环境
make docker-up-stage # 启动 Docker 预发布环境
make docker-up-prod # 启动 Docker 生产环境
make docker-down-dev # 停止开发环境容器
make docker-logs-dev # 查看开发环境日志
make docker-ps # 查看所有容器状态
```
### 端口管理命令
```bash
make kill-port PORT=1234 # 终止指定端口的进程
make kill-port-force PORT=1234 # 强制终止指定端口的进程
make kill-1234 # 终止默认端口 1234 的进程
```
## 📡 API 接口列表
### 认证接口
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/login` - 用户登录
### 用户接口(需要 JWT 认证)
- `GET /api/user/profile` - 获取用户资料
- `PUT /api/user/profile` - 更新用户资料
- `PUT /api/user/password` - 修改密码
### 管理员接口(需要管理员权限)
- `GET /api/admin/users` - 获取用户列表
- `DELETE /api/admin/users/{id}` - 删除用户
- `PUT /api/admin/users/{id}/status` - 更新用户状态
### 系统接口
- `GET /health` - 健康检查
- `GET /swagger/*` - API 文档Swagger UI
- 访问地址:`http://localhost:$(SERVER_PORT)/swagger/index.html`
- 需要先执行 `make docs` 生成文档
## 🔒 安全特性
1. **JWT 认证**: 基于 JSON Web Token 的用户认证
2. **CORS 保护**: 可配置的跨域资源共享
3. **频率限制**: 基于 Redis 的 API 调用频率限制
4. **密码加密**: 使用 bcrypt 加密用户密码
5. **中间件保护**: 多层安全中间件防护
## 🌍 环境配置
项目支持三种环境配置,每种环境都有独立的配置文件:
- **dev**: 开发环境,详细日志,宽松的安全设置
- **stage**: 预发布环境,生产级配置,用于测试
- **prod**: 生产环境,最严格的安全设置
## 📊 测试覆盖
项目包含以下测试:
- 配置系统测试
- JWT 认证中间件测试
- CORS 中间件测试
- 请求 ID 中间件测试
- 基础 API 接口测试
## 🚀 部署建议
### 开发环境
```bash
make dev
```
### 生产环境
```bash
# 设置环境变量
export MYSQL_ROOT_PASSWORD=your_secure_password
export REDIS_PASSWORD=your_redis_password
# 使用 Docker 部署
make docker-up-prod
# 查看日志
make docker-logs-prod
```
## 📝 下一步建议
1. **数据库设置**: 确保 MySQL 数据库运行并执行 `sql/init.sql`
2. **Redis 设置**: 确保 Redis 服务运行
3. **环境变量**: 在生产环境中设置敏感配置的环境变量
4. **SSL 证书**: 在生产环境中配置 HTTPS
5. **监控日志**: 添加应用监控和日志收集
6. **API 文档**: 运行 `make docs` 自动生成 Swagger 文档,使用 `make docs-serve` 启动 Swagger UI 服务器
## 🔧 最新优化功能
### 端口配置管理
- **SERVER_PORT 变量**:统一管理应用服务器端口(默认 1234
- 自动更新配置文件中的 `server.port`
- 自动更新 Docker Compose 端口映射
- 支持端口占用检查和自动处理
- **SWAGGER_PORT 变量**:统一管理 Swagger UI 端口(默认 8081
- Docker Swagger UI 容器端口映射
- 静态文件服务器端口
### API 文档生成优化
- **自动安装工具**`make docs` 自动检查并安装 swag 工具
- **警告过滤**:自动过滤生成过程中的警告信息
- **兼容性修复**:自动修复生成的 `docs.go` 文件兼容性问题
- **Docker Swagger UI**:使用 Docker 运行完整的 Swagger UI 界面
- **应用内置 UI**:支持通过 `/swagger/index.html` 访问文档
### Docker 命令优化
- **命令命名统一**`docker-logs` → `docker-logs-dev`,保持命名一致性
- **自动重试机制**Docker 容器停止失败时自动重试
- **权限错误处理**:自动检测并处理 rootless Docker 权限问题
## 🎯 项目特色
- **完整的企业级架构**: 分层清晰,易于维护
- **高度可配置**: 支持多环境配置
- **安全性强**: 多重安全防护机制
- **易于部署**: Docker 容器化支持
- **测试完备**: 完整的测试框架
- **文档齐全**: 详细的开发和部署文档
## 🔗 相关链接
- [Gin 框架文档](https://gin-gonic.com/)
- [GORM 文档](https://gorm.io/)
- [Viper 配置库](https://github.com/spf13/viper)
- [JWT Go 库](https://github.com/golang-jwt/jwt)
- [Redis Go 客户端](https://github.com/go-redis/redis)