Files
junhong_cmp_fiber/pkg/constants/card_traffic_queue.go
邹进 94cbf2adab feat: 采集记录成功失败分表并保存网关原始数据,到期归档 csv.gz,新增记录分页查询接口
- 网关客户端新增原始数据收集器,记录最后一次尝试的明文请求、HTTP 状态、响应体与 code/msg/trace_id
- tb_card_traffic_collection 只写成功读数,新增 carrier_id 与原始数据列;新增 tb_card_traffic_collection_failure,失败不判断有无套餐并带错误详情
- 采集记录在线保留当月加最近 2 个整月,到期分区摘出、导出 csv.gz、校验行数与 SHA-256 后删除,本地保留 3 个月
- 新增采集成功/失败、卡日流量、套餐日流量详单、冲正流水、退款后处理尝试列表接口:可查单个也可查全部,分页与条件筛选
- 停复机记录支持资产标识、场景、原因、指令号筛选;单卡历史支持动作、结果、来源筛选
- 单卡采集记录支持筛选与合并失败记录;套餐日流量详单支持分页;退款列表支持后处理状态筛选
- 测试环境 api、worker 日志分目录,保留 40 个压缩备份;worker 挂载 archive 目录
- 迁移 000272、000273 需维护者在测试库执行后再部署

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 18:47:00 +09:00

64 lines
2.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package constants
import "fmt"
// 卡流量采集队列系统配置(add-card-traffic-queue-and-observed-deduction)。
const (
// SystemConfigModuleTraffic 是卡流量采集配置模块。
SystemConfigModuleTraffic = "traffic"
// SystemConfigTrafficQueueSize 是采集队列长度 N。
SystemConfigTrafficQueueSize = "traffic.queue.size"
// SystemConfigTrafficQueueClearOnNewDay 是跨天是否清空队列。
SystemConfigTrafficQueueClearOnNewDay = "traffic.queue.clear_on_new_day"
// SystemConfigTrafficQueueMaxPointAgeHours 是队列里点的最长保留时长(小时),0 表示不限。
SystemConfigTrafficQueueMaxPointAgeHours = "traffic.queue.max_point_age_hours"
// SystemConfigTrafficQueueDropToleranceMB 是相邻两点回退不超过该值算持平(MB)。
SystemConfigTrafficQueueDropToleranceMB = "traffic.queue.drop_tolerance_mb"
// TrafficQueueDefaultSize 等是采集队列配置默认值。
TrafficQueueDefaultSize = 3
TrafficQueueMinSize = 2
TrafficQueueMaxSize = 10
TrafficQueueDefaultMaxPointAgeHours = 72
TrafficQueueDefaultDropToleranceMB = 1.0
// TrafficQueueIntervalSpare 是采集间隔上限留的冗余次数:间隔 ≤ 窗口 ÷ (N + 冗余)。
TrafficQueueIntervalSpare = 2
// TrafficQueueUnlimitedTTLHours 是最长点龄为 0(不限)且跨天清空关闭时队列 key 的过期时长。
TrafficQueueUnlimitedTTLHours = 24 * 7
)
// 采集记录的读数结果。
const (
TrafficCollectionResultOK = "ok"
TrafficCollectionResultFailed = "failed"
TrafficCollectionResultRateLimited = "rate_limited"
TrafficCollectionResultInvalidPayload = "invalid_payload"
TrafficCollectionResultNoReading = "no_reading"
TrafficCollectionResultInvalidReading = "invalid_reading"
)
// 采集记录的写入判断。
const (
TrafficDecisionWritten = "written"
TrafficDecisionBaseline = "baseline"
TrafficDecisionQueueNotFull = "queue_not_full"
TrafficDecisionSlopeNegative = "slope_negative"
TrafficDecisionOutOfOrder = "out_of_order"
TrafficDecisionSettledExisting = "settled_existing"
)
// TrafficCollectionRetentionMonths 是采集记录(成功与失败)在线保留的整月数:保留当月加最近 N 个整月,
// 更早的月分区导出为 csv.gz 并校验后删除。
const TrafficCollectionRetentionMonths = 2
// TrafficCollectionArchiveDir 是采集记录压缩包目录(相对 worker 工作目录),由日志同步服务器拉走。
const TrafficCollectionArchiveDir = "archive/traffic-collection"
// TrafficCollectionArchiveKeepFiles 是每张采集记录表本地保留的压缩包个数(按月)。
const TrafficCollectionArchiveKeepFiles = 3
// RedisCardTrafficQueueKey 返回卡流量采集队列 key。
func RedisCardTrafficQueueKey(cardID uint) string {
return fmt.Sprintf("traffic:queue:%d", cardID)
}