namespace PolyTrader.Core.Configuration
{
    /// <summary>
    /// Konfiguration der Deploymentcenter-Integration (Lizenz, Watchdog, Fehler-Reporting,
    /// Updates), gebunden an die "Deploymentcenter"-Sektion in <c>appsettings.json</c>.
    ///
    /// Ersetzt die bisherigen Einzeldienste Watchdog (watchdog.mhdf.de) und LicenseLabrador
    /// (license.mhdf.de) durch einen gemeinsamen Gegenüber. Siehe
    /// docs/umsetzungsplaene/UMSETZUNGSPLAN-Deploymentcenter-Integration.md.
    ///
    /// <c>Token</c> und <c>LicenseKey</c> sind Geheimnisse und gehören NICHT in die versionierte
    /// <c>appsettings.json</c> - dort stehen nur die leeren Platzhalter mit Kommentar, die echten
    /// Werte kommen aus der gitignorierten <c>appsettings.Local.json</c> (wie schon
    /// <see cref="DatabaseOptions.MySqlConnectionString"/>). Beide dürfen zusätzlich über
    /// <c>PolyTrader.Core.Security.SecretProtection</c> verschlüsselt sein (<c>enc:v1:...</c>);
    /// Klartext wird unverändert durchgereicht.
    /// </summary>
    public class DeploymentcenterOptions
    {
        public const string SectionName = "Deploymentcenter";

        /// <summary>Basis-URL des Deploymentcenters, z.B. https://dc.mhdf.de. Nur https:// (oder
        /// http:// auf localhost) wird von den aufrufenden Diensten akzeptiert.</summary>
        public string BaseUrl { get; set; } = "";

        /// <summary>Produkt-Slug im Deploymentcenter-Admin (Entscheidung 14.08.2026: "polytrader").</summary>
        public string ProjectSlug { get; set; } = "polytrader";

        /// <summary>Auslieferungskanal: prod, beta oder dev.</summary>
        public string Channel { get; set; } = "prod";

        /// <summary>
        /// Anwendungstoken dieser Installation (Scopes watchdog:ping, bugtracker:report).
        /// Wird bei der Erstinstallation über setup.json/source:"provision" gezogen; kann
        /// alternativ von Hand gesetzt werden. Niemals ein Master-Token hier eintragen.
        /// </summary>
        public string Token { get; set; } = "";

        /// <summary>Lizenzschlüssel dieser Installation.</summary>
        public string LicenseKey { get; set; } = "";

        /// <summary>Eindeutiger Name dieser Installation im Watchdog-Dashboard.</summary>
        public string WatchdogSource { get; set; } = "polytrader";

        /// <summary>Mehrere Instanzen derselben Quelle unterscheiden (z.B. "prod-1").</summary>
        public string WatchdogInstance { get; set; } = "prod-1";

        /// <summary>Sende-Takt des Heartbeats in Sekunden.</summary>
        public int WatchdogIntervalSeconds { get; set; } = 60;

        /// <summary>Heartbeat an- oder abschalten, ohne den restlichen Block zu leeren.</summary>
        public bool WatchdogEnabled { get; set; } = false;

        /// <summary>Ungefangene Fehler an /api/errors/v1/report melden.</summary>
        public bool ErrorReportingEnabled { get; set; } = false;

        /// <summary>Beim Start auf ein neues Release prüfen (installiert nie automatisch).</summary>
        public bool UpdateCheckEnabled { get; set; } = false;
    }
}
