package config import ( "time" ) // Provider 供应商模型 type Provider struct { ID string `gorm:"primaryKey" json:"id"` Name string `gorm:"not null" json:"name"` APIKey string `gorm:"not null" json:"api_key"` BaseURL string `gorm:"not null" json:"base_url"` Protocol string `gorm:"column:protocol;default:'openai'" json:"protocol"` Enabled bool `gorm:"default:true" json:"enabled"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Models []Model `gorm:"foreignKey:ProviderID;constraint:OnDelete:CASCADE" json:"models,omitempty"` } // Model 模型配置 type Model struct { ID string `gorm:"primaryKey" json:"id"` ProviderID string `gorm:"not null;index" json:"provider_id"` ModelName string `gorm:"not null;index" json:"model_name"` Enabled bool `gorm:"default:true" json:"enabled"` CreatedAt time.Time `json:"created_at"` } // UsageStats 用量统计 type UsageStats struct { ID uint `gorm:"primaryKey;autoIncrement" json:"id"` ProviderID string `gorm:"not null;index" json:"provider_id"` ModelName string `gorm:"not null;index" json:"model_name"` RequestCount int `gorm:"default:0" json:"request_count"` Date time.Time `gorm:"type:date;not null;uniqueIndex:idx_provider_model_date" json:"date"` } // TableName 指定表名 func (Provider) TableName() string { return "providers" } func (Model) TableName() string { return "models" } func (UsageStats) TableName() string { return "usage_stats" } // MaskAPIKey 掩码 API Key(仅显示最后 4 个字符) func (p *Provider) MaskAPIKey() { if len(p.APIKey) > 4 { p.APIKey = "***" + p.APIKey[len(p.APIKey)-4:] } else { p.APIKey = "***" } }