|
|
6f1350b527
|
修复日志中间件的 UserID 类型转换 panic 问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m31s
问题描述:
- 认证中间件存储的 UserID 是 uint 类型
- 日志中间件和错误上下文错误地将其断言为 string 类型
- 导致所有认证请求在记录访问日志时发生 panic
修复内容:
1. pkg/logger/middleware.go
- 修改 UserID 变量类型从 string 为 uint
- 使用安全的类型断言 (uid.(uint))
- 使用 zap.Uint 记录日志
2. pkg/errors/context.go
- 修改 UserID 类型断言从 string 为 uint
- 使用 strconv.FormatUint 转换为 string 用于错误上下文
影响范围:
- 修复所有需要认证的接口的 panic 错误
- 包括 /api/admin/shops, /api/admin/me, /api/admin/permissions 等
|
2026-01-21 12:17:19 +08:00 |
|
|
|
9795bb9ace
|
重构规范文档:提取详细规范为 6 个 Skills 实现模块化和按需加载
- 新增 6 个 Skill 文件:api-routing, db-migration, db-validation, doc-management, dto-standards, model-standards
- 简化 AGENTS.md 和 CLAUDE.md,保留核心规范,详细内容移至 Skills
- 添加 Skills 触发表格,说明各规范的加载时机
- 优化规范文档结构,提升可维护性和可读性
|
2026-01-21 11:19:13 +08:00 |
|
|
|
cfac546f14
|
完善开发规范:新增 PostgreSQL MCP 数据库验证规范
- 在 AGENTS.md 中添加「数据库验证规范」章节
- 强制要求 AI 在测试接口时使用 PostgreSQL MCP 验证数据正确性
- 提供 4 个可用工具说明和 3 个典型验证场景示例
- 在 README.md 中添加规范文档链接,便于快速查阅
|
2026-01-21 11:00:14 +08:00 |
|
|
|
573ef28237
|
完善 API 文档生成规范:统一路由注册和 OpenAPI 文档自动生成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m32s
主要改进:
1. 新增 docs/api-documentation-guide.md 详细文档指南
2. 在 AGENTS.md 中添加路由注册规范章节
3. 更新 README.md 文档目录结构
路由注册改进:
- 统一使用 Register() 函数注册路由并自动生成文档
- 所有接口必须指定 RouteSpec(Summary, Tags, Input, Output, Auth)
- 修复 docs.go 和 gendocs/main.go 使用 RegisterRoutesWithDoc 统一注册
DTO 规范更新:
- shop_dto.go 和 shop_account_dto.go 补充完整的 description 标签
- 所有枚举字段必须列出可能值和中文说明
文档生成优化:
- admin-openapi.yaml 自动生成更新
- 健康检查和任务管理接口加入文档
- H5 认证接口完整文档化
规范文档管理:
- 添加规范文档管理流程说明
- 详细文档放在 docs/ 目录
- AGENTS.md 只保留核心规则和引导链接
|
2026-01-21 10:20:52 +08:00 |
|
|
|
291c3d1b09
|
修复数据库时区问题:在 DSN 连接字符串中添加 TimeZone=Asia/Shanghai 参数
问题描述:
- PostgreSQL 数据库时区设置为 UTC
- 应用代码使用本地时区(Asia/Shanghai, UTC+8)
- 导致数据库存储的时间戳相差 8 小时
解决方案:
- 在 pkg/database/postgres.go 的 DSN 构建中添加 TimeZone=Asia/Shanghai
- PostgreSQL 驱动会自动处理时区转换(应用时区 ↔ UTC)
- 与测试代码保持一致(测试中已使用该参数)
影响范围:
- 新写入的时间戳将正确转换为 UTC 存储
- 从数据库读取的时间自动转换为应用时区
- 需要重启服务使配置生效
|
2026-01-21 10:20:25 +08:00 |
|
|
|
4abbf558e4
|
完善 DTO 规范:统一 description 标签并添加 AI 助手自动检查指引
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m28s
- 修复所有 DTO 文件的 description 标签(10 个文件)
- 枚举字段统一使用中文说明(用户类型、角色类型、权限类型等)
- 状态字段明确说明 0/1 含义
- validate 标签与 OpenAPI 标签保持一致
- 在 AGENTS.md 和 CLAUDE.md 添加 DTO 规范章节
- AI 助手必须执行的 7 项检查清单
- 常见枚举字段标准值参考
- 确保未来 AI 助手自动遵循规范
- 创建规范文档
- docs/code-review-checklist.md(Code Review 检查清单)
- docs/dto-improvement-summary.md(DTO 改进总结)
- docs/ai-dto-guidelines-update.md(AI 指引更新说明)
- 重新生成 OpenAPI 文档(375 个 description 标签)
影响:所有 API 字段现在都有清晰的中文说明,前端开发更友好
|
2026-01-20 15:10:11 +08:00 |
|
|
|
1bee64fc65
|
修复 CI/CD 部署逻辑:强制更新 docker-compose.prod.yml
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m0s
根本问题:
- 第一次部署时复制的 docker-compose.prod.yml 没有环境变量
- 后续部署跳过复制,导致服务器一直使用旧版本配置
- 容器启动时因缺少 DB_HOST 环境变量立即退出
- 健康检查失败 → 容器 unhealthy
服务器日志证实:
- 容器反复重启
- 每次都显示 '错误: DB_HOST 环境变量未设置'
- entrypoint-api.sh 第10行检查失败后 exit 1
修复内容:
- docker-compose.prod.yml 每次部署强制更新
- configs 目录保留现有配置(避免覆盖运行时调整)
- 确保最新的环境变量配置生效
|
2026-01-20 11:57:25 +08:00 |
|
|
|
a80dc1e69d
|
修复容器健康检查失败的核心问题:IPv6 vs IPv4 和权限
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m47s
问题诊断(本地运行镜像验证):
1. 服务实际已启动在 3000 端口
2. 从宿主机访问健康检查 ✅ 成功
3. 容器内部 wget localhost:3000 ❌ 失败 (Connection refused)
4. 健康检查尝试连接 [::1]:3000 (IPv6),但 Fiber 只监听 IPv4
根本原因:
- wget localhost 优先解析为 IPv6 地址 [::1]
- Fiber 默认监听 0.0.0.0:3000 (仅 IPv4)
- Docker 健康检查失败 → 容器标记 unhealthy → Worker 无法启动
修复内容:
1. Dockerfile.api 健康检查: localhost → 127.0.0.1 (强制 IPv4)
2. docker-compose.prod.yml 健康检查: 同步修改
3. Dockerfile.api: 创建 logs 目录并设置 appuser 权限
4. cmd/api/main.go: OpenAPI 文档路径改为 logs/openapi.yaml
|
2026-01-20 11:50:28 +08:00 |
|
|
|
286defb063
|
修复 API 容器健康检查失败:统一端口配置并添加数据库环境变量
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m23s
问题1: 端口不一致
- Dockerfile.api 中 EXPOSE 和健康检查使用 8088
- config.yaml 中 API 实际监听 3000
- 健康检查失败导致容器 unhealthy
问题2: 缺少数据库环境变量
- entrypoint-api.sh 需要 DB_HOST、DB_USER 等环境变量执行迁移
- docker-compose.prod.yml 没有定义这些变量
- 容器启动脚本立即退出
修复:
- Dockerfile.api: EXPOSE 和健康检查改为 3000
- docker-compose.prod.yml: 添加完整的数据库环境变量
|
2026-01-20 11:33:26 +08:00 |
|
|
|
bf4ef37cc5
|
修复 docker compose 找不到配置文件:显式指定文件名
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
问题:docker compose 默认查找 docker-compose.yml
我们的文件:docker-compose.prod.yml
解决:所有 docker compose 命令添加 -f 参数
- docker compose -f docker-compose.prod.yml pull
- docker compose -f docker-compose.prod.yml up -d
- docker compose -f docker-compose.prod.yml ps
|
2026-01-20 11:29:54 +08:00 |
|
|
|
1d773c4f69
|
添加部署调试信息:排查配置文件复制问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3s
添加调试输出:
- 显示当前工作目录(pwd)
- 列出当前目录内容(ls -la)
- 复制时显示详细信息(-v 参数)
- 显示配置已存在的情况
帮助定位为什么 docker-compose.prod.yml 找不到
|
2026-01-20 11:22:17 +08:00 |
|
|
|
4f29107fc4
|
修复 SSL 证书验证错误:跳过内网自签名证书验证
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4m20s
问题:git clone 失败,SSL certificate OpenSSL verify result
原因:Gitea 使用自签名证书,git 无法验证
解决:设置 GIT_SSL_NO_VERIFY=1 跳过 SSL 验证
注意:这仅适用于内网环境,生产环境应使用正确的证书
|
2026-01-20 11:13:48 +08:00 |
|
|
|
a44f6779c2
|
修复 git 命令找不到:添加 Nix 路径到 PATH
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
问题:Runner 在 host 模式下 PATH 不包含 ~/.nix-profile/bin
解决:在检出代码前添加 Nix 路径到 PATH
这样 git 命令就能被找到(安装在 ~/.nix-profile/bin/git)
|
2026-01-20 11:12:11 +08:00 |
|
|
|
d78f45b04f
|
触发构建:宿主机已安装 git,验证完整部署流程
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
|
2026-01-20 11:10:07 +08:00 |
|
|
|
ffcef53c46
|
触发构建:验证 Runner host 模式和完整部署流程
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
|
2026-01-20 10:52:12 +08:00 |
|
|
|
963c35d1c9
|
工作流:自动创建和初始化部署目录
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
添加部署前检查:
- 自动创建 /opt/junhong_cmp 目录结构
- 首次部署时自动复制配置文件
- 确保 docker-compose.prod.yml 和 configs 存在
兼容性:
- 支持首次部署(自动初始化)
- 支持后续部署(跳过已存在的配置)
注意:需要 Runner 运行在 host 模式才能访问宿主机目录
|
2026-01-20 10:41:39 +08:00 |
|
|
|
be7d0a50e7
|
修改部署目录为标准系统路径 /opt/junhong_cmp
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 5s
从 /home/qycard001/app/junhong_cmp 迁移到 /opt/junhong_cmp
原因:
- /home 是用户私有目录,权限管理复杂
- Runner 可能以不同用户运行,访问受限
- /opt 是 Linux 标准的第三方应用目录
优势:
- 符合 Linux 目录规范(FHS)
- 所有用户都可访问(755 权限)
- 便于系统级备份和管理
- 不依赖特定用户账号
|
2026-01-20 10:39:15 +08:00 |
|
|
|
2a90bb420a
|
触发构建:验证正确的 AMD64 镜像
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m36s
|
2026-01-20 10:27:46 +08:00 |
|
|
|
41bd3f5866
|
修复架构问题:显式指定 linux/amd64 平台
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3s
问题:
- 私有仓库缓存了 ARM64 镜像(从 Mac M1/M2/M3 推送)
- 服务器是 AMD64 架构,导致 exec format error
解决:
- 在所有 FROM 指令中添加 --platform=linux/amd64
- 强制使用 AMD64 镜像,避免架构不匹配
- 适用于 Dockerfile.api 和 Dockerfile.worker
|
2026-01-20 10:20:12 +08:00 |
|
|
|
a387da1508
|
触发构建:验证 AMD64 架构镜像
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
|
2026-01-20 10:18:48 +08:00 |
|
|
|
1e979cf017
|
重构部署流程:使用私有镜像仓库和标准化配置
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 1m42s
核心改进:
1. 使用私有仓库基础镜像(极速拉取)
- registry.boss160.cn/base/golang:1.25.6-alpine
- registry.boss160.cn/base/alpine:3.19
2. 移除 Docker Compose 安装步骤(已在服务器永久安装)
- 减少 51 行复杂逻辑
- 构建时间减少 10-60 秒
3. 移除文件复制步骤(configs 已在服务器部署目录)
- 减少 20+ 行代码
- 简化维护流程
4. 极简化部署逻辑
- 只保留:拉取镜像 → 重启服务 → 显示状态
- 从 ~30 行减少到 7 行
效果:
- 净减少 68 行代码
- 工作流清晰易懂
- 构建速度提升(基础镜像从内网拉取)
- 维护成本大幅降低
|
2026-01-20 10:13:50 +08:00 |
|
|
|
90ecfce8c5
|
优化 Docker Compose 下载:添加多个国内镜像源备份
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m54s
- 添加 5 个国内镜像源自动切换(ghproxy.net、gh-proxy.com 等)
- 每个源 15 秒连接超时、60 秒下载超时
- 循环尝试,任一成功即停止
- 所有国内源失败后才使用官方源(300 秒超时)
- 显示每个源的尝试状态,便于调试
|
2026-01-20 09:59:55 +08:00 |
|
|
|
0584a474cc
|
修复部署配置:使用 config.yaml 默认配置和外部服务
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 移除 docker-compose 中的 postgres 和 redis 服务(使用外部服务)
- 移除不必要的环境变量(DB_HOST 等)
- 修正服务端口:8088 → 3000(与 config.yaml 一致)
- 修正健康检查:curl → wget(与 Dockerfile 一致)
- 工作流自动复制 configs 目录和创建 logs 目录
- 使用默认 config.yaml(连接到 cxd.whcxd.cn 数据库)
|
2026-01-20 09:57:38 +08:00 |
|
|
|
94d8570d46
|
修复:自动安装 Docker Compose 插件确保部署成功
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 12s
- 在工作流开始时检查并安装 Docker Compose 插件
- 优先使用国内镜像(ghproxy.com)加速下载
- 失败时自动回退到官方 GitHub 源
- 简化部署步骤逻辑,移除冗余的版本检测
- 添加 emoji 标记让日志更清晰易读
这确保 Runner 环境中始终有可用的 docker compose 命令
|
2026-01-20 09:54:20 +08:00 |
|
|
|
609e952a5a
|
修复:自动检测 Docker Compose 版本并兼容 V1/V2
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 5s
- 添加 docker compose 版本检测和调试信息
- 自动适配 docker-compose (V1) 或 docker compose (V2)
- 使用变量 $COMPOSE 统一调用,避免硬编码
- 解决 Runner 环境中 compose 命令识别问题
|
2026-01-20 09:52:12 +08:00 |
|
|
|
e649bfb975
|
修复:移除 Docker 镜像加速步骤以避免 sudo 权限问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m59s
- 移除需要 sudo 的 Docker daemon 配置步骤
- 核心优化(Alpine 镜像源、Go 代理)已在 Dockerfile 中
- 基础镜像会被 Docker 缓存,后续构建不会重复拉取
|
2026-01-20 09:45:58 +08:00 |
|
|
|
4d86799448
|
全面优化 Docker 构建和部署流程
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 1s
- Dockerfile.api/worker: 添加阿里云 Alpine 镜像源加速(构建+运行阶段)
- Dockerfile.api/worker: 提前设置 Go 环境变量(GOPROXY、CGO_ENABLED)
- Dockerfile.api: 移除 curl 依赖,改用 Alpine 自带 wget
- 工作流: 添加 Docker Hub 镜像加速(3个国内源)
- 工作流: 修复部署目录不存在问题(自动创建+复制配置)
预期构建时间:从 3+ 小时降低到 15-20 分钟
|
2026-01-20 09:43:42 +08:00 |
|
|
|
a3c66586af
|
移除 BuildKit 依赖,保留阿里云镜像源优化
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4m24s
|
2026-01-20 09:34:20 +08:00 |
|
|
|
2336b140cc
|
优化 Docker 构建:启用 BuildKit + 使用阿里云 Alpine 镜像源加速
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
|
2026-01-20 09:33:24 +08:00 |
|
|
|
20a80982fe
|
固定 Alpine 版本为 3.19 以解决包兼容性问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3h9m41s
|
2026-01-19 17:42:41 +08:00 |
|
|
|
5be74f2698
|
修正编译命令:编译整个目录而不是单个文件
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 13m37s
|
2026-01-19 17:26:43 +08:00 |
|
|
|
bb9f0a3a1f
|
修正 .dockerignore 确保包含 docs.go 文件
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 1m44s
|
2026-01-19 17:24:03 +08:00 |
|
|
|
d1a2af3b6d
|
注释掉未实现的 OpenAPI 文档生成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-01-19 17:23:13 +08:00 |
|
|
|
08736d2692
|
更新到 Go 1.25.6
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4m30s
|
2026-01-19 17:17:27 +08:00 |
|
|
|
919d4350d0
|
在所有 Go 命令中设置 GOTOOLCHAIN=auto
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
|
2026-01-19 17:14:12 +08:00 |
|
|
|
109c9f014b
|
设置 GOTOOLCHAIN=auto 支持自动工具链管理
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 56s
|
2026-01-19 17:11:36 +08:00 |
|
|
|
627ca54c65
|
添加国内 Go 代理加速依赖下载
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
|
2026-01-19 17:08:39 +08:00 |
|
|
|
4d5cdc0d16
|
修正 Go 版本号为 1.23
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-01-19 16:56:30 +08:00 |
|
|
|
35a1000c18
|
使用 docker compose 替代 docker-compose 命令
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 13m2s
|
2026-01-19 16:31:13 +08:00 |
|
|
|
427d7ef9cd
|
测试自定义镜像 Runner
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 15s
|
2026-01-19 16:25:06 +08:00 |
|
|
|
fe0e98df69
|
回到容器模式使用自定义镜像
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
|
2026-01-19 16:24:11 +08:00 |
|
|
|
dd8d802279
|
使用原生 git 命令替代 actions/checkout
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
|
2026-01-19 16:22:45 +08:00 |
|
|
|
8e17b97481
|
测试修复后的宿主机 Runner
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 2s
|
2026-01-19 16:21:47 +08:00 |
|
|
|
9e2d87acb6
|
测试宿主机模式 Runner
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-01-19 16:18:29 +08:00 |
|
|
|
b3450bd58a
|
触发工作流测试
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 2m47s
|
2026-01-19 16:11:59 +08:00 |
|
|
|
9e67914b1b
|
修正 Docker login 命令格式
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
|
2026-01-19 16:07:57 +08:00 |
|
|
|
a996c604dd
|
使用宿主机 Act Runner 直接执行部署
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 1m21s
|
2026-01-19 16:05:25 +08:00 |
|
|
|
38a9a81bae
|
使用 docker 标签并指定容器镜像
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 15s
|
2026-01-19 15:04:52 +08:00 |
|
|
|
589197e284
|
添加 Docker 和 CI/CD 配置(无 SSH 方案)
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
|
2026-01-19 14:56:40 +08:00 |
|
|
|
a6940e78df
|
移除测试工作流
|
2026-01-19 14:12:50 +08:00 |
|