"""Typed contracts for the System Health overview.""" from datetime import date, datetime from typing import Literal from pydantic import BaseModel, Field Availability = Literal["available", "unavailable"] MigrationState = Literal["current", "mismatch", "unavailable"] class ApplicationDiagnostics(BaseModel): status: Literal["available"] = "available" environment: str build_commit: str | None = None build_version: str | None = None server_time: datetime expected_migration_head: str | None = None class MigrationDiagnostics(BaseModel): state: MigrationState current_revision: str | None = None expected_revision: str | None = None class TableCount(BaseModel): name: str row_count: int class TableSize(BaseModel): name: str total_bytes: int class TelemetryDiagnostics(BaseModel): snapshot_count: int oldest_observed_at: datetime | None = None latest_observed_at: datetime | None = None class FleetIntegrityDiagnostics(BaseModel): total_miners: int miners_without_asset_id: int unmapped_miners: int miners_in_multiple_positions: int duplicate_current_mac_groups: int class LocationIntegrityDiagnostics(BaseModel): sites: int rooms: int positions: int occupied_positions: int empty_positions: int unscoped_legacy_positions: int expected_mac_mismatches: int class RepairIntegrityDiagnostics(BaseModel): active_modular_repairs: int duplicate_active_repair_groups: int legacy_repair_only_miners: int lifecycle_repair_without_active_repair: int active_repair_lifecycle_mismatches: int waiting_placement_records: int repair_events: int repair_parts: int class RollupDiagnostics(BaseModel): table_present: bool row_count: int | None = None latest_bucket: datetime | date | None = None population: Literal["manual"] = "manual" class RetentionDiagnostics(BaseModel): raw_retention_enabled: Literal[False] = False raw_retention_mode: Literal["not_enabled"] = "not_enabled" hourly: RollupDiagnostics daily: RollupDiagnostics latest_recorded_run_at: datetime | None = None latest_recorded_run_mode: str | None = None completeness: Literal["not_guaranteed"] = "not_guaranteed" class PostgreSQLDiagnostics(BaseModel): status: Availability migration: MigrationDiagnostics table_counts: list[TableCount] = Field(default_factory=list) largest_tables: list[TableSize] = Field(default_factory=list) telemetry: TelemetryDiagnostics | None = None fleet: FleetIntegrityDiagnostics | None = None locations: LocationIntegrityDiagnostics | None = None repairs: RepairIntegrityDiagnostics | None = None retention: RetentionDiagnostics | None = None class RedisDiagnostics(BaseModel): status: Availability class SystemHealthOverviewData(BaseModel): application: ApplicationDiagnostics postgresql: PostgreSQLDiagnostics redis: RedisDiagnostics class SystemHealthOverviewMeta(BaseModel): generated_at: datetime partial: bool unavailable_sections: list[str] = Field(default_factory=list) frontend_request_count: Literal[1] = 1 postgresql_statement_count: Literal[3] = 3 redis_call_count: Literal[1] = 1 class SystemHealthOverviewResponse(BaseModel): data: SystemHealthOverviewData meta: SystemHealthOverviewMeta error: None = None