first commit
This commit is contained in:
100
backend/internal/service/ops_settings_models.go
Normal file
100
backend/internal/service/ops_settings_models.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package service
|
||||
|
||||
// Ops settings models stored in DB `settings` table (JSON blobs).
|
||||
|
||||
type OpsEmailNotificationConfig struct {
|
||||
Alert OpsEmailAlertConfig `json:"alert"`
|
||||
Report OpsEmailReportConfig `json:"report"`
|
||||
}
|
||||
|
||||
type OpsEmailAlertConfig struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
Recipients []string `json:"recipients"`
|
||||
MinSeverity string `json:"min_severity"`
|
||||
RateLimitPerHour int `json:"rate_limit_per_hour"`
|
||||
BatchingWindowSeconds int `json:"batching_window_seconds"`
|
||||
IncludeResolvedAlerts bool `json:"include_resolved_alerts"`
|
||||
}
|
||||
|
||||
type OpsEmailReportConfig struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
Recipients []string `json:"recipients"`
|
||||
DailySummaryEnabled bool `json:"daily_summary_enabled"`
|
||||
DailySummarySchedule string `json:"daily_summary_schedule"`
|
||||
WeeklySummaryEnabled bool `json:"weekly_summary_enabled"`
|
||||
WeeklySummarySchedule string `json:"weekly_summary_schedule"`
|
||||
ErrorDigestEnabled bool `json:"error_digest_enabled"`
|
||||
ErrorDigestSchedule string `json:"error_digest_schedule"`
|
||||
ErrorDigestMinCount int `json:"error_digest_min_count"`
|
||||
AccountHealthEnabled bool `json:"account_health_enabled"`
|
||||
AccountHealthSchedule string `json:"account_health_schedule"`
|
||||
AccountHealthErrorRateThreshold float64 `json:"account_health_error_rate_threshold"`
|
||||
}
|
||||
|
||||
// OpsEmailNotificationConfigUpdateRequest allows partial updates, while the
|
||||
// frontend can still send the full config shape.
|
||||
type OpsEmailNotificationConfigUpdateRequest struct {
|
||||
Alert *OpsEmailAlertConfig `json:"alert"`
|
||||
Report *OpsEmailReportConfig `json:"report"`
|
||||
}
|
||||
|
||||
type OpsDistributedLockSettings struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
Key string `json:"key"`
|
||||
TTLSeconds int `json:"ttl_seconds"`
|
||||
}
|
||||
|
||||
type OpsAlertSilenceEntry struct {
|
||||
RuleID *int64 `json:"rule_id,omitempty"`
|
||||
Severities []string `json:"severities,omitempty"`
|
||||
|
||||
UntilRFC3339 string `json:"until_rfc3339"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
|
||||
type OpsAlertSilencingSettings struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
|
||||
GlobalUntilRFC3339 string `json:"global_until_rfc3339"`
|
||||
GlobalReason string `json:"global_reason"`
|
||||
|
||||
Entries []OpsAlertSilenceEntry `json:"entries,omitempty"`
|
||||
}
|
||||
|
||||
type OpsMetricThresholds struct {
|
||||
SLAPercentMin *float64 `json:"sla_percent_min,omitempty"` // SLA低于此值变红
|
||||
TTFTp99MsMax *float64 `json:"ttft_p99_ms_max,omitempty"` // TTFT P99高于此值变红
|
||||
RequestErrorRatePercentMax *float64 `json:"request_error_rate_percent_max,omitempty"` // 请求错误率高于此值变红
|
||||
UpstreamErrorRatePercentMax *float64 `json:"upstream_error_rate_percent_max,omitempty"` // 上游错误率高于此值变红
|
||||
}
|
||||
|
||||
type OpsAlertRuntimeSettings struct {
|
||||
EvaluationIntervalSeconds int `json:"evaluation_interval_seconds"`
|
||||
|
||||
DistributedLock OpsDistributedLockSettings `json:"distributed_lock"`
|
||||
Silencing OpsAlertSilencingSettings `json:"silencing"`
|
||||
Thresholds OpsMetricThresholds `json:"thresholds"` // 指标阈值配置
|
||||
}
|
||||
|
||||
// OpsAdvancedSettings stores advanced ops configuration (data retention, aggregation).
|
||||
type OpsAdvancedSettings struct {
|
||||
DataRetention OpsDataRetentionSettings `json:"data_retention"`
|
||||
Aggregation OpsAggregationSettings `json:"aggregation"`
|
||||
IgnoreCountTokensErrors bool `json:"ignore_count_tokens_errors"`
|
||||
IgnoreContextCanceled bool `json:"ignore_context_canceled"`
|
||||
IgnoreNoAvailableAccounts bool `json:"ignore_no_available_accounts"`
|
||||
AutoRefreshEnabled bool `json:"auto_refresh_enabled"`
|
||||
AutoRefreshIntervalSec int `json:"auto_refresh_interval_seconds"`
|
||||
}
|
||||
|
||||
type OpsDataRetentionSettings struct {
|
||||
CleanupEnabled bool `json:"cleanup_enabled"`
|
||||
CleanupSchedule string `json:"cleanup_schedule"`
|
||||
ErrorLogRetentionDays int `json:"error_log_retention_days"`
|
||||
MinuteMetricsRetentionDays int `json:"minute_metrics_retention_days"`
|
||||
HourlyMetricsRetentionDays int `json:"hourly_metrics_retention_days"`
|
||||
}
|
||||
|
||||
type OpsAggregationSettings struct {
|
||||
AggregationEnabled bool `json:"aggregation_enabled"`
|
||||
}
|
||||
Reference in New Issue
Block a user