schema

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 11, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TaggingActionTypeTag       = "TAG"
	TaggingActionTypeReqHeader = "REQ_HEADER"
	TaggingActionTypeRspHeader = "RSP_HEADER"
	TaggingActionTypeReqCookie = "REQ_COOKIE"
	TaggingActionTypeRspCookie = "RSP_COOKIE"
	TaggingActionTypeReqBody   = "REQ_BODY"
)
View Source
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 OpType

type OpType string

OpType defines the operation types for a TagCondition.

const (
	OpType_EQUAL     OpType = "EQUAL"
	OpType_NOT_EQUAL OpType = "NOT_EQUAL"
	OpType_IN        OpType = "IN"
	OpType_NOT_IN    OpType = "NOT_IN"
	OpType_REGULAR   OpType = "REGULAR"
	OpType_PREFIX    OpType = "PREFIX"
)

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

func (p *Policy) MarshalJSON() ([]byte, error)

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 PolicyLimits

type PolicyLimits []*PolicyLimit

Defining the slice of `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 PolicyRoutes

type PolicyRoutes []*PolicyRoute

Defining the slice of `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

func (g *TagGroup) UnmarshalJSON(data []byte) error

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 染色打标动作

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL