New
This commit is contained in:
69
internal/models/events.go
Normal file
69
internal/models/events.go
Normal file
@@ -0,0 +1,69 @@
|
||||
// Filename: internal/models/events.go
|
||||
package models
|
||||
|
||||
import (
|
||||
"gemini-balancer/internal/errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Topic 定义事件总线主题名称
|
||||
const (
|
||||
TopicRequestFinished = "events:request_finished"
|
||||
TopicKeyStatusChanged = "events:key_status_changed"
|
||||
TopicUpstreamHealthChanged = "events:upstream_health_changed"
|
||||
TopicMasterKeyStatusChanged = "master_key_status_changed"
|
||||
TopicImportGroupCompleted = "events:import_group_completed"
|
||||
)
|
||||
|
||||
type RequestFinishedEvent struct {
|
||||
RequestLog
|
||||
KeyID uint
|
||||
GroupID uint
|
||||
IsSuccess bool
|
||||
StatusCode int
|
||||
Error *errors.APIError
|
||||
CorrelationID string `json:"correlation_id,omitempty"`
|
||||
UpstreamID *uint `json:"upstream_id"`
|
||||
UpstreamURL *string `json:"upstream_url,omitempty"`
|
||||
IsPreciseRouting bool `json:"is_precise_routing"`
|
||||
}
|
||||
|
||||
type KeyStatusChangedEvent struct {
|
||||
KeyID uint
|
||||
GroupID uint
|
||||
OldStatus APIKeyStatus
|
||||
NewStatus APIKeyStatus
|
||||
ChangeReason string `json:"change_reason"`
|
||||
ChangedAt time.Time `json:"changed_at"`
|
||||
}
|
||||
|
||||
type UpstreamHealthChangedEvent struct {
|
||||
UpstreamID uint `json:"upstream_id"`
|
||||
UpstreamURL string `json:"upstream_url"`
|
||||
OldStatus string `json:"old_status"` // e.g., "healthy", "unhealthy"
|
||||
NewStatus string `json:"new_status"`
|
||||
Latency time.Duration `json:"latency_ms"` // 延迟时间(毫秒)
|
||||
Reason string `json:"reason"` // 状态变更原因,如 "timeout", "status_503"
|
||||
CheckedAt time.Time `json:"checked_at"`
|
||||
}
|
||||
|
||||
const TopicProxyStatusChanged = "proxy:status_changed"
|
||||
|
||||
type ProxyStatusChangedEvent struct {
|
||||
ProxyID uint `json:"proxy_id"`
|
||||
Action string `json:"action"` // "created", "updated", "deleted"
|
||||
}
|
||||
|
||||
type MasterKeyStatusChangedEvent struct {
|
||||
KeyID uint `json:"key_id"`
|
||||
OldMasterStatus MasterAPIKeyStatus `json:"old_master_status"`
|
||||
NewMasterStatus MasterAPIKeyStatus `json:"new_master_status"`
|
||||
ChangeReason string `json:"change_reason"`
|
||||
ChangedAt time.Time `json:"changed_at"`
|
||||
}
|
||||
|
||||
type ImportGroupCompletedEvent struct {
|
||||
GroupID uint `json:"group_id"`
|
||||
KeyIDs []uint `json:"key_ids"`
|
||||
CompletedAt time.Time `json:"completed_at"`
|
||||
}
|
||||
Reference in New Issue
Block a user