Case study: spread-monitor

Hlavní pointa: přehled, který běží sám. Když se data zastaví, nechci to zjistit až pozdě — a nechci to ručně opravovat.

Kontext

  • data se sbírají u TWS (lokálně), protože to je “zdroj pravdy”
  • web dashboard má být veřejný a rychlý na otevření

Design rozhodnutí (a proč)

  • Collector lokálně: minimalizuje latenci a závislosti (TWS běží u mě)
  • Dual‑DB režim: lokální SQLite pro dev, Postgres na Railway pro prod
  • CSV záloha: jednoduchý způsob syncu dat mezi počítači
  • Auth na ingest: X‑API‑Key, aby ingest nebyl veřejná díra

Největší pasti

  • collector může “zamrznout” bez pádu → řešení: watchdog (ticho = exception)
  • časové zóny v datech → řešení: jednotný předpoklad a nedělat JS posuny
  • produkce vs lokál se často liší → řešení: autodetekce DB a stejné endpointy

Důkazy / provozní signály

  • logy pro START/STOP/CONNECTED/DISCONNECTED
  • dashboard: aktuál + 24h graf + průměry (rychlý sanity check)

Co bych udělal jinak

  • jednoduché “health” metriky (poslední ingest timestamp + alert při zpoždění)
  • export pro “postmortem”: stáhnout konkrétní okno dat + konfiguraci