Golf - Juniortävlingar

Dokumentationsportal

Historical Sync

Arkitektur

CLI / Scheduler / Admin / API
              |
              v
         SyncService
        /     |      \
 Discovery  Policy   Import
              |        |
              v        v
 competition_sources  CompetitionDocument
                       |
                       v
             historical_results import engine

historical_sync.py är ett tunt CLI. Synklogiken finns i services/sync_service.py och beslutspolicyn i services/sync_policy.py.

Smart arkivering

En tävling hoppas över utan resultat-API-anrop när:

  1. tävlingens slutdatum, eller startdatum som reserv, är äldre än 30 dagar,
  2. den tidigare har importerats korrekt,
  3. senaste status inte är FAILED.

Status blir SKIPPED_ARCHIVED. FAILED, manuell tävlingssynk och --force-refresh kringgår regeln.

Statusar

  • DISCOVERED: hittad men ännu inte importerad.
  • IMPORTED: importerad första gången.
  • UPDATED: ändrat innehåll importerades.
  • UNCHANGED: innehållshashen var oförändrad.
  • SKIPPED_ARCHIVED: korrekt historisk tävling hoppades över lokalt.
  • FAILED: senaste hämtningen eller importen misslyckades och ska provas igen.

Retry och statistik

competition_sources lagrar retry_count och last_retry_at. historical_sync_runs lagrar skipped_archived_count, retried_count, retry_success_count och duration_seconds.

Kommandon

python -m historical_sync --mode delta
python -m historical_sync --mode bootstrap
python -m historical_sync --mode bootstrap --force-refresh
python -m historical_sync --mode competition --competition-id 5668016

Avgränsning: lagtävlingar i matchspel

Historikimporten omfattar individuella scratchtävlingar med resultat som kan normaliseras till systemets individuella resultatmodell.

JSM Klubblag och andra lagtävlingar i matchspel/knockout importeras inte. De registreras som SKIPPED_UNSUPPORTED med skip_reason=TEAM_MATCH_PLAY. Statusen är avsiktlig, räknas inte som fel och retryas inte.

Inkrementell kontrollpolicy (v20.39.0)

För att undvika onödiga anrop till Min Golf används tävlingens slutdatum och senaste kontrolltid:

  • pågående, framtida och dagens tävlingar kontrolleras vid varje körning,
  • avslutade tävlingar som är högst 7 dagar gamla kontrolleras tidigast efter 12 timmar,
  • avslutade tävlingar som är 8–30 dagar gamla kontrolleras tidigast efter 72 timmar,
  • äldre korrekt importerade tävlingar arkiveras enligt befintlig 30-dagarspolicy,
  • misslyckade importer retryas oberoende av intervallen,
  • SKIPPED_UNSUPPORTED retryas aldrig,
  • --force-refresh kringgår både arkivering och kontrollintervall.

En tävling som ännu inte ska kontrolleras redovisas som SKIPPED_FRESH. Statusen i competition_sources skrivs inte över; den senaste riktiga importstatusen bevaras.

Intervallen kan konfigureras med:

  • HISTORICAL_SYNC_RECENT_WINDOW_DAYS (standard 7)
  • HISTORICAL_SYNC_RECENT_RECHECK_HOURS (standard 12)
  • HISTORICAL_SYNC_SETTLED_RECHECK_HOURS (standard 72)
  • HISTORICAL_SYNC_ARCHIVE_DAYS (standard 30)