GoTest/CHANGELOG.md
Table 84055fecfe feat: 优化 API 文档生成和 Swagger UI 服务
- 优化 make docs 命令:
  * 自动检查并安装 swag 工具
  * 自动过滤 swag 生成过程中的警告信息
  * 自动修复生成的 docs.go 文件中的兼容性问题(移除 LeftDelim 和 RightDelim 字段)

- 优化 make docs-serve 命令:
  * 使用 Docker 运行 Swagger UI 容器,提供完整的 Swagger UI 界面
  * 新增 make docs-stop 命令,用于停止 Swagger UI 容器
  * 引入 SWAGGER_PORT 变量统一管理 Swagger UI 端口配置(默认 8081)

- 修复应用内置 Swagger UI 无法加载文档问题:
  * 在 main.go 中导入生成的 docs 包(_ "yinli-api/doc/dev")
  * 修复 docs.go 文件中的兼容性问题
  * 解决 "Failed to load API definition" 错误

- 更新 CHANGELOG.md,记录所有变更
2025-11-29 20:07:24 +08:00

4.5 KiB
Raw Permalink Blame History

更新日志

本文档记录了项目的所有重要变更,按照版本号倒序排列。

[未发布]

🆕 新增功能

  • 端口配置变量化:在 Makefile 中引入 SERVER_PORT 变量,统一管理应用端口配置
  • 端口进程管理:新增 kill-portkill-port-forcekill-$(SERVER_PORT) 命令,方便管理端口占用
  • 动态配置更新:支持在启动时自动更新配置文件中的端口和主机地址

🔧 改进优化

  • 项目结构重构:将 @internal 目录重命名为 src@pkg 目录移至 src/pkgcmd/main.go 移至 src/main.go
  • 版本管理优化Makefile 中的 VERSION 变量自动从最新的 git tag 读取
  • 端口检查逻辑优化
    • 支持检测 Docker 容器占用端口
    • 提供自动停止 Docker 容器的选项
    • 改进端口占用检测的准确性,过滤无效 PID
  • Docker Compose 配置优化
    • 移除 MySQL 和 Redis 服务定义,改为使用宿主机服务
    • 支持动态获取宿主机 IP 并配置 extra_hosts
    • 为 MySQL 服务添加优雅关闭配置(stop_grace_periodstop_signalinit
  • 配置管理优化
    • 支持本地模式和 Docker 模式的动态切换
    • make dev/stage/prod 使用 localhost
    • make docker-up-* 使用 host.docker.internal
  • Docker 命令命名优化
    • docker-logs 重命名为 docker-logs-dev,保持与 docker-logs-stagedocker-logs-prod 的命名一致性
    • 统一日志查看命令命名规范
  • API 文档生成优化
    • make docs 命令自动检查并安装 swag 工具
    • 自动过滤 swag 生成过程中的警告信息
    • 自动修复生成的 docs.go 文件中的兼容性问题
  • Swagger UI 服务优化
    • make docs-serve 使用 Docker 运行 Swagger UI 容器,提供完整的 Swagger UI 界面
    • 新增 make docs-stop 命令,用于停止 Swagger UI 容器
    • 引入 SWAGGER_PORT 变量统一管理 Swagger UI 端口配置

🐛 问题修复

  • 修复 Docker 模式下 SERVER_PORT 未生效问题
    • PORT 变量重命名为 SERVER_PORT
    • 修复 sed 命令无法处理空端口值的问题
    • main.go 中增加端口为空检查
  • 修复 Docker 容器连接宿主机服务问题
    • 修复 MySQL 连接问题(bind-address 和用户权限)
    • 修复 Redis 连接问题(bindprotected-mode
    • 修复 rootless Docker 的 host-gateway 问题
  • 修复 MySQL 容器无法正常停止问题
    • 增加优雅关闭时间到 60 秒
    • 使用 init 进程管理子进程
    • 添加自动检测和重试机制
  • 修复应用内置 Swagger UI 无法加载文档问题
    • main.go 中导入生成的 docs 包
    • 修复 docs.go 文件中的兼容性问题(移除不兼容的 LeftDelimRightDelim 字段)
    • 解决 "Failed to load API definition" 错误

📚 文档更新

  • 新增 CHANGELOG.md 文件,记录项目所有重要变更,按功能类型分类
  • 添加 SERVER_PORT 配置说明,包括影响范围和修改方法
  • 添加 Docker 容器连接宿主机服务的完整排查指南
  • 添加端口进程管理说明
  • 添加 Docker 权限问题解决方案
  • 添加常见错误信息和排查步骤
  • 清理项目中的 PDF 文件PROJECT_SUMMARY.pdf、README.pdf

[2025-11-29] - 项目开发阶段

版本管理

  • Makefile 中的 VERSION 变量从 git tag 自动读取(格式:20251129.120251129.220251129.3

项目结构重构

  • @internal 目录重命名为 src
  • @pkg 目录移动到 src/pkg
  • cmd/main.go 移动到 src/main.go
  • 移除 cmd 目录
  • 更新所有文件引用路径

Docker 相关优化

  • 支持 dev、stage、prod 三种环境的 Docker Compose 部署
  • 优化 Docker 镜像拉取配置(支持中国大陆镜像源)
  • 配置 Go 代理(GOPROXY=https://goproxy.cn,direct
  • 移除 Docker Compose 中的 MySQL 和 Redis 服务,改为使用宿主机服务
  • 支持动态获取宿主机 IP 并配置 extra_hosts
  • 优化 MySQL 容器优雅关闭配置

端口配置优化

  • 引入 SERVER_PORT 变量统一管理端口配置
  • 优化端口占用检查逻辑
  • 新增端口进程管理命令

文档完善

  • 完善 README.md 中的配置说明
  • 添加 Docker 部署指南
  • 添加常见问题解答
  • 添加 SERVER_PORT 配置说明

版本说明

  • 格式YYYYMMDD.N(例如:20251129.1
  • 规则:日期 + 序号,同一天多次发布递增序号
  • 获取方式git tag --sort=-version:refname | head -n 1