routing

package
v1.0.11 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DNSResolver

type DNSResolver struct {
	ID           int64
	Tag          string
	Name         string
	Proto        string
	Address      string
	Port         int
	Enabled      bool
	ResolverJSON string
	CreatedAt    time.Time
	UpdatedAt    time.Time
}

type PreviewRequest

type PreviewRequest = publicrouting.PreviewRequest

type PreviewResult

type PreviewResult = publicrouting.PreviewResult

type RouteOutbound

type RouteOutbound struct {
	ID           int64
	Tag          string
	Name         string
	Type         string
	Region       string
	Enabled      bool
	OutboundJSON string
	CreatedAt    time.Time
	UpdatedAt    time.Time
}

type RouteProfile

type RouteProfile struct {
	ID          int64
	Code        string
	Name        string
	Description string
	ScopeType   string
	ScopeID     string
	Priority    int
	Mode        string
	Enabled     bool
	ProfileJSON string
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

type RouteRule

type RouteRule struct {
	ID          int64
	ProfileID   int64
	Name        string
	Priority    int
	Enabled     bool
	ServiceCode string
	MatcherJSON string
	ActionJSON  string
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

type RoutingAnalytics

type RoutingAnalytics struct {
	Items              []RoutingAnalyticsItem
	TopErrors          []RoutingAnalyticsError
	TotalRouteEvents   int
	TotalHealthReports int
	AffectedReporters  int
	FallbackRateBP     int
	DNSFailRateBP      int
	OutboundFailRateBP int
	WindowStartedAt    time.Time
}

type RoutingAnalyticsError

type RoutingAnalyticsError struct {
	Key   string
	Kind  string
	Error string
	Count int
}

type RoutingAnalyticsItem

type RoutingAnalyticsItem struct {
	ProfileCode       string
	RoutingHash       string
	ReporterID        string
	RouteEvents       int
	RouteDecisions    int
	RouteFallbacks    int
	FallbackRateBP    int
	DNSFailures       int
	OutboundFailures  int
	AffectedReporters int
	LastEventType     string
	LastStatus        string
	LastError         string
	LastSeenAt        time.Time
}

type RoutingAuditEvent

type RoutingAuditEvent struct {
	ID           string
	ResourceType string
	ResourceID   string
	ResourceName string
	Action       string
	Summary      string
	CreatedAt    time.Time
}

type RoutingCapabilityMatrix

type RoutingCapabilityMatrix struct {
	Items       []RoutingCapabilityMatrixItem
	GeneratedAt time.Time
}

type RoutingCapabilityMatrixItem

type RoutingCapabilityMatrixItem struct {
	Client            string
	Panel             string
	MinVersion        string
	SupportedFeatures []string
	MissingFeatures   []string
	ExecutionMode     string
	EnforceCandidate  bool
	Notes             string
}

type RoutingDrilldownItem

type RoutingDrilldownItem struct {
	Key               string
	Label             string
	RouteEvents       int
	RouteFallbacks    int
	FallbackRateBP    int
	DNSFailures       int
	OutboundFailures  int
	HealthReports     int
	AffectedReporters int
	LastError         string
	LastSeenAt        time.Time
	// contains filtered or unexported fields
}

type RoutingDrilldownReport

type RoutingDrilldownReport struct {
	ProfileCode   string
	RoutingHash   string
	GroupBy       string
	WindowMinutes int
	Items         []RoutingDrilldownItem
	GeneratedAt   time.Time
}

type RoutingE2EChecklist

type RoutingE2EChecklist struct {
	Items       []RoutingE2EChecklistItem
	Ready       bool
	GeneratedAt time.Time
}

type RoutingE2EChecklistItem

type RoutingE2EChecklistItem struct {
	Key      string
	Label    string
	Status   string
	Passed   bool
	Evidence string
}

type RoutingEnforceGuard

type RoutingEnforceGuard struct {
	Key    string
	Label  string
	Passed bool
	Status string
	Reason string
}

type RoutingGrayRelease

type RoutingGrayRelease struct {
	ID             int64
	ProfileCode    string
	Name           string
	Status         string
	BatchNo        int
	TargetType     string
	TargetIDsJSON  string
	Operator       string
	RollbackReason string
	StartedAt      time.Time
	EndedAt        time.Time
	ReleaseJSON    string
	TargetCount    int
	CreatedAt      time.Time
	UpdatedAt      time.Time
}

type RoutingHealthItem

type RoutingHealthItem struct {
	Kind                string
	Key                 string
	Name                string
	Status              string
	Source              string
	CheckedAt           time.Time
	RTTMS               int
	ConsecutiveFailures int
	LastError           string
	OutboundTag         string
	DNSResolverTag      string
}

type RoutingHealthReport

type RoutingHealthReport struct {
	ID                  int64
	ReporterType        string
	ReporterID          string
	ProfileCode         string
	RoutingHash         string
	SubjectType         string
	SubjectKey          string
	Region              string
	Status              string
	Source              string
	RTTMS               int
	ConsecutiveFailures int
	LastError           string
	OutboundTag         string
	DNSResolverTag      string
	CheckedAt           time.Time
	ReportJSON          string
	CreatedAt           time.Time
	UpdatedAt           time.Time
}

type RoutingNotification

type RoutingNotification struct {
	ID          string
	Severity    string
	Title       string
	Message     string
	Source      string
	ProfileCode string
	RoutingHash string
	CreatedAt   time.Time
}

type RoutingOverview

type RoutingOverview struct {
	RoutingHash      string
	GeneratedAt      string
	ProfileCode      string
	ProfileName      string
	Mode             string
	ProfileEnabled   bool
	EnforceReady     bool
	ExecutionEnabled bool
	RollbackAction   string
	CompileError     string
	Health           []RoutingHealthItem
	Guards           []RoutingEnforceGuard
	AuditEvents      []RoutingAuditEvent
}

type RoutingReleaseAlert

type RoutingReleaseAlert struct {
	Key      string `json:"key"`
	Severity string `json:"severity"`
	Message  string `json:"message"`
	Evidence string `json:"evidence"`
}

type RoutingReleaseApproval

type RoutingReleaseApproval struct {
	ID          string    `json:"id"`
	ReleaseID   int64     `json:"release_id"`
	SnapshotID  string    `json:"snapshot_id"`
	ProfileCode string    `json:"profile_code"`
	RoutingHash string    `json:"routing_hash"`
	Operator    string    `json:"operator"`
	Reason      string    `json:"reason"`
	ConfirmedAt time.Time `json:"confirmed_at"`
}

type RoutingReleaseAuditSnapshot

type RoutingReleaseAuditSnapshot struct {
	ID          string                   `json:"id"`
	ReleaseID   int64                    `json:"release_id"`
	ProfileCode string                   `json:"profile_code"`
	RoutingHash string                   `json:"routing_hash"`
	Operator    string                   `json:"operator"`
	Allowed     bool                     `json:"allowed"`
	Summary     string                   `json:"summary"`
	Thresholds  RoutingReleaseThresholds `json:"thresholds"`
	Gate        *RoutingReleaseGate      `json:"gate,omitempty"`
	Alerts      []RoutingReleaseAlert    `json:"alerts"`
	ReportJSON  string                   `json:"report_json"`
	CreatedAt   time.Time                `json:"created_at"`
}

type RoutingReleaseGate

type RoutingReleaseGate struct {
	ProfileCode          string
	RoutingHash          string
	Allowed              bool
	RequiresConfirmation bool
	Summary              string
	Checks               []RoutingReleaseGateCheck
	Analytics            *RoutingAnalytics
	GeneratedAt          time.Time
	Thresholds           RoutingReleaseThresholds
}

type RoutingReleaseGateCheck

type RoutingReleaseGateCheck struct {
	Key    string
	Label  string
	Passed bool
	Status string
	Reason string
}

type RoutingReleaseReport

type RoutingReleaseReport struct {
	ProfileCode string
	RoutingHash string
	Thresholds  RoutingReleaseThresholds
	Gate        *RoutingReleaseGate
	Alerts      []RoutingReleaseAlert
	Snapshots   []RoutingReleaseAuditSnapshot
	Approvals   []RoutingReleaseApproval
	Rollbacks   []RoutingRollbackAudit
	GeneratedAt time.Time
}

type RoutingReleaseThresholds

type RoutingReleaseThresholds struct {
	FallbackRateBP     int `json:"fallback_rate_bp"`
	DNSFailRateBP      int `json:"dns_fail_rate_bp"`
	OutboundFailRateBP int `json:"outbound_fail_rate_bp"`
	TopErrorsMax       int `json:"top_errors_max"`
	MinRouteEvents     int `json:"min_route_events"`
	MinHealthReports   int `json:"min_health_reports"`
}

type RoutingRepo

type RoutingRepo interface {
	SaveProfile(context.Context, *RouteProfile) (*RouteProfile, error)
	UpdateProfile(context.Context, *RouteProfile) (*RouteProfile, error)
	FindProfileByID(context.Context, int64) (*RouteProfile, error)
	ListProfiles(context.Context, int, int, string, *bool) ([]*RouteProfile, int32, error)
	DeleteProfile(context.Context, int64) error

	SaveRule(context.Context, *RouteRule) (*RouteRule, error)
	UpdateRule(context.Context, *RouteRule) (*RouteRule, error)
	FindRuleByID(context.Context, int64) (*RouteRule, error)
	ListRules(context.Context, int, int, int64, string, *bool) ([]*RouteRule, int32, error)
	DeleteRule(context.Context, int64) error

	SaveDNSResolver(context.Context, *DNSResolver) (*DNSResolver, error)
	UpdateDNSResolver(context.Context, *DNSResolver) (*DNSResolver, error)
	FindDNSResolverByID(context.Context, int64) (*DNSResolver, error)
	ListDNSResolvers(context.Context, int, int, string, *bool) ([]*DNSResolver, int32, error)
	DeleteDNSResolver(context.Context, int64) error

	SaveOutbound(context.Context, *RouteOutbound) (*RouteOutbound, error)
	UpdateOutbound(context.Context, *RouteOutbound) (*RouteOutbound, error)
	FindOutboundByID(context.Context, int64) (*RouteOutbound, error)
	ListOutbounds(context.Context, int, int, string, *bool) ([]*RouteOutbound, int32, error)
	DeleteOutbound(context.Context, int64) error

	SaveUnlockService(context.Context, *UnlockService) (*UnlockService, error)
	UpdateUnlockService(context.Context, *UnlockService) (*UnlockService, error)
	FindUnlockServiceByID(context.Context, int64) (*UnlockService, error)
	ListUnlockServices(context.Context, int, int, string, *bool) ([]*UnlockService, int32, error)
	DeleteUnlockService(context.Context, int64) error

	ResolveScopeBySubscribeToken(context.Context, string) (ScopeContext, error)
	SaveHealthReports(context.Context, []*RoutingHealthReport) error
	ListHealthReports(context.Context, int, int, string, string, string) ([]*RoutingHealthReport, int32, error)
	SaveRouteEvents(context.Context, []*RoutingRouteEvent) error
	ListRouteEvents(context.Context, int, int, string, string, string) ([]*RoutingRouteEvent, int32, error)

	SaveGrayRelease(context.Context, *RoutingGrayRelease) (*RoutingGrayRelease, error)
	UpdateGrayRelease(context.Context, *RoutingGrayRelease) (*RoutingGrayRelease, error)
	FindGrayReleaseByID(context.Context, int64) (*RoutingGrayRelease, error)
	ListGrayReleases(context.Context, int, int, string, string) ([]*RoutingGrayRelease, int32, error)
	DeleteGrayRelease(context.Context, int64) error
}

type RoutingRollbackAudit

type RoutingRollbackAudit struct {
	ID                  string                `json:"id"`
	ReleaseID           int64                 `json:"release_id"`
	ProfileCode         string                `json:"profile_code"`
	RoutingHash         string                `json:"routing_hash"`
	Operator            string                `json:"operator"`
	Reason              string                `json:"reason"`
	BeforeMode          string                `json:"before_mode"`
	AfterMode           string                `json:"after_mode"`
	BeforeReleaseStatus string                `json:"before_release_status"`
	AfterReleaseStatus  string                `json:"after_release_status"`
	Summary             string                `json:"summary"`
	Alerts              []RoutingReleaseAlert `json:"alerts"`
	CreatedAt           time.Time             `json:"created_at"`
}

type RoutingRouteEvent

type RoutingRouteEvent struct {
	ID             int64
	ReporterType   string
	ReporterID     string
	ProfileCode    string
	RoutingHash    string
	EventType      string
	Subject        string
	RuleID         string
	RuleName       string
	ActionType     string
	OutboundTag    string
	DNSResolverTag string
	FallbackTarget string
	Status         string
	LatencyMS      int
	Error          string
	EventAt        time.Time
	EventJSON      string
	CreatedAt      time.Time
	UpdatedAt      time.Time
}

type RoutingTrendMarker

type RoutingTrendMarker struct {
	At       time.Time
	Type     string
	Label    string
	Operator string
}

type RoutingTrendPoint

type RoutingTrendPoint struct {
	BucketStart       time.Time
	RouteEvents       int
	RouteFallbacks    int
	FallbackRateBP    int
	DNSFailures       int
	OutboundFailures  int
	HealthReports     int
	AffectedReporters int
}

type RoutingTrendReport

type RoutingTrendReport struct {
	ProfileCode   string
	RoutingHash   string
	WindowMinutes int
	BucketMinutes int
	Points        []RoutingTrendPoint
	Markers       []RoutingTrendMarker
	GeneratedAt   time.Time
}

type RoutingUsecase

type RoutingUsecase struct {
	// contains filtered or unexported fields
}

func NewRoutingUsecase

func NewRoutingUsecase(repo RoutingRepo, logger log.Logger) *RoutingUsecase

func (*RoutingUsecase) ActGrayRelease

func (uc *RoutingUsecase) ActGrayRelease(ctx context.Context, id int64, action, operator, reason string) (*RoutingGrayRelease, error)

func (*RoutingUsecase) Analytics

func (uc *RoutingUsecase) Analytics(ctx context.Context, profileCode, routingHash string, windowMinutes int) (*RoutingAnalytics, error)

func (*RoutingUsecase) BuildConfig

func (*RoutingUsecase) BuildPublicConfig

func (uc *RoutingUsecase) BuildPublicConfig(ctx context.Context, now time.Time, opts publicrouting.ConfigOptions) (publicrouting.Envelope, error)

func (*RoutingUsecase) CapabilityMatrix

func (uc *RoutingUsecase) CapabilityMatrix(context.Context) *RoutingCapabilityMatrix

func (*RoutingUsecase) ConfirmReleaseEnforce

func (uc *RoutingUsecase) ConfirmReleaseEnforce(ctx context.Context, releaseID int64, snapshotID, profileCode, routingHash, operator, reason string) (*RoutingReleaseApproval, error)

func (*RoutingUsecase) CreateDNSResolver

func (uc *RoutingUsecase) CreateDNSResolver(ctx context.Context, item *DNSResolver) (*DNSResolver, error)

func (*RoutingUsecase) CreateGrayRelease

func (uc *RoutingUsecase) CreateGrayRelease(ctx context.Context, item *RoutingGrayRelease) (*RoutingGrayRelease, error)

func (*RoutingUsecase) CreateOutbound

func (uc *RoutingUsecase) CreateOutbound(ctx context.Context, item *RouteOutbound) (*RouteOutbound, error)

func (*RoutingUsecase) CreateProfile

func (uc *RoutingUsecase) CreateProfile(ctx context.Context, item *RouteProfile) (*RouteProfile, error)

func (*RoutingUsecase) CreateRule

func (uc *RoutingUsecase) CreateRule(ctx context.Context, item *RouteRule) (*RouteRule, error)

func (*RoutingUsecase) CreateUnlockService

func (uc *RoutingUsecase) CreateUnlockService(ctx context.Context, item *UnlockService) (*UnlockService, error)

func (*RoutingUsecase) DeleteDNSResolver

func (uc *RoutingUsecase) DeleteDNSResolver(ctx context.Context, id int64) error

func (*RoutingUsecase) DeleteGrayRelease

func (uc *RoutingUsecase) DeleteGrayRelease(ctx context.Context, id int64) error

func (*RoutingUsecase) DeleteOutbound

func (uc *RoutingUsecase) DeleteOutbound(ctx context.Context, id int64) error

func (*RoutingUsecase) DeleteProfile

func (uc *RoutingUsecase) DeleteProfile(ctx context.Context, id int64) error

func (*RoutingUsecase) DeleteRule

func (uc *RoutingUsecase) DeleteRule(ctx context.Context, id int64) error

func (*RoutingUsecase) DeleteUnlockService

func (uc *RoutingUsecase) DeleteUnlockService(ctx context.Context, id int64) error

func (*RoutingUsecase) DrilldownReport

func (uc *RoutingUsecase) DrilldownReport(ctx context.Context, profileCode, routingHash, groupBy string, windowMinutes int) (*RoutingDrilldownReport, error)

func (*RoutingUsecase) E2EChecklist

func (uc *RoutingUsecase) E2EChecklist(ctx context.Context, profileCode string) (*RoutingE2EChecklist, error)

func (*RoutingUsecase) ListDNSResolvers

func (uc *RoutingUsecase) ListDNSResolvers(ctx context.Context, page, size int, search string, enabled *bool) ([]*DNSResolver, int32, error)

func (*RoutingUsecase) ListGrayReleases

func (uc *RoutingUsecase) ListGrayReleases(ctx context.Context, page, size int, profileCode, status string) ([]*RoutingGrayRelease, int32, error)

func (*RoutingUsecase) ListHealthReports

func (uc *RoutingUsecase) ListHealthReports(ctx context.Context, page, size int, subjectType, subjectKey, reporterType string) ([]*RoutingHealthReport, int32, error)

func (*RoutingUsecase) ListOutbounds

func (uc *RoutingUsecase) ListOutbounds(ctx context.Context, page, size int, search string, enabled *bool) ([]*RouteOutbound, int32, error)

func (*RoutingUsecase) ListProfiles

func (uc *RoutingUsecase) ListProfiles(ctx context.Context, page, size int, search string, enabled *bool) ([]*RouteProfile, int32, error)

func (*RoutingUsecase) ListRouteEvents

func (uc *RoutingUsecase) ListRouteEvents(ctx context.Context, page, size int, eventType, profileCode, reporterType string) ([]*RoutingRouteEvent, int32, error)

func (*RoutingUsecase) ListRules

func (uc *RoutingUsecase) ListRules(ctx context.Context, page, size int, profileID int64, search string, enabled *bool) ([]*RouteRule, int32, error)

func (*RoutingUsecase) ListUnlockServices

func (uc *RoutingUsecase) ListUnlockServices(ctx context.Context, page, size int, search string, enabled *bool) ([]*UnlockService, int32, error)

func (*RoutingUsecase) Notifications

func (uc *RoutingUsecase) Notifications(ctx context.Context, profileCode, routingHash string, windowMinutes int, severity string) ([]RoutingNotification, error)

func (*RoutingUsecase) Overview

func (uc *RoutingUsecase) Overview(ctx context.Context) (*RoutingOverview, error)

func (*RoutingUsecase) Preview

func (*RoutingUsecase) RecordHealthReport

func (uc *RoutingUsecase) RecordHealthReport(ctx context.Context, req publicrouting.HealthReportRequest) error

func (*RoutingUsecase) RecordRouteEvent

func (uc *RoutingUsecase) RecordRouteEvent(ctx context.Context, req publicrouting.RouteEventRequest) error

func (*RoutingUsecase) ReleaseGate

func (uc *RoutingUsecase) ReleaseGate(ctx context.Context, profileCode, routingHash string, windowMinutes int, thresholdOverrides ...RoutingReleaseThresholds) (*RoutingReleaseGate, error)

func (*RoutingUsecase) ReleaseReport

func (uc *RoutingUsecase) ReleaseReport(ctx context.Context, releaseID int64, profileCode, routingHash string, windowMinutes int, thresholdOverrides RoutingReleaseThresholds) (*RoutingReleaseReport, error)

func (*RoutingUsecase) ResolveCurrentProfile

func (uc *RoutingUsecase) ResolveCurrentProfile(ctx context.Context, opts publicrouting.ConfigOptions) (publicrouting.Envelope, error)

func (*RoutingUsecase) RollbackReleaseAudit

func (uc *RoutingUsecase) RollbackReleaseAudit(ctx context.Context, releaseID int64, profileCode, routingHash string, windowMinutes int, operator, reason string) (*RoutingRollbackAudit, error)

func (*RoutingUsecase) SnapshotReleaseAudit

func (uc *RoutingUsecase) SnapshotReleaseAudit(ctx context.Context, releaseID int64, profileCode, routingHash string, windowMinutes int, operator string, thresholds RoutingReleaseThresholds) (*RoutingReleaseAuditSnapshot, error)

func (*RoutingUsecase) TrendReport

func (uc *RoutingUsecase) TrendReport(ctx context.Context, profileCode, routingHash string, windowMinutes, bucketMinutes int) (*RoutingTrendReport, error)

func (*RoutingUsecase) UpdateDNSResolver

func (uc *RoutingUsecase) UpdateDNSResolver(ctx context.Context, item *DNSResolver) (*DNSResolver, error)

func (*RoutingUsecase) UpdateGrayRelease

func (uc *RoutingUsecase) UpdateGrayRelease(ctx context.Context, item *RoutingGrayRelease) (*RoutingGrayRelease, error)

func (*RoutingUsecase) UpdateOutbound

func (uc *RoutingUsecase) UpdateOutbound(ctx context.Context, item *RouteOutbound) (*RouteOutbound, error)

func (*RoutingUsecase) UpdateProfile

func (uc *RoutingUsecase) UpdateProfile(ctx context.Context, item *RouteProfile) (*RouteProfile, error)

func (*RoutingUsecase) UpdateRule

func (uc *RoutingUsecase) UpdateRule(ctx context.Context, item *RouteRule) (*RouteRule, error)

func (*RoutingUsecase) UpdateUnlockService

func (uc *RoutingUsecase) UpdateUnlockService(ctx context.Context, item *UnlockService) (*UnlockService, error)

type ScopeContext

type ScopeContext struct {
	UserID          int64
	SubscribeID     int64
	UserSubscribeID int64
	SubscribeToken  string
	NodeID          int64
}

type UnlockService

type UnlockService struct {
	ID          int64
	Code        string
	Name        string
	Category    string
	Enabled     bool
	ServiceJSON string
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

Jump to

Keyboard shortcuts

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