Architektura
Aplikace je jedna Next.js instance s hexagonální architekturou: business logika je izolovaná v jádru a s okolním světem mluví přes rozhraní.
Proč to tak je
Jádro (src/core) obsahuje všechna plánovací rozhodnutí a neimportuje nic z okolních vrstev: žádný Excel, žádné API, žádný framework. Místo toho definuje porty, tedy rozhraní jako IRoutingProvider nebo IOutputRepository, a infrastruktura (src/infrastructure) je implementuje: čtení a zápis Excelů, Mapy.cz routing s perzistentní cache, ukládání výsledků, LLM klienti.
Díky tomu běží testy jádra bez sítě a bez souborů: místo Mapy.cz se použije výpočet vzdušnou čarou, místo Excelu data v paměti. Stejná pravidla, která rozhodují v produkci, se testují na syntetických scénářích s předem známým správným výsledkem.
Kontejner (src/dependency) je jediné místo, kde se služby spojují s konkrétními implementacemi. Aplikační vrstva (src/app, tenhle web) je tenká: vezme data ze služby a vykreslí je, sama nikdy nerozhoduje o plánu.