using System;

namespace PolyTrader.Modules.Accounting.Models
{
    /// <summary>
    /// Protokoll eines Abruf-/Ingest-Laufs (Tabelle acc_ingest_runs): Zeitfenster, Ergebniszahlen und
    /// der Balance-Anker (Soll-Ist als Vollständigkeits-Wächter). BalanceDelta ≈ 0 ⇒ Ledger vollständig.
    /// </summary>
    public class IngestRun
    {
        public long Id { get; set; }                       // Autoincrement-PK (= IngestBatchId der Ledger-Sätze)
        public int AccountId { get; set; }
        public bool Backfill { get; set; }                 // true = volle Historie, false = inkrementell

        public DateTime StartedAt { get; set; } = DateTime.UtcNow;
        public DateTime? FinishedAt { get; set; }
        public DateTime? FromTimestamp { get; set; }       // abgefragtes Fenster (ab)

        public int NewEntries { get; set; }
        public int DuplicateEntries { get; set; }

        public bool Success { get; set; }
        public string Message { get; set; } = string.Empty;

        /// <summary>On-Chain-USDC-Saldo zum Abrufzeitpunkt (Balance-Anker), falls Quelle verfügbar.</summary>
        public decimal? BalanceAnchorUsdc { get; set; }
        /// <summary>Σ NetUsdc über alle Ledger-Sätze des Kontos (Soll aus der Buchhaltung).</summary>
        public decimal? LedgerNetUsdc { get; set; }
        /// <summary>Anker − LedgerNet: sollte ≈ 0 sein; Abweichung = Vollständigkeits-/Klassifikations-Signal.</summary>
        public decimal? BalanceDeltaUsdc { get; set; }
    }
}
