All checks were successful
构建并部署到测试环境(无 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>
32 lines
3.4 KiB
Markdown
32 lines
3.4 KiB
Markdown
## Why
|
||
|
||
生产仍是卡表基线算法,2026-10-29 核对到 1632 张有生效套餐的卡被"卡住"(基线高于运营商读数、套餐长期扣 0),其中 916 张自 10-26 起持续用量、合计约 1635 GB 未扣。单卡导入测试环境已证明新计量逻辑(`add-card-traffic-queue-and-observed-deduction`)能解冻并按增量扣费,但无法说明全量差距。需要把生产卡、设备与套餐全量导入测试环境,按现有轮询跑真实读数算出差距;这些是真实用户的卡与设备,测试环境对它们只能查询,绝不能停复机或发其他写指令。现有环境变量名单 `JUNHONG_GATEWAY_READONLY_ICCIDS` 承载不了约 12 万个卡号与设备号。依据为 `docs/测试环境导入生产数据验证流量计量技术方案.md`(2026-10-29 已确认)。
|
||
|
||
## What Changes
|
||
|
||
- 新增网关只读资产表 `tb_gateway_readonly_card`(`identifier` 为网关请求卡号:卡为 ICCID、设备为 IMEI,唯一)。
|
||
- 新增环境变量 `JUNHONG_GATEWAY_READONLY_ENABLED`:开启后,只读表中的资产只允许查询类网关调用(查卡状态、查实名、查流量、查设备信息、查设备槽位、同步设备状态);停机、复机、限速、实名认证链接及设备切卡、恢复出厂、重启、WiFi 配置、模式切换在网关出口本地拦截、不发请求、返回明确失败;查表失败按拦截处理;不做内存缓存。未配置或关闭时不查表(生产不配置)。
|
||
- **BREAKING**(测试环境配置):删除 `JUNHONG_GATEWAY_READONLY_ICCIDS`,现有两张只读卡迁入只读表。
|
||
- 测试环境全量导入生产卡(约 9.86 万)、设备(约 2.01 万)、有效绑定、卡套餐与设备套餐(待生效、生效中、已用完;保留开始与结束时间、真实已用量、真总量与虚流量条款快照、重置周期、优先级与主套餐 / 加油包关系),全部挂测试代理 9「测试采购部」并置"待建起点";手机号、虚拟号按原值导入。导入用临时脚本,不提交;只读表必须先于导入写入并确认开关已部署。
|
||
- 导入资产完全按测试环境现有轮询配置与代码逻辑运行,不另设配置、不改业务流程。
|
||
- 输出差距报表:导入后测试环境新增扣减 vs 生产同期新增扣减、是否已到停机线。
|
||
- 不在本 Change:订单、钱包、分佣、退款、个人客户、审批等导入与验证;生产发布与回滚;验证结束后的撤除按 `docs/测试环境生产卡只读模式清理顺序.md` 另行执行。
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
- `gateway-readonly-assets`:网关只读资产表、开关、查询类调用放行与其余调用拦截、查表失败拦截。
|
||
|
||
### Modified Capabilities
|
||
|
||
(无)
|
||
|
||
## Impact
|
||
|
||
- 数据库:新增成对迁移建 `tb_gateway_readonly_card`(不写入数据)。
|
||
- 代码:`internal/gateway/client.go`、`internal/gateway/readonly_guard.go`(改为按表判断)、新增只读表存储、`pkg/config`(删 `ReadonlyICCIDs`,加 `ReadonlyEnabled`)、`cmd/api/main.go`、`cmd/worker/main.go` 注入。
|
||
- 部署:`.gitea/workflows/deploy.yaml` 改为 `JUNHONG_GATEWAY_READONLY_ENABLED=true`;`docker-compose.prod.yml` 传递新变量、删除旧变量。
|
||
- 数据:测试库写入约 9.86 万卡、2.01 万设备、约 2.9 万套餐及只读表约 12 万行;导入脚本只连接 `junhong_cmp_test`,生产只读导出。
|
||
- 范围:测试环境。
|