feat(通道流量阈值): AUG26-011 运营商通道流量阈值达量停机与周期复机
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 12m59s

This commit is contained in:
2026-09-16 15:54:49 +08:00
parent 41722760b1
commit 59b3df868a
36 changed files with 2431 additions and 93 deletions

View File

@@ -70,6 +70,8 @@ func AgentOpenAPIStopReasonName(reason string) string {
return "未完成实名认证"
case StopReasonCarrierStopped:
return "运营商侧停机"
case StopReasonChannelThreshold:
return "通道流量阈值停机"
case "":
return ""
default:

View File

@@ -155,12 +155,14 @@ const (
CardObservationSceneAdminRealnameLink = "admin_realname_link" // 后台获取实名链接
CardObservationSceneBusinessStop = "business_stop" // 业务停机成功
CardObservationSceneBusinessResume = "business_resume" // 业务复机成功
CardObservationScenePackageChanged = "package_changed" // 购包或套餐激活成功
CardObservationSceneDeviceSwitchCard = "device_switch_card" // 设备切卡成功
CardObservationSceneDeviceSwitchMode = "device_switch_mode" // 设备切卡模式成功
CardObservationSceneDeviceReboot = "device_reboot" // 设备重启成功
CardObservationSceneDeviceReset = "device_reset" // 设备恢复出厂成功
CardObservationSceneDeviceSetWiFi = "device_set_wifi" // 设备 WiFi 设置成功
// CardObservationSceneCarrierThresholdRecovery 是通道阈值恢复扫描的只读状态查询场景。
CardObservationSceneCarrierThresholdRecovery = "carrier_threshold_recovery"
CardObservationScenePackageChanged = "package_changed" // 购包或套餐激活成功
CardObservationSceneDeviceSwitchCard = "device_switch_card" // 设备切卡成功
CardObservationSceneDeviceSwitchMode = "device_switch_mode" // 设备切卡模式成功
CardObservationSceneDeviceReboot = "device_reboot" // 设备重启成功
CardObservationSceneDeviceReset = "device_reset" // 设备恢复出厂成功
CardObservationSceneDeviceSetWiFi = "device_set_wifi" // 设备 WiFi 设置成功
)
// 卡实名状态变更 Outbox 事件

View File

@@ -96,6 +96,10 @@ const (
TaskTypeAgentRechargeRecovery = "agent_recharge:payment:recovery" // 代理在线充值支付恢复与查单
TaskTypeRefundChannelRecovery = "refund:channel:recovery" // 渠道原路退款结果恢复与查询
TaskTypeRefundCommissionRecovery = "refund:commission:recovery" // 退款佣金回溯后处理补偿
// 运营商通道流量阈值任务类型(由 Asynq Scheduler 调度)
TaskTypeCarrierThresholdCycle = "carrier_threshold:cycle" // 通道阈值周期处理:跨期解锁与条件复机
TaskTypeCarrierThresholdRecovery = "carrier_threshold:recovery" // 通道阈值停复机结果恢复扫描
)
// 用户状态常量
@@ -319,6 +323,9 @@ func QueueForTaskType(taskType string) string {
return QueueWeComApproval
case TaskTypeAgentRechargeRecovery, TaskTypeRefundChannelRecovery, TaskTypeRefundCommissionRecovery:
return QueueDefault
case TaskTypeCarrierThresholdCycle, TaskTypeCarrierThresholdRecovery:
// 与退款恢复同队列:每分钟轻量扫描,复用既有已监听队列,不新增队列与权重。
return QueueDefault
default:
return QueueDefault
}

View File

@@ -76,6 +76,10 @@ const (
StopReasonNoPackage = "no_package" // 停机原因:无有效套餐
StopReasonNotRealname = "not_realname" // 停机原因:非行业卡且未完成实名认证
StopReasonCarrierStopped = "carrier_stopped" // 停机原因:运营商/Gateway 侧主动停机
// StopReasonChannelThreshold 是运营商通道流量阈值达量停机的停因。
// 它既不属于轮询停因isPollingStopReason也不参与设备维度扩散isDeviceScopeReason
// 周期内必须拒绝一切复机,复机只由通道阈值的周期处理发起。
StopReasonChannelThreshold = "channel_threshold"
)
// 套餐流量类型

View File

@@ -5,6 +5,7 @@ import (
agentrechargeApp "github.com/break/junhong_cmp_fiber/internal/application/agentrecharge"
cardObservationApp "github.com/break/junhong_cmp_fiber/internal/application/cardobservation"
carrierthresholdApp "github.com/break/junhong_cmp_fiber/internal/application/carrierthreshold"
"github.com/break/junhong_cmp_fiber/internal/service/commission_calculation"
"github.com/break/junhong_cmp_fiber/internal/service/commission_stats"
packagepkg "github.com/break/junhong_cmp_fiber/internal/service/package"
@@ -60,19 +61,22 @@ type WorkerStores struct {
// WorkerServices Worker 侧所有 Service 的集合
type WorkerServices struct {
PaymentAudit agentrechargeApp.PaymentAuditWriter
RechargeAudit agentrechargeApp.RechargeAuditWriter
CardObservation *cardObservationApp.Service
CardObservationSeries *cardObservationApp.SeriesAttemptService
ObservationSeriesEvents cardObservationApp.SeriesEventWriter
CommissionCalculation *commission_calculation.Service
CommissionStats *commission_stats.Service
UsageService *packagepkg.UsageService
ActivationService *packagepkg.ActivationService
ResetService *packagepkg.ResetService
AlertService *pollingSvc.AlertService
CleanupService *pollingSvc.CleanupService
StopResumeService packagepkg.StopResumeCallback // 停复机服务,用于注入 Scheduler
PaymentAudit agentrechargeApp.PaymentAuditWriter
RechargeAudit agentrechargeApp.RechargeAuditWriter
CardObservation *cardObservationApp.Service
CardObservationSeries *cardObservationApp.SeriesAttemptService
ObservationSeriesEvents cardObservationApp.SeriesEventWriter
CommissionCalculation *commission_calculation.Service
CommissionStats *commission_stats.Service
UsageService *packagepkg.UsageService
ActivationService *packagepkg.ActivationService
ResetService *packagepkg.ResetService
AlertService *pollingSvc.AlertService
CleanupService *pollingSvc.CleanupService
StopResumeService packagepkg.StopResumeCallback // 停复机服务,用于注入 Scheduler
// CarrierThreshold 是运营商通道流量阈值的唯一用例实例:达量判定、持锁拒绝、停复机消费者与
// 两个计划任务共用它,使直接执行的成功与恢复确认的成功走同一回写路径。
CarrierThreshold *carrierthresholdApp.Service
OrderExpirer OrderExpirer // 订单超时取消服务(接口类型,避免循环依赖)
AssetPackageOrderCreator task.AssetPackageBatchOrderCreator // 批量订购复用后台单笔订单规则
DeviceBatchAllocator task.DeviceBatchAllocationExecutor // 设备CSV批量分配复用现有业务规则