All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m33s
- 新增网关限流:按本系统运营商账户(卡 carrier_id)→ 限流组 → 操作限制每秒请求数,每次 HTTP 尝试计量,默认限流、仅后台人工点击/通道阈值/自动续费/手动刷新豁免;支持只统计与拦截两种模式,默认只统计 - Asynq 遇限流不计失败、固定短延迟重试;轮询任务与停复机业务重试遇限流短延迟重排 - 停机、复机不再使用网关内部重试,只发一次请求 - 网关返回结构化错误;新增上游错误分类规则表与测试接口 - 新增按月分区的停复机记录表:系统自动停复机只写记录,不再写统一审计与集成日志;普通轮询查询不再写集成日志 - 新增限流组、错误分类、停复机记录、按账户调用统计与枚举后台接口 - 迁移 000243~000246;同步 OpenSpec 提案(含后续 6 个 change)与技术方案、工程约束
73 lines
4.6 KiB
Go
73 lines
4.6 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
|
||
"gorm.io/datatypes"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
// CarrierRateLimitGroup 运营商账户网关限流组。
|
||
// CarrierID 为 nil 表示全局组;Operations、HighPriorityOperations 为卡网关操作字符串数组(JSON)。
|
||
type CarrierRateLimitGroup struct {
|
||
gorm.Model
|
||
BaseModel `gorm:"embedded"`
|
||
CarrierID *uint `gorm:"column:carrier_id;comment:运营商账户ID,为空表示全局组" json:"carrier_id"`
|
||
GroupCode string `gorm:"column:group_code;type:varchar(50);not null;comment:组标识" json:"group_code"`
|
||
GroupName string `gorm:"column:group_name;type:varchar(100);not null;comment:组名称" json:"group_name"`
|
||
MaxQPS int `gorm:"column:max_qps;not null;comment:每秒请求上限" json:"max_qps"`
|
||
Operations datatypes.JSON `gorm:"column:operations;type:jsonb;not null;comment:组内操作" json:"operations"`
|
||
HighPriorityOperations datatypes.JSON `gorm:"column:high_priority_operations;type:jsonb;not null;comment:高优先级操作" json:"high_priority_operations"`
|
||
ReservedQPS int `gorm:"column:reserved_qps;not null;default:0;comment:预留给高优先级操作的额度" json:"reserved_qps"`
|
||
Status int `gorm:"column:status;type:smallint;not null;default:1;comment:状态 0-停用 1-启用" json:"status"`
|
||
}
|
||
|
||
// TableName 返回限流组表名。
|
||
func (CarrierRateLimitGroup) TableName() string {
|
||
return "tb_carrier_rate_limit_group"
|
||
}
|
||
|
||
// GatewayErrorClassification 上游错误分类规则。
|
||
type GatewayErrorClassification struct {
|
||
gorm.Model
|
||
BaseModel `gorm:"embedded"`
|
||
Keyword string `gorm:"column:keyword;type:varchar(200);not null;comment:匹配关键字或正则" json:"keyword"`
|
||
MatchType string `gorm:"column:match_type;type:varchar(20);not null;default:contains;comment:匹配方式" json:"match_type"`
|
||
Category string `gorm:"column:category;type:varchar(30);not null;comment:类别" json:"category"`
|
||
Operations datatypes.JSON `gorm:"column:operations;type:jsonb;not null;comment:适用操作,空数组表示全部" json:"operations"`
|
||
Priority int `gorm:"column:priority;not null;default:100;comment:匹配优先级" json:"priority"`
|
||
MaybeAccepted bool `gorm:"column:maybe_accepted;not null;default:false;comment:上游可能已受理" json:"maybe_accepted"`
|
||
Status int `gorm:"column:status;type:smallint;not null;default:1;comment:状态 0-停用 1-启用" json:"status"`
|
||
Remark string `gorm:"column:remark;type:varchar(500);not null;default:'';comment:备注" json:"remark"`
|
||
}
|
||
|
||
// TableName 返回错误分类规则表名。
|
||
func (GatewayErrorClassification) TableName() string {
|
||
return "tb_gateway_error_classification"
|
||
}
|
||
|
||
// CardStopResumeRecord 停复机调用记录(按月分区表),每次实际调用上游停机或复机一条。
|
||
type CardStopResumeRecord struct {
|
||
ID uint `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
|
||
CardID uint `gorm:"column:card_id;not null" json:"card_id"`
|
||
ICCID string `gorm:"column:iccid;type:varchar(30);not null;default:''" json:"iccid"`
|
||
CarrierID uint `gorm:"column:carrier_id;not null;default:0" json:"carrier_id"`
|
||
Action string `gorm:"column:action;type:varchar(10);not null" json:"action"`
|
||
Source string `gorm:"column:source;type:varchar(50);not null;default:''" json:"source"`
|
||
Scene string `gorm:"column:scene;type:varchar(50);not null;default:''" json:"scene"`
|
||
Reason string `gorm:"column:reason;type:varchar(50);not null;default:''" json:"reason"`
|
||
CommandID string `gorm:"column:command_id;type:varchar(64);not null;default:''" json:"command_id"`
|
||
Attempt int `gorm:"column:attempt;not null;default:1" json:"attempt"`
|
||
Result string `gorm:"column:result;type:varchar(20);not null" json:"result"`
|
||
ErrorCategory string `gorm:"column:error_category;type:varchar(30);not null;default:''" json:"error_category"`
|
||
ProviderCode string `gorm:"column:provider_code;type:varchar(30);not null;default:''" json:"provider_code"`
|
||
ProviderMessage string `gorm:"column:provider_message;type:varchar(500);not null;default:''" json:"provider_message"`
|
||
DurationMS int `gorm:"column:duration_ms;not null;default:0" json:"duration_ms"`
|
||
CreatedAt time.Time `gorm:"column:created_at;type:timestamptz;primaryKey;not null" json:"created_at"`
|
||
}
|
||
|
||
// TableName 返回停复机记录表名。
|
||
func (CardStopResumeRecord) TableName() string {
|
||
return "tb_card_stop_resume_record"
|
||
}
|