Documentation
¶
Index ¶
- Constants
- type DegradeConfig
- type ErrorParserPolicy
- type Estimator
- type FallbackPolicy
- type OpType
- type Policy
- type PolicyCircuitBreak
- type PolicyCircuitBreakForm
- type PolicyCircuitBreakQueryOptions
- type PolicyCircuitBreakQueryParam
- type PolicyCircuitBreakQueryResult
- type PolicyCircuitBreaks
- type PolicyCopyToModelForm
- type PolicyEnabledForm
- type PolicyInvocation
- type PolicyInvocationForm
- type PolicyInvocationQueryOptions
- type PolicyInvocationQueryParam
- type PolicyInvocationQueryResult
- type PolicyInvocations
- type PolicyLimit
- type PolicyLimitForm
- type PolicyLimitQueryOptions
- type PolicyLimitQueryParam
- type PolicyLimitQueryResult
- type PolicyLimits
- type PolicyLoadbalance
- type PolicyLoadbalanceForm
- type PolicyLoadbalanceQueryOptions
- type PolicyLoadbalanceQueryParam
- type PolicyLoadbalanceQueryResult
- type PolicyLoadbalances
- type PolicyRoute
- type PolicyRouteDetail
- type PolicyRouteDetailForm
- type PolicyRouteDetailQueryOptions
- type PolicyRouteDetailQueryParam
- type PolicyRouteDetailQueryResult
- type PolicyRouteDetails
- type PolicyRouteForm
- type PolicyRouteQueryOptions
- type PolicyRouteQueryParam
- type PolicyRouteQueryResult
- type PolicyRoutes
- type PolicyTagging
- type PolicyTaggingForm
- type PolicyTaggingQueryOptions
- type PolicyTaggingQueryParam
- type PolicyTaggingQueryResult
- type PolicyTaggings
- type RelationType
- type RetryPolicy
- type SlidingWindow
- type TagCondition
- type TagDestination
- type TagGroup
- type TagRule
- type TaggingAction
Constants ¶
const ( TaggingActionTypeTag = "TAG" TaggingActionTypeReqHeader = "REQ_HEADER" TaggingActionTypeRspHeader = "RSP_HEADER" TaggingActionTypeReqCookie = "REQ_COOKIE" TaggingActionTypeRspCookie = "RSP_COOKIE" TaggingActionTypeReqBody = "REQ_BODY" )
const ( TagConditionTypeHeader = "HEADER" TagConditionTypeQuery = "QUERY" TagConditionTypeCookie = "COOKIE" TagConditionTypeSystem = "SYSTEM" TagConditionTypeTag = "TAG" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DegradeConfig ¶
type DegradeConfig struct {
ResponseCode int `json:"response_code"`
Attributes map[string]string `json:"attributes"`
ResponseBody string `json:"response_body"`
}
DegradeConfig represents a degrade configuration.
func (*DegradeConfig) UnmarshalJSON ¶
func (d *DegradeConfig) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling to handle response_code compatible with string/int and responseCode.
type ErrorParserPolicy ¶
type ErrorParserPolicy struct {
Parser string `json:"parser"`
Expression string `json:"expression"`
Statuses []string `json:"statuses"`
ContentTypes []string `json:"content_types"`
}
ErrorParserPolicy represents an error parser policy with a parser, expression, statuses, and contentTypes.
func (*ErrorParserPolicy) UnmarshalJSON ¶
func (p *ErrorParserPolicy) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling to handle contentTypes (camelCase) compatibly.
type Estimator ¶
type Estimator struct {
Type string `json:"type"` // length_ratio, tiktoken
Ratio float64 `json:"ratio"` // Character to token ratio
}
Estimator config for Token limit
type FallbackPolicy ¶
type FallbackPolicy struct {
Targets []string `json:"targets"` // 降级目标模型链条,如 ["gpt-4:free", "gpt-3.5-turbo"]
}
FallbackPolicy represents a fallback policy configuration.
type Policy ¶
type Policy struct {
LoadBalancePolicy *PolicyLoadbalanceForm `json:"load_balance_policy,omitempty"`
InvocationPolicy *PolicyInvocationForm `json:"invocation_policy,omitempty"`
LimitPolicies []*PolicyLimitForm `json:"limit_policies,omitempty"`
RoutePolicies []*PolicyRouteForm `json:"route_policies,omitempty"`
CircuitBreakPolicies []*PolicyCircuitBreakForm `json:"circuit_break_policies,omitempty"`
TaggingPolicies []*PolicyTaggingForm `json:"tagging_policies,omitempty"`
}
Policy 网关策略大聚合传输结构体,对应网关侧的 policy.Policy。 内部直接引用各个具体策略的 Form 结构体,它们已剔除纯数据库维度的 Deleted 审计字段。
func (*Policy) MarshalJSON ¶
MarshalJSON 自定义序列化,在序列化为写入 Redis 的 JSON 串时,递归过滤清除与网关无关的数据库元数据/审计字段以精简数据体积
type PolicyCircuitBreak ¶
type PolicyCircuitBreak struct {
ID string `json:"id" gorm:"type:char(20);primaryKey;<-:create;comment:主键ID (XID);"`
ModelID string `` /* 188-byte string literal not displayed */
ScopeType string `` /* 169-byte string literal not displayed */
ScopeCode string `` /* 161-byte string literal not displayed */
Priority int `json:"priority" gorm:"type:int;not null;default:0;comment:冲突合并时的优先级,数字越小越优先;"`
Name string `` /* 134-byte string literal not displayed */
Level string `json:"level" gorm:"type:varchar(64);not null;default:'INSTANCE';comment:熔断隔离级别:SERVICE / INSTANCE;"`
SlidingWindowType string `json:"sliding_window_type" gorm:"type:varchar(16);not null;default:'time';comment:滑动窗口类型:time / count;"`
SlidingWindowSize int `json:"sliding_window_size" gorm:"type:int;not null;default:20;comment:滑动窗口大小(次数或秒数);"`
MinCallsThreshold int `json:"min_calls_threshold" gorm:"type:int;not null;default:5;comment:熔断计算的最小调用次数;"`
FailureRateThreshold float64 `json:"failure_rate_threshold" gorm:"type:decimal(5,2);not null;default:50.00;comment:失败率阈值百分比;"`
SlowCallRateThreshold float64 `json:"slow_call_rate_threshold" gorm:"type:decimal(5,2);default:null;comment:慢调用率阈值百分比;"`
SlowCallDurationThreshold int `json:"slow_call_duration_threshold" gorm:"type:int;default:null;comment:慢调用时长阈值(毫秒);"`
SlowCallMetric string `json:"slow_call_metric" gorm:"type:varchar(32);default:null;comment:慢调用衡量指标:TTFT 等;"`
WaitDurationInOpenState int `` /* 128-byte string literal not displayed */
AllowedCallsInHalfOpenState int `` /* 126-byte string literal not displayed */
ForceOpen int `json:"force_open" gorm:"type:tinyint(1);not null;default:0;comment:是否强制开启熔断:0-否,1-是;"`
OutlierMaxPercent int `` /* 129-byte string literal not displayed */
CodePolicy *string `json:"code_policy,omitempty" gorm:"type:json;default:null;comment:响应状态码提取解析策略;"`
MessagePolicy *string `json:"message_policy,omitempty" gorm:"type:json;default:null;comment:错误消息提取解析策略;"`
DegradeConfig *string `json:"degrade_config,omitempty" gorm:"type:json;default:null;comment:熔断降级响应配置,嵌套 DegradeConfig 结构;"`
ErrorCodes *string `json:"error_codes,omitempty" gorm:"type:json;default:null;comment:触发熔断的异常状态码列表;"`
ErrorMessages *string `json:"error_messages,omitempty" gorm:"type:json;default:null;comment:错误消息列表;"`
Version int64 `json:"version" gorm:"type:bigint;not null;default:1;comment:策略版本;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用状态: 0-未启用,1-启用;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注描述;"`
Creator *string `json:"creator,omitempty" gorm:"type:varchar(255);default:null;comment:创建者;"`
Modifier *string `json:"modifier,omitempty" gorm:"type:varchar(255);default:null;comment:修改者;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `` /* 196-byte string literal not displayed */
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:逻辑删除时间;"`
}
Circuit break policy management
func (PolicyCircuitBreak) ConvertTo ¶
func (a PolicyCircuitBreak) ConvertTo(form *PolicyCircuitBreakForm) error
ConvertTo Convert `PolicyCircuitBreak` to `PolicyCircuitBreakForm` object.
func (PolicyCircuitBreak) TableName ¶
func (a PolicyCircuitBreak) TableName() string
type PolicyCircuitBreakForm ¶
type PolicyCircuitBreakForm struct {
ID string `json:"id"`
ModelID string `json:"model_id" binding:"max=20"` // Owner model ID; empty means template
ScopeType string `json:"scope_type" binding:"max=32"` // Scope type
ScopeCode string `json:"scope_code" binding:"max=128"` // Scope code
Priority int `json:"priority" binding:"min=0"` // Priority
Name string `json:"name" binding:"required,max=128"` // Policy name
Level string `json:"level" binding:"required,max=64"` // Policy level
SlidingWindowType string `json:"sliding_window_type" binding:"required,max=16"` // Sliding window type
SlidingWindowSize int `json:"sliding_window_size"` // Sliding window size
MinCallsThreshold int `json:"min_calls_threshold"` // Min calls threshold
CodePolicy *ErrorParserPolicy `json:"code_policy"` // Code policy
MessagePolicy *ErrorParserPolicy `json:"message_policy"` // Message policy
ErrorCodes []string `json:"error_codes"` // Error codes
ErrorMessages []string `json:"error_messages"` // Error messages
FailureRateThreshold float64 `json:"failure_rate_threshold"` // Failure rate threshold
SlowCallRateThreshold float64 `json:"slow_call_rate_threshold"` // Slow call rate threshold
SlowCallDurationThreshold int `json:"slow_call_duration_threshold"` // Slow call duration threshold
SlowCallMetric string `json:"slow_call_metric"` // Slow call metric
WaitDurationInOpenState int `json:"wait_duration_in_open_state"` // Wait duration in open state
AllowedCallsInHalfOpenState int `json:"allowed_calls_in_half_open_state"` // Allowed calls in half open state
ForceOpen int `json:"force_open"` // Force open
OutlierMaxPercent int `json:"outlier_max_percent"` // Outlier max percent
DegradeConfig *DegradeConfig `json:"degrade_config"` // Degrade config
Version int64 `json:"version"` // Version
Enabled int `json:"enabled"` // Enabled
Description *string `json:"description"` // Details
Creator *string `json:"creator,omitempty"` // Creator
Modifier *string `json:"modifier,omitempty"` // Modifier
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating a `PolicyCircuitBreak` struct.
func (*PolicyCircuitBreakForm) FillTo ¶
func (a *PolicyCircuitBreakForm) FillTo(policyCircuitBreak *PolicyCircuitBreak) error
Convert `PolicyCircuitBreakForm` to `PolicyCircuitBreak` object.
func (*PolicyCircuitBreakForm) Validate ¶
func (a *PolicyCircuitBreakForm) Validate() error
A validation function for the `PolicyCircuitBreakForm` struct.
type PolicyCircuitBreakQueryOptions ¶
type PolicyCircuitBreakQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyCircuitBreak` struct.
type PolicyCircuitBreakQueryParam ¶
type PolicyCircuitBreakQueryParam struct {
util.PaginationParam
ModelID string `form:"model_id"` // Model ID
Name string `form:"name"` // Policy name (like)
}
Defining the query parameters for the `PolicyCircuitBreak` struct.
type PolicyCircuitBreakQueryResult ¶
type PolicyCircuitBreakQueryResult struct {
Data PolicyCircuitBreaks
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyCircuitBreak` struct.
type PolicyCircuitBreaks ¶
type PolicyCircuitBreaks []*PolicyCircuitBreak
Defining the slice of `PolicyCircuitBreak` struct.
type PolicyCopyToModelForm ¶
type PolicyCopyToModelForm struct {
ModelID string `json:"model_id" binding:"required,max=20"`
Name string `json:"name" binding:"max=128"`
ScopeType *string `json:"scope_type" binding:"omitempty,max=32"`
ScopeCode *string `json:"scope_code" binding:"omitempty,max=128"`
Priority *int `json:"priority" binding:"omitempty,min=0"`
}
func (*PolicyCopyToModelForm) Validate ¶
func (a *PolicyCopyToModelForm) Validate() error
type PolicyEnabledForm ¶
type PolicyEnabledForm struct {
Enabled int `json:"enabled"` // Enable status: 0-disabled, 1-enabled
}
PolicyEnabledForm toggles the enabled status of a policy.
func (*PolicyEnabledForm) Validate ¶
func (p *PolicyEnabledForm) Validate() error
type PolicyInvocation ¶
type PolicyInvocation struct {
ID string `json:"id" gorm:"type:char(20);primaryKey;<-:create;comment:主键ID (XID);"`
ModelID string `` /* 182-byte string literal not displayed */
ScopeType string `` /* 166-byte string literal not displayed */
ScopeCode string `` /* 158-byte string literal not displayed */
Priority int `json:"priority" gorm:"type:int;not null;default:0;comment:冲突合并时的优先级,数字越小越优先;"`
Name string `` /* 131-byte string literal not displayed */
Type string `json:"type" gorm:"type:varchar(64);not null;default:'failover';comment:调用类型:failover,failfast;"`
RetryPolicy *string `json:"retry_policy,omitempty" gorm:"type:json;default:null;comment:重试策略;"`
FallbackPolicy *string `json:"fallback_policy,omitempty" gorm:"type:json;default:null;comment:降级策略;"`
Version int64 `json:"version" gorm:"type:bigint;not null;default:1;comment:配置版本号;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用状态: 0-未启用,1-启用;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注描述;"`
Creator *string `json:"creator,omitempty" gorm:"type:varchar(255);default:null;comment:创建者;"`
Modifier *string `json:"modifier,omitempty" gorm:"type:varchar(255);default:null;comment:修改者;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `` /* 190-byte string literal not displayed */
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:逻辑删除时间;"`
}
Invocation policy management
func (PolicyInvocation) ConvertTo ¶
func (a PolicyInvocation) ConvertTo(form *PolicyInvocationForm) error
ConvertTo Convert `PolicyInvocation` to `PolicyInvocationForm` object.
func (PolicyInvocation) TableName ¶
func (a PolicyInvocation) TableName() string
type PolicyInvocationForm ¶
type PolicyInvocationForm struct {
ID string `json:"id"`
ModelID string `json:"model_id" binding:"max=20"` // Owner model ID; empty means template
ScopeType string `json:"scope_type" binding:"max=32"` // Scope type
ScopeCode string `json:"scope_code" binding:"max=128"` // Scope code
Priority int `json:"priority" binding:"min=0"` // Priority
Name string `json:"name" binding:"required,max=128"` // Policy name
Type string `json:"type" binding:"required,max=64"` // Invocation type (failfast | failover)
RetryPolicy *RetryPolicy `json:"retry_policy"` // Retry policy
FallbackPolicy *FallbackPolicy `json:"fallback_policy"` // Fallback policy
Version int64 `json:"version"` // Version
Enabled int `json:"enabled"` // Enabled
Description *string `json:"description"` // Details
Creator *string `json:"creator,omitempty"` // Creator
Modifier *string `json:"modifier,omitempty"` // Modifier
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating a `PolicyInvocation` struct.
func (*PolicyInvocationForm) FillTo ¶
func (a *PolicyInvocationForm) FillTo(policyInvocation *PolicyInvocation) error
Convert `PolicyInvocationForm` to `PolicyInvocation` object.
func (*PolicyInvocationForm) Validate ¶
func (a *PolicyInvocationForm) Validate() error
A validation function for the `PolicyInvocationForm` struct.
type PolicyInvocationQueryOptions ¶
type PolicyInvocationQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyInvocation` struct.
type PolicyInvocationQueryParam ¶
type PolicyInvocationQueryParam struct {
util.PaginationParam
ModelID string `form:"model_id"` // Model ID
Name string `form:"name"` // Policy name (like)
}
Defining the query parameters for the `PolicyInvocation` struct.
type PolicyInvocationQueryResult ¶
type PolicyInvocationQueryResult struct {
Data PolicyInvocations
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyInvocation` struct.
type PolicyInvocations ¶
type PolicyInvocations []*PolicyInvocation
Defining the slice of `PolicyInvocation` struct.
type PolicyLimit ¶
type PolicyLimit struct {
ID string `json:"id" gorm:"type:char(20);primaryKey;<-:create;comment:主键ID (XID);"`
ModelID string `` /* 172-byte string literal not displayed */
ScopeType string `` /* 161-byte string literal not displayed */
ScopeCode string `` /* 153-byte string literal not displayed */
Priority int `json:"priority" gorm:"type:int;not null;default:0;comment:冲突合并时的优先级,数字越小越优先;"`
Name string `` /* 126-byte string literal not displayed */
Version int64 `json:"version" gorm:"type:bigint;not null;default:1;comment:配置版本号;"`
Type string `json:"type" gorm:"type:varchar(64);not null;comment:限流维度:request / token / cost;"`
MaxWaitMs int `json:"max_wait_ms" gorm:"type:int;not null;default:0;comment:排队等待最大时间(毫秒);"`
RelationType string `json:"relation_type" gorm:"type:varchar(16);not null;default:'AND';comment:多条件之间的逻辑关系:AND / OR;"`
SlidingWindows *string `` /* 132-byte string literal not displayed */
Conditions *string `json:"conditions,omitempty" gorm:"type:json;default:null;comment:匹配条件列表,嵌套 Condition 数组;"`
Estimator *string `json:"estimator,omitempty" gorm:"type:json;default:null;comment:估算器配置,包含 type 和 ratio;"`
LimitBy *string `json:"limit_by,omitempty" gorm:"type:json;default:null;comment:限流键提取维度组合:tenant, user, model 等;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用状态: 0-未启用,1-启用;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注描述;"`
Creator *string `json:"creator,omitempty" gorm:"type:varchar(255);default:null;comment:创建者;"`
Modifier *string `json:"modifier,omitempty" gorm:"type:varchar(255);default:null;comment:修改者;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `` /* 180-byte string literal not displayed */
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:逻辑删除时间;"`
}
Limit policy management
func (PolicyLimit) ConvertTo ¶
func (a PolicyLimit) ConvertTo(limit *PolicyLimitForm) error
ConvertTo Convert `PolicyLimit` to `PolicyLimitForm` object.
func (PolicyLimit) TableName ¶
func (a PolicyLimit) TableName() string
type PolicyLimitForm ¶
type PolicyLimitForm struct {
ID string `json:"id"`
ModelID string `json:"model_id" binding:"max=20"` // Owner model ID; empty means template
ScopeType string `json:"scope_type" binding:"max=32"` // Scope type
ScopeCode string `json:"scope_code" binding:"max=128"` // Scope code
Priority int `json:"priority" binding:"min=0"` // Priority
Name string `json:"name" binding:"required,max=128"` // Policy name
Version int64 `json:"version"` // Version
Type string `json:"type" binding:"required,max=64"` // Limit dimension: request / token / cost
MaxWaitMs int `json:"max_wait_ms"` // Max queue wait time (ms)
RelationType string `json:"relation_type" binding:"required,max=16"` // Relation type: AND / OR
SlidingWindows *[]SlidingWindow `json:"sliding_windows"` // Sliding windows (JSON)
Conditions *[]TagCondition `json:"conditions"` // Match conditions (JSON)
Estimator *Estimator `json:"estimator"` // Estimator config (JSON)
LimitBy *[]string `json:"limit_by"` // Limit key dimensions (JSON)
Enabled int `json:"enabled"` // Enabled
Description *string `json:"description"` // Details
Creator *string `json:"creator,omitempty"` // Creator
Modifier *string `json:"modifier,omitempty"` // Modifier
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating a `PolicyLimit` struct.
func (*PolicyLimitForm) FillTo ¶
func (a *PolicyLimitForm) FillTo(policyLimit *PolicyLimit) error
Convert `PolicyLimitForm` to `PolicyLimit` object.
func (*PolicyLimitForm) Validate ¶
func (a *PolicyLimitForm) Validate() error
A validation function for the `PolicyLimitForm` struct.
type PolicyLimitQueryOptions ¶
type PolicyLimitQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyLimit` struct.
type PolicyLimitQueryParam ¶
type PolicyLimitQueryParam struct {
util.PaginationParam
ModelID string `form:"model_id"` // Model ID
Name string `form:"name"` // Policy name (like)
}
Defining the query parameters for the `PolicyLimit` struct.
type PolicyLimitQueryResult ¶
type PolicyLimitQueryResult struct {
Data PolicyLimits
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyLimit` struct.
type PolicyLoadbalance ¶
type PolicyLoadbalance struct {
ID string `json:"id" gorm:"type:char(20);primaryKey;<-:create;comment:主键ID (XID);"`
ModelID string `` /* 184-byte string literal not displayed */
ScopeType string `` /* 167-byte string literal not displayed */
ScopeCode string `` /* 159-byte string literal not displayed */
Priority int `json:"priority" gorm:"type:int;not null;default:0;comment:冲突合并时的优先级,数字越小越优先;"`
Name string `` /* 132-byte string literal not displayed */
Type string `json:"type" gorm:"type:varchar(64);not null;comment:负载均衡算法类型,如 ROUND_ROBIN / WEIGHTED / STICKY;"`
Version int64 `json:"version" gorm:"type:bigint;not null;default:1;comment:配置版本号;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用状态: 0-未启用,1-启用;"`
Params *json.RawMessage `json:"params,omitempty" gorm:"type:json;default:null;comment:算法额外参数,如权重等;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注描述;"`
Creator *string `json:"creator,omitempty" gorm:"type:varchar(255);default:null;comment:创建者;"`
Modifier *string `json:"modifier,omitempty" gorm:"type:varchar(255);default:null;comment:修改者;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `` /* 192-byte string literal not displayed */
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:逻辑删除时间;"`
}
PolicyLoadbalance 负载均衡策略表
func (PolicyLoadbalance) ConvertTo ¶
func (a PolicyLoadbalance) ConvertTo(form *PolicyLoadbalanceForm) error
ConvertTo Convert `PolicyLoadbalance` to `PolicyLoadbalanceForm` object.
func (PolicyLoadbalance) TableName ¶
func (a PolicyLoadbalance) TableName() string
type PolicyLoadbalanceForm ¶
type PolicyLoadbalanceForm struct {
ID string `json:"id"`
ModelID string `json:"model_id" binding:"max=20"` // Owner model ID; empty means template
ScopeType string `json:"scope_type" binding:"max=32"` // Scope type
ScopeCode string `json:"scope_code" binding:"max=128"` // Scope code
Priority int `json:"priority" binding:"min=0"` // Priority
Name string `json:"name" binding:"required,max=128"` // Policy name
Type string `json:"type" binding:"required,max=64"` // Loadbalance policy type
Version int64 `json:"version"` // Version
Enabled int `json:"enabled"` // Enabled
Params *json.RawMessage `json:"params,omitempty"` // Extra params (JSON)
Description *string `json:"description"` // Details
Creator *string `json:"creator,omitempty"` // Creator
Modifier *string `json:"modifier,omitempty"` // Modifier
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating a `PolicyLoadbalance` struct.
func (*PolicyLoadbalanceForm) FillTo ¶
func (a *PolicyLoadbalanceForm) FillTo(policyLoadbalance *PolicyLoadbalance) error
Convert `PolicyLoadbalanceForm` to `PolicyLoadbalance` object.
func (*PolicyLoadbalanceForm) Validate ¶
func (a *PolicyLoadbalanceForm) Validate() error
A validation function for the `PolicyLoadbalanceForm` struct.
type PolicyLoadbalanceQueryOptions ¶
type PolicyLoadbalanceQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyLoadbalance` struct.
type PolicyLoadbalanceQueryParam ¶
type PolicyLoadbalanceQueryParam struct {
util.PaginationParam
ModelID string `form:"model_id"` // Model ID
Name string `form:"name"` // Policy name (like)
Type string `form:"type"` // Loadbalance type
}
Defining the query parameters for the `PolicyLoadbalance` struct.
type PolicyLoadbalanceQueryResult ¶
type PolicyLoadbalanceQueryResult struct {
Data PolicyLoadbalances
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyLoadbalance` struct.
type PolicyLoadbalances ¶
type PolicyLoadbalances []*PolicyLoadbalance
Defining the slice of `PolicyLoadbalance` struct.
type PolicyRoute ¶
type PolicyRoute struct {
ID string `json:"id" gorm:"type:char(20);primaryKey;<-:create;comment:主键ID (XID);"`
ModelID string `` /* 172-byte string literal not displayed */
ScopeType string `` /* 161-byte string literal not displayed */
ScopeCode string `` /* 153-byte string literal not displayed */
Priority int `json:"priority" gorm:"type:int;not null;default:0;comment:冲突合并时的优先级,数字越小越优先;"`
Name string `` /* 126-byte string literal not displayed */
Version int64 `json:"version" gorm:"type:bigint;not null;default:1;comment:配置版本号;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用状态: 0-未启用,1-启用;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注描述;"`
Creator *string `json:"creator,omitempty" gorm:"type:varchar(255);default:null;comment:创建者;"`
Modifier *string `json:"modifier,omitempty" gorm:"type:varchar(255);default:null;comment:修改者;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `` /* 180-byte string literal not displayed */
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:逻辑删除时间;"`
Details *[]PolicyRouteDetail `json:"details,omitempty" gorm:"foreignKey:RouteId;references:ID"`
}
Route policy management
func (PolicyRoute) ConvertTo ¶
func (a PolicyRoute) ConvertTo(route *PolicyRouteForm) error
ConvertTo Convert `PolicyRoute` to `PolicyRouteForm` object.
func (PolicyRoute) TableName ¶
func (a PolicyRoute) TableName() string
type PolicyRouteDetail ¶
type PolicyRouteDetail struct {
ID string `json:"id" gorm:"type:varchar(20);primaryKey;<-:create;comment:ID;"`
RouteId string `json:"route_id" gorm:"type:varchar(20);not null;index:idx_routeid,priority:1;comment:路由ID;"`
RelationType string `json:"relation_type" gorm:"type:varchar(20);not null;comment:关系类型;"`
Conditions *string `json:"conditions,omitempty" gorm:"type:json;default:null;comment:匹配条件;"`
Destinations *string `json:"destinations,omitempty" gorm:"type:json;default:null;comment:目的规则;"`
Order int `json:"order" gorm:"type:int;not null;default:0;comment:排序值;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `json:"-" gorm:"type:varchar(20);not null;default:'0';index:idx_routeid,priority:2;comment:逻辑删除标识;"`
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:删除时间;"`
}
Route policy detail management
func (PolicyRouteDetail) ConvertTo ¶
func (a PolicyRouteDetail) ConvertTo(detail *PolicyRouteDetailForm) error
ConvertTo Convert `PolicyRouteDetail` to `PolicyRouteDetailForm` object.
func (PolicyRouteDetail) TableName ¶
func (a PolicyRouteDetail) TableName() string
type PolicyRouteDetailForm ¶
type PolicyRouteDetailForm struct {
ID string `json:"id,omitempty"`
RouteId string `json:"route_id" binding:"required,max=20"` // Route ID
RelationType string `json:"relation_type" binding:"required,max=20"` // Relation type
Conditions *[]TagCondition `json:"conditions"` // Match conditions
Destinations *[]TagDestination `json:"destinations"` // Destination rules
Order int `json:"order"` // Sort order
Enabled int `json:"enabled"` // Enabled
Description *string `json:"description"` // Details
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating a `PolicyRouteDetail` struct.
func (*PolicyRouteDetailForm) FillTo ¶
func (a *PolicyRouteDetailForm) FillTo(policyRouteDetail *PolicyRouteDetail) error
FillTo Convert `PolicyRouteDetailForm` to `PolicyRouteDetail` object.
func (*PolicyRouteDetailForm) Validate ¶
func (a *PolicyRouteDetailForm) Validate() error
A validation function for the `PolicyRouteDetailForm` struct.
type PolicyRouteDetailQueryOptions ¶
type PolicyRouteDetailQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyRouteDetail` struct.
type PolicyRouteDetailQueryParam ¶
type PolicyRouteDetailQueryParam struct {
util.PaginationParam
RouteId string `form:"route_id"` // Route ID
RouteIds []string `form:"route_ids"` // Multi route id
}
Defining the query parameters for the `PolicyRouteDetail` struct.
type PolicyRouteDetailQueryResult ¶
type PolicyRouteDetailQueryResult struct {
Data PolicyRouteDetails
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyRouteDetail` struct.
type PolicyRouteDetails ¶
type PolicyRouteDetails []*PolicyRouteDetail
Defining the slice of `PolicyRouteDetail` struct.
type PolicyRouteForm ¶
type PolicyRouteForm struct {
ID string `json:"id"` // Unique ID
ModelID string `json:"model_id" binding:"max=20"` // Owner model ID; empty means template
ScopeType string `json:"scope_type" binding:"max=32"` // Scope type
ScopeCode string `json:"scope_code" binding:"max=128"` // Scope code
Priority int `json:"priority" binding:"min=0"` // Priority
Name string `json:"name" binding:"required,max=128"` // Policy name
Version int64 `json:"version"` // Version
Enabled int `json:"enabled"` // Enabled
Description *string `json:"description"` // Description
Details []PolicyRouteDetailForm `json:"details"` // RouteDetail
Creator *string `json:"creator,omitempty"` // Creator
Modifier *string `json:"modifier,omitempty"` // Modifier
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating a `PolicyRoute` struct.
func (*PolicyRouteForm) FillTo ¶
func (a *PolicyRouteForm) FillTo(policyRoute *PolicyRoute) error
Convert `PolicyRouteForm` to `PolicyRoute` object.
func (*PolicyRouteForm) Validate ¶
func (a *PolicyRouteForm) Validate() error
A validation function for the `PolicyRouteForm` struct.
type PolicyRouteQueryOptions ¶
type PolicyRouteQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyRoute` struct.
type PolicyRouteQueryParam ¶
type PolicyRouteQueryParam struct {
util.PaginationParam
ModelID string `form:"model_id"` // Model ID
Name string `form:"name"` // Policy name (like)
}
Defining the query parameters for the `PolicyRoute` struct.
type PolicyRouteQueryResult ¶
type PolicyRouteQueryResult struct {
Data PolicyRoutes
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyRoute` struct.
type PolicyTagging ¶
type PolicyTagging struct {
ID string `json:"id" gorm:"type:char(20);primaryKey;<-:create;comment:主键ID (XID);"`
ModelID string `` /* 176-byte string literal not displayed */
ScopeType string `` /* 163-byte string literal not displayed */
ScopeCode string `` /* 155-byte string literal not displayed */
Priority int `json:"priority" gorm:"type:int;not null;default:0;comment:冲突合并时的优先级,数字越小越优先;"`
Name string `` /* 128-byte string literal not displayed */
Relation string `json:"relation" gorm:"type:varchar(16);not null;default:'AND';comment:多条件之间的逻辑关系:AND / OR;"`
Conditions *string `json:"conditions,omitempty" gorm:"type:json;default:null;comment:匹配条件列表,嵌套 Condition 数组;"`
Actions *string `json:"actions,omitempty" gorm:"type:json;default:null;comment:染色动作列表,嵌套 TaggingAction 数组;"`
Version int64 `json:"version" gorm:"type:bigint;not null;default:1;comment:配置版本号;"`
Enabled int `json:"enabled" gorm:"type:int;not null;default:0;comment:启用状态: 0-未启用,1-启用;"`
Description *string `json:"description,omitempty" gorm:"type:varchar(255);default:null;comment:备注描述;"`
Creator *string `json:"creator,omitempty" gorm:"type:varchar(255);default:null;comment:创建者;"`
Modifier *string `json:"modifier,omitempty" gorm:"type:varchar(255);default:null;comment:修改者;"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamp;not null;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间;"`
UpdatedAt time.Time `json:"updated_at,omitempty" gorm:"type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间;"`
Deleted string `` /* 184-byte string literal not displayed */
DeletedAt *gorm.DeletedAt `json:"-" gorm:"type:datetime;default:null;comment:逻辑删除时间;"`
}
PolicyTagging 流量染色策略表
func (PolicyTagging) ConvertTo ¶
func (a PolicyTagging) ConvertTo(form *PolicyTaggingForm) error
ConvertTo Convert `PolicyTagging` to `PolicyTaggingForm` object.
func (PolicyTagging) TableName ¶
func (a PolicyTagging) TableName() string
type PolicyTaggingForm ¶
type PolicyTaggingForm struct {
ID string `json:"id"`
ModelID string `json:"model_id" binding:"max=20"` // Owner model ID; empty means template
ScopeType string `json:"scope_type" binding:"max=32"` // Scope type
ScopeCode string `json:"scope_code" binding:"max=128"` // Scope code
Priority int `json:"priority" binding:"min=0"` // Priority
Name string `json:"name" binding:"required,max=128"` // Policy name
Relation string `json:"relation" binding:"required,oneof=AND OR"` // Relation type
Conditions *[]TagCondition `json:"conditions"` // Match conditions
Actions *[]TaggingAction `json:"actions"` // Tagging actions
Version int64 `json:"version"` // Version
Enabled int `json:"enabled" binding:"oneof=0 1"` // Enabled
Description *string `json:"description"` // Details
Creator *string `json:"creator,omitempty"` // Creator
Modifier *string `json:"modifier,omitempty"` // Modifier
CreatedAt time.Time `json:"created_at"` // Create timestamp
UpdatedAt time.Time `json:"updated_at,omitempty"` // Update timestamp
}
Defining the data structure for creating or updating a `PolicyTagging` struct.
func (*PolicyTaggingForm) FillTo ¶
func (a *PolicyTaggingForm) FillTo(policyTagging *PolicyTagging) error
Convert `PolicyTaggingForm` to `PolicyTagging` object.
func (*PolicyTaggingForm) Validate ¶
func (a *PolicyTaggingForm) Validate() error
A validation function for the `PolicyTaggingForm` struct.
type PolicyTaggingQueryOptions ¶
type PolicyTaggingQueryOptions struct {
util.QueryOptions
}
Defining the query options for the `PolicyTagging` struct.
type PolicyTaggingQueryParam ¶
type PolicyTaggingQueryParam struct {
util.PaginationParam
ModelID string `form:"model_id"` // Model ID
Name string `form:"name"` // Policy name (like)
}
Defining the query parameters for the `PolicyTagging` struct.
type PolicyTaggingQueryResult ¶
type PolicyTaggingQueryResult struct {
Data PolicyTaggings
PageResult *util.PaginationResult
}
Defining the query result for the `PolicyTagging` struct.
type PolicyTaggings ¶
type PolicyTaggings []*PolicyTagging
Defining the slice of `PolicyTagging` struct.
type RelationType ¶
type RelationType string
RelationType defines the relation types for a TagGroup.
const ( RelationType_AND RelationType = "AND" RelationType_OR RelationType = "OR" )
type RetryPolicy ¶
type RetryPolicy struct {
Retry int `json:"retry"` // 重试次数
BackoffType string `json:"backoff_type"` // 退避类型 (e.g. "fixed", "exponential")
BaseMs int `json:"base_ms"` // 退避间隔 (毫秒)
ErrorCodes []string `json:"error_codes"` // 需要重试的错误码/状态码列表
ErrorMessages []string `json:"error_messages"` // 需要重试的错误消息列表
CodePolicy *ErrorParserPolicy `json:"code_policy"` // 错误码解析策略
MessagePolicy *ErrorParserPolicy `json:"message_policy"` // 错误消息解析策略
ConnectTimeout int `json:"connect_timeout"` // 建立连接超时 (毫秒)
TtftTimeout int `json:"ttft_timeout"` // 首字超时 (毫秒)
TotalTimeout int `json:"total_timeout"` // 请求总超时 (毫秒)
IdleTimeout int `json:"idle_timeout"` // 读空闲超时 (毫秒)
ExcludeFailedEndpoint *bool `json:"exclude_failed_endpoint"` // 重试时是否排除失败的端点
Version int64 `json:"version,omitempty"` // 版本标识 (保留)
}
RetryPolicy represents a retry policy configuration.
func (*RetryPolicy) UnmarshalJSON ¶
func (r *RetryPolicy) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling to handle string/integer conversion for ErrorCodes.
type SlidingWindow ¶
type SlidingWindow struct {
Threshold int `json:"threshold"`
TimeWindowInMs int64 `json:"time_window_in_ms"`
BurstRatio *float64 `json:"burst_ratio,omitempty"`
}
Defining the SlidingWindow of `LimitForm` struct.
func (*SlidingWindow) UnmarshalJSON ¶
func (s *SlidingWindow) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling to handle timeWindowInMs (camelCase) and burstRatio compatibly.
type TagCondition ¶
type TagCondition struct {
OpType OpType `json:"op_type"`
Type string `json:"type"`
Key string `json:"key"`
Values []string `json:"values"`
}
TagCondition represents a condition with an operation type, type, key, and values.
func (*TagCondition) UnmarshalJSON ¶
func (c *TagCondition) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling to handle opType (camelCase) compatibly.
type TagDestination ¶
type TagDestination struct {
Weight int32 `json:"weight"`
RelationType RelationType `json:"relation_type"`
Conditions []TagCondition `json:"conditions"`
}
TagDestination represents a destination with weight, relation type, conditions, and order.
func (*TagDestination) UnmarshalJSON ¶
func (d *TagDestination) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom JSON unmarshaling to handle relationType (camelCase) compatibly.
type TagGroup ¶
type TagGroup struct {
RelationType RelationType `json:"relation_type"`
Conditions []TagCondition `json:"conditions"`
Order int32 `json:"order"`
}
TagGroup represents a group of conditions with a relation type and order.
func (*TagGroup) UnmarshalJSON ¶
UnmarshalJSON implements custom JSON unmarshaling to handle relationType (camelCase) compatibly.
type TagRule ¶
type TagRule struct {
TagGroup
Destinations []TagDestination `json:"destinations"`
}
TagRule represents a rule with destinations, relation type, conditions, and order.
type TaggingAction ¶
type TaggingAction struct {
Type string `json:"type"` // 动作类型/操作范围,如 TAG, REQ_HEADER, RSP_HEADER 等
Key string `json:"key" binding:"required"` // 标签名/键名
Value string `json:"value" binding:"required"` // 标签值,支持变量插值
}
TaggingAction 染色打标动作