|
|
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 |
|
|
|
c205b450db
|
test
Gitea Actions 测试 / hello (push) Has been cancelled
|
2026-01-19 12:40:37 +08:00 |
|
|
|
028cfaa7aa
|
feat: 实现权限检查功能并添加Redis缓存优化
- 完成 CheckPermission 方法的完整实现(账号→角色→权限查询链)
- 实现 Redis 缓存机制,大幅提升权限查询性能(~12倍提升)
- 自动缓存失效:角色/权限变更时清除相关用户缓存
- 新增完整的单元测试和集成测试(10个测试用例全部通过)
- 添加权限检查使用文档和缓存机制说明
- 归档 implement-permission-check OpenSpec 提案
性能优化:
- 首次查询: ~18ms(3次DB查询 + 1次Redis写入)
- 缓存命中: ~1.5ms(1次Redis查询)
- TTL: 30分钟,自动失效机制保证数据一致性
|
2026-01-16 18:15:32 +08:00 |
|
|
|
18f35f3ef4
|
feat: 完成B端认证系统和商户管理模块测试补全
主要变更:
- 新增B端认证系统(后台+H5):登录、登出、Token刷新、密码修改
- 完善商户管理和商户账号管理功能
- 补全单元测试(ShopService: 72.5%, ShopAccountService: 79.8%)
- 新增集成测试(商户管理+商户账号管理)
- 归档OpenSpec提案(add-shop-account-management, implement-b-end-auth-system)
- 完善文档(使用指南、API文档、认证架构说明)
测试统计:
- 13个测试套件,37个测试用例,100%通过率
- 平均覆盖率76.2%,达标
OpenSpec验证:通过(strict模式)
|
2026-01-15 18:15:17 +08:00 |
|
|
|
7ccd3d146c
|
标签更新
|
2026-01-15 10:44:53 +08:00 |
|
|
|
2857175266
|
refactor(account): 优化账号管理模块结构
|
2026-01-14 17:10:07 +08:00 |
|
|
|
b1195c16df
|
feat(account): 实现平台账号管理功能
- 新增平台账号列表查询接口(自动筛选超级管理员和平台用户)
- 新增密码修改和状态切换专用接口
- 增强角色分配功能,支持空数组清空所有角色
- 新增超级管理员保护机制,禁止分配角色
- 新增完整的集成测试和OpenSpec规范文档
|
2026-01-14 17:00:30 +08:00 |
|
|
|
5556b1028c
|
feat(role): 新增平台角色管理功能增强
- 权限表增加 available_for_role_types 字段,支持标记权限可用角色类型
- 权限列表和权限树接口支持按 available_for_role_type 过滤
- 新增角色状态切换接口 PUT /api/admin/roles/:id/status
- 角色分配权限时验证权限的可用角色类型
- 完善数据库迁移脚本和单元测试
- 补充数据库迁移相关开发规范文档
|
2026-01-14 12:15:57 +08:00 |
|
|
|
9c399df6bc
|
feat(auth): 新增系统启动时自动初始化默认超级管理员功能
- 新增默认管理员自动初始化逻辑,系统启动时检查并创建超级管理员账号
- 支持通过配置文件自定义账号信息(优先级:配置文件 > 代码默认值)
- 新增 CreateSystemAccount 方法用于系统内部账号创建
- 新增默认管理员配置项和常量定义
- 更新 README.md 添加默认账号使用说明
- 归档 OpenSpec 变更提案及完整文档
相关文件:
- internal/bootstrap/admin.go: 管理员初始化逻辑
- internal/service/account/service.go: 系统账号创建方法
- pkg/config/config.go: 默认管理员配置结构
- pkg/constants/constants.go: 默认值常量定义
- docs/add-default-admin-init/功能说明.md: 完整功能文档
|
2026-01-14 10:53:42 +08:00 |
|
|
|
2570269c8d
|
feat(wallet,tag): 钱包和标签系统多租户改造
核心变更:
- 钱包表:删除 user_id,添加 resource_type/resource_id(绑定资源而非用户)
- 标签表:添加 enterprise_id/shop_id(实现三级隔离:全局/企业/店铺)
- GORM Callback:自动数据权限过滤
- 迁移脚本:可重复执行,已验证回滚功能
钱包归属重构原因:
- 旧设计:钱包绑定用户账号,个人客户卡/设备转手后新用户无法使用余额
- 新设计:钱包绑定资源(卡/设备/店铺),余额随资源流转
标签三级隔离:
- 平台全局标签:所有用户可见
- 企业标签:仅该企业可见(企业内唯一)
- 店铺标签:该店铺及下级可见(店铺内唯一)
测试覆盖:
- 9 个单元测试验证标签多租户过滤(全部通过)
- 迁移和回滚功能测试通过(测试环境)
- OpenSpec 验证通过
变更 ID: fix-wallet-tag-multi-tenant
迁移版本: 000008
参考: openspec/changes/archive/2026-01-13-fix-wallet-tag-multi-tenant/
|
2026-01-13 16:52:37 +08:00 |
|
|
|
6e2dc325d7
|
新增钱包、换卡、标签系统的数据模型和规范
本次提交完成 add-wallet-transfer-tag-models 提案的实施和归档:
## 新增功能模块
- 钱包系统:用户/代理钱包管理,支持充值、扣款、退款、乐观锁防并发
- 换卡记录:物联卡更换历史追溯,包含套餐快照(JSONB)
- 标签系统:设备/IoT卡/号卡的统一标签管理
- 运营商渠道:四大运营商(CMCC/CUCC/CTCC/CBN)的渠道管理
## 数据库变更
- 新增 6 张表:tb_wallet, tb_wallet_transaction, tb_recharge_record, tb_card_replacement_record, tb_tag, tb_resource_tag
- 修改 2 张表:tb_carrier(新增渠道字段), tb_order(新增混合支付字段)
- 迁移版本:v6 → v7(执行时间 282.5ms)
## 代码变更
- 新增 8 个 Go 模型(符合统一规范:gorm.Model + BaseModel)
- 新增 40+ 个常量定义(含完整中文注释)
- 新增 7 个 Redis Key 生成函数
- 修复模型规范:移除重复字段,统一使用 gorm.Model 嵌入
## 文档变更
- 新增 3 个业务文档:数据模型设计、字段说明、迁移验证报告
- 更新 AGENTS.md:新增 Model 模型规范和常量注释规范
- 新增 4 个 OpenSpec 规范:wallet, carrier, card-replacement, tag
- 更新 1 个 OpenSpec 规范:iot-order(支持混合支付)
## 验证通过
- ✅ LSP 诊断:所有模型和常量文件无错误
- ✅ OpenSpec 验证:openspec validate --strict 通过
- ✅ 迁移执行:表结构创建成功,索引正确
- ✅ 提案归档:2026-01-13-add-wallet-transfer-tag-models
变更文件统计:29 个文件,新增 3682 行
|
2026-01-13 15:47:32 +08:00 |
|
|
|
2150fb6ab9
|
重构:完善 IoT 模型架构规范和数据库设计
- 完善 GORM 模型规范:货币字段使用 int64(分为单位)、JSONB 字段规范、模型结构规范
- 修复所有 IoT 模型的架构违规问题
- 更新 CLAUDE.md 开发指南,补充完整的数据库设计规范和模型示例
- 添加数据库迁移脚本(000006)用于架构重构
- 归档 OpenSpec 变更文档(2026-01-12-fix-iot-models-violations)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 17:43:12 +08:00 |
|
|
|
4507de577b
|
代码质量改进:修复架构违规、完善文档注释和清理冗余代码
- 修复 health.go handler 直接操作响应的架构违规问题
- 为 model 字段添加 GORM comment 标签(account_role、base、role_permission)
- 为 handler、service、store 包添加包级文档注释
- 清理 customer service 和 personal_customer handler 中注释掉的代码
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 16:28:48 +08:00 |
|
|
|
590614aecc
|
清理 OpenSpec 规范文档中的重复标题
移除 IoT 相关规范文档中的重复 "## ADDED Requirements" 标题行:
- iot-agent-commission
- iot-device
- iot-number-card
- iot-order
- iot-package
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 16:06:59 +08:00 |
|
|
|
867e97af11
|
重构:统一 IoT 模型到 internal/model/ 目录
将所有 IoT 相关的数据模型从 internal/iot/model/ 迁移到 internal/model/,
实现全局统一的模型层架构,符合项目横向分层设计原则。
变更内容:
- 迁移 11 个 IoT 模型文件(carrier, iot_card, device, order, package 等)
- 删除 internal/iot/model/ 目录
- 更新文档中的模型路径引用(25 处)
- 创建重构总结文档
- 归档 OpenSpec 变更为 2026-01-12-refactor-iot-model-location
- 创建 model-organization 规格文档
验证结果:
- 编译通过(go build 成功)
- 静态分析通过(go vet 无错误)
- 代码格式通过(go fmt 无变更)
- 无 Go 代码引用旧路径
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 16:01:53 +08:00 |
|
|
|
034f00e2e7
|
实现 IoT SIM 管理模块数据模型和数据库结构
- 添加 IoT 核心业务表:运营商、IoT 卡、设备、号卡、套餐、订单等
- 添加分佣系统表:分佣规则、分佣记录、运营商结算等
- 添加轮询和流量管理表:轮询配置、流量使用记录等
- 添加财务和系统管理表:佣金提现、换卡申请等
- 实现完整的 GORM 模型和常量定义
- 添加数据库迁移脚本和详细文档
- 集成 OpenSpec 工作流工具(opsx 命令和 skills)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 15:44:23 +08:00 |
|