package models import "time" // ========= ViewModel / DTOs for Dashboard API ========= type StatCard struct { Value float64 `json:"value"` SubValue any `json:"sub_value,omitempty"` SubValueTip string `json:"sub_value_tip,omitempty"` Trend float64 `json:"trend"` TrendIsGrowth bool `json:"trend_is_growth"` } type DashboardStatsResponse struct { KeyCount StatCard `json:"key_count"` RPM StatCard `json:"rpm"` RequestCount24h StatCard `json:"request_count_24h"` ErrorRate24h StatCard `json:"error_rate_24h"` KeyStatusCount map[APIKeyStatus]int64 `json:"key_status_count"` MasterStatusCount map[MasterAPIKeyStatus]int64 `json:"master_status_count"` TokenCount map[string]any `json:"token_count"` UpstreamHealthStatus map[string]string `json:"upstream_health_status,omitempty"` RequestCounts map[string]int64 `json:"request_counts"` } type ChartDataset struct { Label string `json:"label"` Data []int64 `json:"data"` Color string `json:"color"` } type ChartData struct { Labels []string `json:"labels"` Datasets []ChartDataset `json:"datasets"` } // TokenUpdateRequest DTO for binding the PUT /admin/tokens request type TokenUpdateRequest struct { ID uint `json:"ID"` Token string `json:"Token"` Description string `json:"Description"` Tag string `json:"Tag"` Status string `json:"Status"` IsAdmin bool `json:"IsAdmin"` AllowedGroupIDs []uint `json:"AllowedGroupIDs"` } // 数据传输对象(DTO),表示单个Key的测试结果。 // =================================================================== type KeyTestResult struct { Key string `json:"key"` Status string `json:"status"` // "valid", "invalid", "error" Message string `json:"message"` } // APIKeyQueryParams defines the parameters for listing/searching keys. type APIKeyQueryParams struct { KeyGroupID uint `form:"-"` Page int `form:"page"` PageSize int `form:"limit"` Status string `form:"status"` Keyword string `form:"keyword"` IDs string `form:"ids"` } // APIKeyDetails is a DTO that combines APIKey info with its contextual status from the mapping. type APIKeyDetails struct { // Embedded APIKey fields ID uint `json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` APIKey string `json:"api_key"` MasterStatus MasterAPIKeyStatus `json:"master_status"` // Mapping-specific fields Status APIKeyStatus `json:"status"` LastError string `json:"last_error"` ConsecutiveErrorCount int `json:"consecutive_error_count"` LastUsedAt *time.Time `json:"last_used_at"` CooldownUntil *time.Time `json:"cooldown_until"` EncryptedKey string } // SettingsManager 定义了系统设置管理器的抽象接口。 type SettingsManager interface { GetSettings() *SystemSettings }