邹进
|
f0b54b8b52
|
chore: 测试环境 worker 任务并发调到 50、数据库连接池放大
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 11m59s
默认并发 10 时流量扣减事件投递跟不上,白天积压 1 万+、延迟约 2.5 小时。
网关只读开关不变。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-11-03 18:16:20 +09:00 |
|
邹进
|
4f404a11b0
|
perf: 运营商账户分发按账户并行,互不等待
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 12m48s
分发器每轮原先逐个处理全部运营商账户,每个账户多次 Redis 往返;
测试环境 Redis 走外网,41 个账户一轮约 19 秒,每个账户每 19 秒只领一次,
慢账户拖住其他账户。改为每轮各账户在独立 goroutine 中抢锁并领取,
一轮耗时取决于最慢账户;账户分发锁不变,多实例下同一账户仍只有一个实例领取。
测试环境 worker 的 Redis 连接池由默认 10 调为 100,避免并行分发与轮询执行争抢连接。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-29 23:57:54 +09:00 |
|
邹进
|
5cf67b98de
|
feat: 网关只读资产改为数据表,只读资产只允许查询类调用
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m36s
- 新增 tb_gateway_readonly_card(卡 ICCID / 设备 IMEI)与开关 JUNHONG_GATEWAY_READONLY_ENABLED,
替换环境变量名单 JUNHONG_GATEWAY_READONLY_ICCIDS
- 只读资产只放行查卡状态、查实名、查流量、查设备信息、查设备槽位、同步设备状态;
停机、复机、限速、实名认证链接与设备写操作在网关出口本地拦截;查表失败按拦截;不缓存
- 测试环境部署开启只读模式;新增技术方案与清理顺序文档
Change: add-gateway-readonly-prod-import
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-29 17:55:52 +09:00 |
|
邹进
|
6266cf9d86
|
feat: 网关只读卡名单,测试环境导入的生产卡只允许查询
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m30s
- 新增 JUNHONG_GATEWAY_READONLY_ICCIDS:名单内的卡只放行查流量、卡状态、实名查询,
停机、复机、限速、实名认证等写操作在网关出口本地拦截、不发请求,返回明确失败
- 未配置时不生效;测试环境部署脚本配置卡 89861590172420410612 用于流量采集验证
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-29 15:15:00 +09:00 |
|
邹进
|
9c3c258f16
|
feat: 卡流量读数先过采集队列再入账,扣减按采集时刻确定套餐
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m27s
- 每卡 Redis 采集队列(默认 N=3、跨天清空、回退容差 1 MB),攒满且不下降才写最后一个点
- 测试环境全量切换日快照计量,下线灰度名单、切换水位与卡表基线扣费;全部卡置待建起点
- 读数区分没给值与 0;有套餐的卡读数 0 也写快照与日用量 0 行;重置日比较基准为 0 照常防旧值
- 新增采集记录(按月分区保留 90 天)、人工冲正流水与后台接口、采集告警
- 扣减按采集时刻有效套餐查找,只对生效中套餐做状态迁移,查不到套餐按成功跳过
- 换货新卡(新设备下的卡)打待建起点;采集间隔上限只校验启用中的轮询配置
Change: add-card-traffic-queue-and-observed-deduction
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-29 12:18:47 +09:00 |
|
邹进
|
dae44bed30
|
feat: 按运营商账户调度的迁移、配置与账户队列 Lua
- 迁移 000251~000254:运营商账户调度参数、请求检查场景(预置 8 个)、卡轮询失败告警表,以及调度模式、步骤、退避、告警等受控系统配置(默认 legacy,行为不变);并发配置表注释标记废弃
- 受控系统配置注册与 JSON 结构校验:步骤只能是 4 种检查类型且不重复、退避序列递增
- yaml 增加 NSQ 地址、msg_timeout、租约、续期间隔、分发间隔、默认执行上限与 max_in_flight;引入 go-nsq
- 测试环境 docker-compose 增加 nsqlookupd 与 nsqd,Worker 注入 NSQ 地址
- 账户队列 Redis 结构与 Lua:领取(执行上限、优先占比、按限流组剩余 QPS 估算)、抢执行权、续期、收尾、请求检查(合并、冷却、执行中打优先标记)、移出、发布失败释放
|
2026-10-25 18:28:42 +09:00 |
|
邹进
|
f49baff7c2
|
feat: 停复机新规则转正,删除总开关与旧口径
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m35s
- 删除总开关 stop_resume.unified_rule_enabled(配置、加载、部署工作流与 docker-compose.prod.yml 环境变量)
- 复机不看停机原因:删除只对轮询停因复机的旧分支与 ListByDeviceIDAndPollingStopReasons;设备复机取全部停机卡
- 实名门槛只按卡所属通道实名管控判断,删除行业卡与卡/设备实名策略放行;暂停轮询的卡不自动停复机无条件生效
- 通道阈值新周期解锁后的复机条件固定为新规则复机条件
- 资产自动续费复机同步新规则:不看停因、暂停轮询不复机、设备取全部停机卡、复机成功清除停因
- 实名轮询不再按行业卡跳过;所属运营商账户未开启实名管控时跳过查询,但卡未实名且所在资产有等待实名激活的套餐时照常查询,避免囤货套餐无法激活
|
2026-10-25 18:13:51 +09:00 |
|
邹进
|
6954ad6693
|
chore: 测试环境开启设备 10 的卡流量日快照计量灰度
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m0s
部署工作流写入 JUNHONG_TRAFFIC_CALC_MODE=gray 与 JUNHONG_TRAFFIC_CALC_CARDS=device:10;
docker-compose 为 API 与 Worker 透传计量与停复机新规则开关,未配置时保持原行为。
|
2026-10-20 17:58:18 +09:00 |
|
邹进
|
f56113ba55
|
fix: 测试环境开启手机号强制绑定
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m41s
API 服务的 JUNHONG_CLIENT_REQUIRE_PHONE_BINDING 由 false 改为 true,
使 H5 验证手机号后写入资产手机号关联,便于验证后台查看与解绑。
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-07 16:21:26 +09:00 |
|
|
|
390769ab7a
|
1
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m48s
|
2026-09-24 11:48:42 +08:00 |
|
|
|
e09c4632fb
|
修正测试环境按提交镜像部署
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 6m5s
Gitea workflow 只以 github.sha 构建/推送镜像标签,部署时写入
IMAGE_TAG 到 .env;compose 的 api/worker image 引用 IMAGE_TAG,
默认 latest 仅作本地兜底,测试部署必须解析为提交 SHA。
|
2026-09-09 18:18:13 +08:00 |
|
|
|
cb26217205
|
让七月迭代具备可直接部署的配置基线
补齐三套环境配置、测试环境部署门禁与 system_config 初始化,并按当前无企微应用的约束将企微凭据改为明文存储。
Constraint: 当前测试环境尚无企微应用及历史企微密文数据
Rejected: 使用启动环境变量加密企微凭据 | 用户明确要求直接明文保存并移除加密密钥
Confidence: high
Scope-risk: moderate
Directive: 企微真实闭环完成前保持两个旧审批入口开关为 true
Tested: gofmt;git diff --check;bash -n;docker compose config;Gitea workflow YAML 解析;OpenAPI 重新生成
Not-tested: go test;常规 go build;LSP;实际数据库迁移;真实测试环境部署;企微真实联调
|
2026-07-25 18:18:45 +08:00 |
|
|
|
e77bb0d09b
|
跨域
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m57s
|
2026-05-07 17:16:54 +08:00 |
|
|
|
73a3a04204
|
跨域
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m59s
|
2026-05-07 16:28:23 +08:00 |
|
|
|
15cd26c81a
|
强制手机绑定
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m1s
|
2026-04-24 10:26:32 +08:00 |
|
|
|
94f20ce8c7
|
配置
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m12s
|
2026-04-16 17:50:49 +08:00 |
|
|
|
fc995187df
|
输出日志
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 49s
|
2026-04-15 14:11:42 +08:00 |
|
|
|
71048e31d4
|
更换新的上游域名
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m15s
|
2026-04-15 11:21:14 +08:00 |
|
|
|
ebc3e78ba9
|
修复gateway权限问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m48s
|
2026-03-31 15:59:54 +08:00 |
|
|
|
da66e673fe
|
feat: 接入短信服务,修复 SMS 客户端 API 路径
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- cmd/api/main.go: 新增 initSMS() 初始化短信客户端并注入 verificationService
- pkg/sms/client.go: 修复 API 路径缺少 /sms 前缀(/api/... → /sms/api/...)
- docker-compose.prod.yml: 添加线上短信服务环境变量
|
2026-03-21 10:51:43 +08:00 |
|
|
|
b9733c4913
|
fix: 修正零售价架构错误 + 清理旧微信配置 + 归档提案 + 前端接口文档
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m12s
1. 修正 retail_price 架构:
- 删除 batch-pricing 接口的 pricing_target 字段和 retail_price 分支
(上级只能改下级成本价,不能改零售价)
- 新增 PATCH /api/admin/packages/:id/retail-price 接口
(代理自己改自己的零售价,校验 retail_price >= cost_price)
2. 清理旧微信 YAML 配置(已全部迁移到数据库 tb_wechat_config):
- 删除 config.yaml 中 wechat.official_account 配置节
- 删除 NewOfficialAccountApp() 旧工厂函数
- 清理 personal_customer service 中的死代码(旧登录/绑定微信方法)
- 清理 docker-compose.prod.yml 中旧微信环境变量和证书挂载注释
3. 归档四个已完成提案到 openspec/changes/archive/
4. 新增前端接口变更说明文档(docs/前端接口变更说明.md)
5. 修正归档提案和 specs 中关于 pricing_target 的错误描述
|
2026-03-19 17:39:43 +08:00 |
|
|
|
51ee38bc2e
|
使用超级管理员权限去访问gateway
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m44s
|
2026-03-07 11:10:22 +08:00 |
|
|
|
0b82f30f86
|
修复飘红问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 15h48m25s
|
2026-02-02 17:52:14 +08:00 |
|
|
|
1ec7de4ec4
|
chore(bootstrap): 更新依赖注入和配置
- bootstrap/services.go
- OrderService 初始化新增依赖注入
- 添加 ShopSeriesAllocationStore、IotCardStore、DeviceStore
- docker-compose.prod.yml
- 对象存储 S3 端点改为 HTTPS(安全性提升)
- 同时更新 API 和 Worker 服务配置
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-01-31 12:01:37 +08:00 |
|
|
|
e461791a0e
|
解决冲突
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m7s
|
2026-01-30 18:09:31 +08:00 |
|
|
|
45aa7deb87
|
feat: 添加环境变量管理工具和部署配置改版
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s
主要改动:
- 新增交互式环境配置脚本 (scripts/setup-env.sh)
- 新增本地启动快捷脚本 (scripts/run-local.sh)
- 新增环境变量模板文件 (.env.example)
- 部署模式改版:使用嵌入式配置 + 环境变量覆盖
- 添加对象存储功能支持
- 改进 IoT 卡片导入任务
- 优化 OpenAPI 文档生成
- 删除旧的配置文件,改用嵌入式默认配置
|
2026-01-26 10:28:29 +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 |
|
|
|
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 |
|
|
|
589197e284
|
添加 Docker 和 CI/CD 配置(无 SSH 方案)
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 0s
|
2026-01-19 14:56:40 +08:00 |
|