Jednoduchý generátor faktur s ISDOC zdarma · Verze 2.4.3

Technická dokumentace architektury cache, localStorage a komunikace s registry.

Vícevrstvá architektura dotazů

Systém minimalizuje zátěž externích registrů pomocí pěti vrstev. Při vyhledání subjektu se postupuje od nejrychlejší po nejpomalejší:

  1. Lokální adresář (localStorage) – klientský cache subjektů v prohlížeči uživatele. Aktivní pouze při zapnuté volbě „Ukládat data". Max 500 záznamů, bez automatické expirace. Pokud prohlížeč má údaje o subjektu z předchozího použití, odešle je na server přímo – bez jakéhokoliv síťového dotazu na registry.
  2. Fast Cache (in-memory) – předpřipravený seznam nejčastějších subjektů na serveru. Nulová latence, bez přístupu k databázi či síti.
  3. Serverový adresář (PostgreSQL) – centrální databáze subjektů na serveru. Obsahuje sloučené údaje ze všech registrů s automatickou aktualizací. Pokud jsou údaje kompletní, vrátí je okamžitě bez volání externích registrů.
  4. Serverová cache (PostgreSQL) – cache jednotlivých odpovědí z registrů s omezenou dobou platnosti (TTL = Time To Live). Zastaralé záznamy se automaticky odstraňují pro zachování aktuálnosti dat.
  5. Online registry – ARES (Ministerstvo financí), Registr plátců DPH, VIES (EU). Volány pouze pokud žádná z předchozích vrstev nemá data.
Odolnost proti výpadkům

Díky vícevrstvé architektuře dokáže systém vystavit fakturu i při výpadku externích služeb:

ScénářVýsledekPodmínka
Registry (ARES, DPH) nedostupné Funguje Subjekt je v serverovém adresáři nebo lokální cache
Server i registry nedostupné Funguje Subjekt byl dříve použit a je v lokálním adresáři prohlížeče
Vše nedostupné, nový subjekt Nefunguje Údaje o subjektu neexistují v žádné vrstvě cache

Princip: Lokální adresář v prohlížeči slouží jako poslední záchranná vrstva. Pokud jste někdy vystavili fakturu pro daný subjekt, systém si údaje pamatuje a dokáže je znovu použít bez jakéhokoliv přístupu k internetu. Pro zcela nové subjekty je připojení k registrům nutné – údaje prostě nejsou k dispozici.

Client-side storage (localStorage)

Při aktivní volbě „Ukládat data" systém využívá localStorage pro:

KlíčObsahLimit
elfak_storage_modeRežim úložiště (simple/advanced)
elfak_ico_historyHistorie použitých IČO (rychlá tlačítka)20 záznamů
elfak_supplier_dataData dodavatelů (per IČO)
elfak_customer_dataData odběratelů per dodavatel50 per dodavatel
elfak_invoicing_by_supplierČíselné řady faktur per dodavatel
elfak_registry_directoryLokální adresář subjektů500 záznamů
elfak_display_settingsNastavení zobrazení (limity)

Celkový limit localStorage: ~5 MB per origin (browser-dependent). Monitoring v Data Manageru.

Kompaktní formát faktur

Faktury se ukládají v kompaktním JSON formátu pro minimalizaci velikosti:

Rate limiting a ochrana

Systém používá víceúrovňový model limitů – každý registr má vlastní limit:

Limity jsou na dvou úrovních: per uživatel (IP adresa) a serverové (ochrana externích registrů).

Per uživatel (per IP):
OperaceLimitOknoPopis
Vyhledání v registrech 30 60 min Dotazy do ARES, DPH registru i VIES (per registr)
Generování PDF 30 60 min Vytvoření faktury (PDF + ISDOC)
DDoS ochrana 100 1 min Celkový počet HTTP požadavků
Serverové (ochrana externích API):
RegistrLimitOknoPopis
ARES 500 60 min Globální limit dotazů do ARES napříč všemi uživateli
Registr DPH 200 60 min Globální limit dotazů do DPH registru
VIES 200 60 min Globální limit dotazů do VIES (EU validace DIČ)
Celkem (emergency) 800 60 min Globální limit napříč všemi registry dohromady
Režimy lokální paměti

Systém podporuje dva režimy, volitelné uživatelem:

RežimCheckboxChování
Simple ☐ Ukládat data Žádná data se neukládají. Žádná rychlá tlačítka, historie, adresář ani číselné řady.
Advanced ☑ Ukládat data Plná funkcionalita: rychlá tlačítka, historie faktur, adresář, číselné řady, sugesce.

Princip „všechno nebo nic": buď jsou všechny funkce aktivní, nebo žádná. Uživatel má plnou kontrolu.

Bankovní účty
Konfigurovatelné limity

V Data Manageru lze nastavit: