Portál DHZO · stav vývoja

Pyros / kde stojíme

Multitenantná webová aplikácia pre dobrovoľné hasičské zbory — náhrada IKPO a papierových evidencií, elektronická dokumentácia podľa vyhl. 611/2006 § 30 ods. 5. Fireport zboru zostáva ako zvolávací systém. Infraštruktúra beží, jadro evidencií stojí, výjazdový proces je funkčný od SMS až po PDF správu o zásahu.

396commitov na Azure DevOps
12 / 25modulov hotových
54API controllerov
61DB migrácií
56obrazoviek portálu
2159automatických testov

Etapy

E0 základ · E1 evidencie · E2 výjazdový proces · E3 nadstavba · F budúcnosť
E0
Infraštruktúra
98 % · deploy na QNAP
E1
Jadro evidencií
95 %
E2
Výjazdový proces
100 % · hotová
E3
Nadstavba
70 %
F
Budúcnosť
0 %

Hotové a funkčné

overené end-to-end v prehliadači aj cez API
E0 — Infraštruktúra
stackhotové

Frontend + Backend

Angular 19 + Fuse v21, .NET 10 API, JWT prihlásenie, slovenská navigácia.

infrahotové

Docker + CI/CD

PostgreSQL+PostGIS, MinIO, frontend aj backend v kontajneroch; CI/CD deploy na QNAP cez self-hosted agent.

corehotové

Multitenant + roly

Zbor = tenant, jeden hasič vo viacerých zboroch, funkcie a roly per zbor.

E1 — Jadro evidencií
M01·M02hotové

Zbory, nastavenia, auth

Kategória, IČO, GPS zbrojnice (PostGIS), SMTP a SMS token per zbor. Správa zborov pre superadmina — prehľad všetkých tenantov s počtami, upozornenie na zbor bez správcu, založenie nového zboru. Prístup do aplikácie pre členov — správca zriadi prihlásenie s dočasným heslom, ktoré si člen pri prvom prihlásení musí zmeniť. Reset hesla členovi + globálne vyhľadávanie naprieč členmi/technikou/výjazdmi v hlavičke. Rolovo-citlivá navigácia — člen (Clen) nevidí adminské moduly a route guardy ho pri priamom zadaní adresy presmerujú.

M03rozpracované

Členovia

Evidencia + detail, odbornosti a zdravotné prehliadky s platnosťou, výstroj/OOPP s revíziami, adresa a telesné miery pre veľkosti výstroja, podpis na canvase. Osobný prehľad „Moje termíny" pre prihláseného člena (vlastné odbornosti, prehliadka, revízie výstroja + jeho akcie).

M04hotové

Technika

Vzťahy zabudované/vyberateľné/priradené, stavy, normy spotreby, kapacity hasív a posádka. Evidencia údržby/umývania/servisu s nákladmi a fotodokumentáciou (MinIO). Preštartovanie/funkčné skúšky s konfigurovateľným intervalom a zápisom závady → poruchový stav. Motohodiny cvičenia a skúšok čerpadla so vstupom do spotreby proti norme. Audit história zmien stavu, zaradenia a umiestnenia.

M05hotové

Lehoty & watchdog

STK/EK/skúšky s countdownom a semaforom, stránka Kontroly, denný e-mail digest vrátane odborností a prehliadok členov.

M09rozpracované

PHM — kniha a sklad

Príjem/výdaj, zostatky, výdaj do techniky, upozornenie, keď zásoba klesne pod zákonné minimum (vyhl. 611/2006 príl. 3 bod 4 určuje dolnú hranicu, nie strop). Tankovanie s bločkom — cena/dodávateľ/doklad + foto bločka (MinIO) a ročné náklady.

M13·M17rozpracované

Dashboard & notifikácie

KPI, blížiace sa lehoty, kondičné jazdy, oznamy, ADP a preventívne kontroly; denný e-mail digest (SMTP per tenant, Hangfire) a in-app zvonček „Upozornenia" v hlavičke s počtom lehôt po termíne. Tlačiteľný prehľad lehôt (PDF). TV/kiosk režim pre nástennú obrazovku v zbrojnici — celoobrazovkový tmavý prehľad s hodinami a auto-obnovou.

E2 — Výjazdový proces
M06hotové

Výjazdy

Ev. číslo P.RR, časová os 7 časov, posádka s rolami, technika s auto-výpočtom spotreby, foto (MinIO), interaktívna mapa miesta (klik = GPS + vzdušná vzdialenosť od zbrojnice).

M07hotové

Správa o zásahu

Verné tlačivo (príloha 8) v PDF vrátane požiarnych sekcií a podpisu; odoslanie na KOS e-mailom priamo z appky.

M08hotové

Vozový zošit + žiadanka

Kniha jázd s kontinuitou tachometra aj motohodinomera (kolónky 9 a 10 tlačiva sú „km/Mh“), prevádzkový denník podľa prílohy 5, žiadanka IGAZ 109 s reálnym trojrolovým schvaľovaním, watchdog kondičných jázd viazaný na strojníka, automatický zápis jázd z výjazdu.

M15rozpracované

Fireport → výjazd

SMS brána: preposlaná SMS z Fireportu automaticky založí výjazd s GPS. (Scraping blokuje reCAPTCHA.)

M14hotové

Výpožičky techniky

Zapožičanie techniky členovi aj civilovi, ochrana pred dvojitým požičaním, stav techniky „vypožičaná", vrátenie s kontrolou, semafor po termíne, preberací protokol v PDF s podpismi.

Čo nás čaká

poradie na dohodnutie — návrh nižšie
Dokončiť E2 — výjazdový proces
M15čaká na teba

Ostrá SMS z Fireportu

Brána je hotová a otestovaná na vzorových správach — chýba nasmerovať router so SIM na endpoint a nechať prejsť jednu skutočnú SMS.

M15čaká

Prihlásenosť členov z Fireportu

Kto reagoval na poplach vo Fireporte — ťahanie vyžaduje prihlásenú session, čo blokuje reCAPTCHA. Vlastné zvolávanie to medzitým rieši v appke.

E3 — Nadstavba
M10hotové

Kiosk v zbrojnici

Tablet na stene: prihlásenie PIN-om alebo RFID kartou, veľké dlaždice — výdaj a príjem PHM, preštartovanie so zápisom závady, odklik kontrol. Sedenie trvá minúty a samo sa ukončí; z kiosku sa nedá dostať do portálu.

M11rozpracované

GPS mapy

Prehľadová mapa výjazdov + live poloha techniky z GPS jednotiek (jazdí/stojí/mlčí, PHM a voda v %, história trasy) a cestná vzdialenosť zásahu popri vzdušnej čiare. Ostáva zapojiť fyzické trackery.

M12rozpracované

Kalendár, akcie & oznamy

Agenda zboru — časová os lehôt, revízií, odborností, prehliadok, výjazdov, prípravy a kontrol po mesiacoch (.ics feed). Akcie a podujatia s prihlasovaním členov (idem/nejdem/možno), kapacitou a históriou. Oznamy / nástenka zboru (interná náhrada FB skupiny, dôležité pripnuté). PPAH — protipožiarne asistenčné hliadky pri podujatiach (limit „väčšieho počtu osôb" podľa typu priestoru, povinný vedúci, checklist úloh pred/počas/po, záznam PDF s podpismi). Pripomienky pred akciou chodia členom, ktorí ešte nereagovali.

M14hotové

Požičiavanie techniky

Výpožičky členom aj civilom s ochranou pred dvojitým požičaním, stav „vypožičaná", vrátenie s kontrolou a preberacie protokoly PDF (podpisy odovzdal/prevzal).

M20hotové

Protiplynová služba (ADP)

Zborová evidencia dýchacích prístrojov, fľiaš a masiek s countdownmi tlakových skúšok / revízií / životnosti (semafor) + záznamy výcvikov nositeľov (štvrťročný/ročný, prezenčná listina). Lehoty v kalendári aj dennom watchdogu. Kontroly podľa prílohy č. 4 bodu 8 — pred zaradením, po oprave, po každom použití alebo najmenej raz za pol roka, s písomným záznamom; semafor ukazuje prístroj, ktorý sa vrátil zo zásahu a ešte nebol skontrolovaný.

M16rozpracované

Štatistiky & bodovanie

Ročné štatistiky výjazdov, účasť členov %, výkaz pre obec (PDF) a rebríček aktivity (body zo zásahov, akcií, prípravy a služieb, medaily top 3, váhy si zbor nastaví sám, rebríček aj v PDF na výročnú schôdzu). Časy dojazdu — výjazdový čas, dojazd a trvanie zásahu s priemerom, mediánom a najhorším prípadom, rozpad podľa typu udalosti a deň/noc, porovnanie rokov; pri málo dátach appka označí výsledok za nepodložený. Vývoj v čase — mesačné a ročné rady výjazdov, reakčných časov, účasti, km a PHM; rad, ktorý nestojí aspoň na troch podložených bodoch, sa nenakreslí. Chýba: prihlásenosť a reakcie členov z Fireportu.

M19rozpracované

Dokumentácia jednotky & obce

Kniha o výkone služby (strážna kniha), Odborná príprava a cvičenia (prezenčné listiny, PDF protokol, periodicita 1×/12 mes.), Kniha ohlásených prípadov (prijaté hlásenia s prepojením na výjazd) a Preventívne protipožiarne kontroly (kontrolné skupiny, countdown na ďalšiu kontrolu 1×/5 r.) hotové — s CSV exportmi a termínmi v kalendári. Ročný plán údržby (úkony po mesiacoch, odklik splnenia so zápisom do knihy údržby, prevzatie plánu do ďalšieho roka, tlačivo PDF s podpismi). Spojovacia služba (rádiostanice, staničný denník a kniha porúch — zápis poruchy prepne stanicu do poruchy, oprava ju vráti) a vnútorná kontrolná činnosť s prehľadom oblastí, ktoré sa v roku ešte nekontrolovali. Dokumentácia obce podľa vyhl. 121/2002 § 36–37 — appka vyhodnotí šesť povinných okruhov vrátane požiarneho poriadku a vytlačí kontrolný list pred kontrolou. Preventivár obce s countdownom aktualizačnej odbornej prípravy (1× za 5 rokov, najmenej 20 h) — bez potvrdenia o nej je osvedčenie zo zákona neplatné.

Budúcnosť (F)
M22rozpracované

Mobilné aplikácie

Portál sa inštaluje na plochu telefónu ako appka (PWA) so skratkami na Zvolávanie a Moje termíny; ukladá do pamäte len samotnú appku, údaje z API nikdy. Natívne Android/iOS a zápis bez signálu ostávajú na neskôr.

M23hotové

Vlastné zvolávanie

Veliteľ vyhlási poplach, cvičenie alebo neodkladnú prácu; členom odíde e-mail, push notifikácia aj SMS a odklikávajú „idem / neskôr / nejdem" s časom príchodu. Veliteľ vidí počty a menoslov od najrýchlejších. Naraz beží jedno zvolávanie. Automatické telefonáty a eskalácie zboru naďalej zabezpečuje Fireport.

M21rozpracované

Ročný výkaz HJ

Výkaz sa skladá automaticky z evidencií — členovia (aj počet žien), OOPP, prostriedky strojnej a protiplynovej služby, zásahová činnosť. Krok „Overiť údaje" vypíše, čo treba doplniť, aby sa výkaz neodovzdal neúplný; export CSV, XLSX (každý modul na vlastnom hárku so súčtami) a tlačivo PDF s podpismi. Navyše reporty pre OR HaZZ na vyžiadanie — zásahová činnosť a materiálno-technické vybavenie za zadané obdobie.

M24čaká

Kamery vo vozidlách

Live náhľad z cisterny — niektoré vozidlá majú linuxový server s kamerami.

Čo potrebujem od teba

Tri veci odomknú prechod z „funguje lokálne" na „beží naostro".

01
SMTP údajena ostré odosielanie e-mailových upozornení na lehoty
02
Router so SIMnasmerovať SMS bránu na endpoint pre import výjazdov
03
Doména + TLSDNS a certifikát pre status.pyros.trista.sk → kontajner :8903

Changelog — čo pribudlo po dňoch

Denník dokončených celkov (odvodený z commitov). Najnovšie navrchu.

30. 7. 2026 — schéma a jej zapojenie
  • Šesť modulov držala pod hotovým chýbajúca schéma databázy. Jedna aditívna migrácia (4 tabuľky, 21 stĺpcov, ani jedno mazanie) ich rozviazala a päť agentov ju zapojilo — schéma bez zapojenia je mŕtvy kód a je to horšie, než keby nebola databáza
  • Meno schvaľujúceho na žiadanke na prepravu bolo vždy prázdne. Vlastná chyba tej istej migrácie: databázová vrstva si k trom podpisom vyrobila druhú sadu stĺpcov, appka zapisovala do svojej a čítalo sa z tej prázdnej. Testy to nevideli, pracujú s identifikátormi — našlo sa to na živých dátach. Odteraz to stráži test nad modelom M08
  • Poplach hlásil „oslovených 5“ aj keď neodišlo nič. Zvolávanie ignorovalo, či sa e-mail naozaj podarilo odoslať, takže zbor bez nastavenej pošty dostal presne opačnú informáciu, než potreboval — a to v jedinej situácii, kde je omyl najdrahší M23
  • Prehľad pripravenosti klamal opačne — zboru s prázdne uloženým poštovým serverom hlásil blokujúcu vadu a radil znova uložiť nastavenia, ktoré boli v poriadku; pošta pritom odchádzala. Opisoval si logiku odosielania sám a rozišol sa s ňou M01
  • Dátum na správe o zásahu pre KOS bral zónu servera. Správa spracovaná krátko po polnoci nesla predošlý deň, na Nový rok aj predošlý rok — na doklade, ktorý odchádza mimo zbor. Plus dvanásť ročných prehľadov, ktoré sa cez Vianoce otvorili s minulým rokom M07
  • Motohodiny pri jazde sa do spotreby nedostali — vozový zošit ich začal evidovať, porovnanie s normou o nich nevedelo, takže technika s vydanými litrami sa nevyhodnotila vôbec. Spotreba dnes sčítava štyri evidencie a každá ďalšia cesta k tomu istému číslu je odmietnutá pri zápise M04
  • Motohodiny cvičenia a skúšky čerpadla majú konečne kde vzniknúť. Agregát na cvičení a čerpadlo na polročnej skúške vychádzali v spotrebe ako 0 Mh — odchýlka od normy tak mohla byť len tým, že hodiny nemali kde byť zapísané M04
  • História funkcií člena — „odkedy je veliteľom družstva“ sa dovtedy z appky prečítať nedalo. Zápis vzniká sám pri zmene funkcie; obrazovka pritom hovorí, že história sa vedie od zavedenia evidencie — dopísať členom „funkcia od vzniku členstva“ by bola nepravda M03
  • Denník odoslaných správ prežije reštart — dovtedy žil v pamäti, takže nasadenie novej verzie ho zmazalo. Na „mne nič neprišlo“ sa dá odpovedať bez hľadania v logu servera. Telo správy sa neukladá nikde, chodia v ňom dočasné heslá M17
  • Žiadanka na prepravu má reálne schvaľovanie — tri podpisy tlačiva namiesto vytlačených čiar. Žiadateľ si sám neschváli, pokiaľ je v zbore niekto iný oprávnený; ak nie, krok prejde a doklad to priznáva — malý zbor sa nesmie zaseknúť na pravidle, ktoré nemá kto splniť M08
  • Zbor bez vlastného skladu PHM už nesvieti trvalo pod zákonným minimom. Minimum tým nezmizlo: vyhláška hovorí „na hasičskej stanici“, nie „v sklade“, takže prah zostáva a prázdna zbrojnica svieti kriticky M09
  • Spôsob platby a stav tachometra vo vlastných stĺpcoch — dovtedy len voľný text v poznámke, takže sa nedali filtrovať ani exportovať. Import tankovacej karty ich vyplní sám M09
  • Audit história techniky namiesto vety prilepenej do poznámky — zmena stavu, zaradenia, umiestnenia, vyradenie aj závada zistená pri funkčnej skúške M04
  • Výmaz osobných údajov si v novej histórii funkcií nechával číslo rozhodnutia a poznámku — presne ten typ údaja, ktorý sa pri odbornostiach už zámerne maže. Obdobia funkcií zostávajú, dokladajú zloženie jednotky GDPR
  • Moduly Technika a Jazdy sú hotové — 12 z 25. Traja agenti hotovo odmietli a zdôvodnili to: chýbajúce vyhodnotenie špecializovanej a cyklickej prípravy so zákonnou lehotou, tri medzery v PHM vrátane kiosku, a nemožnosť overiť push a SMS bez kľúčov, HTTPS a zakúpenej brány. Zelený semafor by tam bol tvrdením o stave, ktorý nikto nevidel stav
  • 2159 automatických testov (z 1960), build bez varovaní, obe migrácie nasadené. Kniha PHM aj vozový zošit pilotu sú bit po bite v pôvodnom stave kvalita
30. 7. 2026 — uzatváranie modulov
  • Dokumentácia portálupríručka pre veliteľa (23 kapitol: prvých 30 minút, zásah krok za krokom, technika, ľudia, papiere pre orgán) a technické návody pre správcu (párovanie GPS jednotiek, kiosk a RFID, SMTP, push, SMS, diagnostika, zálohovanie, známe pasti). Obe sa dajú vytlačiť ako PDF a bežia vo vlastnom kontajneri dodávka
  • Trinásť modulov prešlo uzatváraním — a ani jeden nebol „hotový, len nedoznačený“. Každý mal skutočnú prácu; tri nálezy boli vážne kvalita
  • Dashboard, zvonček a nástenná obrazovka ukazovali tri rôzne čísla o tom istom — portál hlásil 0 lehôt po termíne, zvonček v tej istej hlavičke 6 a stena 3. Dashboard si počty ťahal len z lehôt techniky, ostatné z agregácie naprieč modulmi. Teraz to skladá jedna metóda M13
  • Kondičné jazdy boli právne zle. Vyhláška ich viaže na človeka („člen, ktorého súčet kilometrov v kalendárnom mesiaci nedosahuje 10 km“), appka ich počítala na vozidlo — takže strojník s 200 km „prekryl“ toho, komu povinnosť reálne vznikla. Navyše sa do jedného výpočtu miešali dve rôzne povinnosti (príl. 3 body 8 a 9) M08
  • Ročný výkaz zakrýval nevybaveného člena — OOPP sa porovnávali ako počet kusov proti počtu členov, takže dva zásahové odevy u jedného a žiadny u druhého vyšli ako „v poriadku“. Vybavenie sa posudzuje po členoch a kontrolu úplnosti nesie každý export vrátane CSV M21
  • Sklad PHM a kanistre dávali o tom istom ustanovení opačný verdikt — jedna stránka hlásila „chýba 20 l nafty“ a druhá v tej istej chvíli „v poriadku“. Staničnú zásobu počíta jeden spoločný výpočet M09
  • Verejná stránka bola nedosiahnuteľná — koreň portálu viedol vždy na prihlásenie a na landing neviedol v celej appke ani jeden odkaz. Starosta obce ju uvidel len s priamym odkazom M18
  • § 30 tvrdil, že zbor nemá záznamy o kontrole ADP, aj keď ich poctivo zapisoval — tabuľka pribudla, ale prehľad povinnej dokumentácie mal počet natvrdo na nule M19
  • Uzávierka prihlasovania bola nápis, ktorý nič neznamenal — akcia hlásila „po termíne“ a zápis pustila. Po uzávierke sa člen sám neprihlási, odhlásiť sa môže vždy a správcu neviaže M12
  • Notifikácie sa nedali overiť — na „mne nič neprišlo“ sa dalo odpovedať len hľadaním v logu servera. Pribudol denník odoslaných správ (kto, komu, kedy, čím, s akým výsledkom) a pravdivý prehľad kanálov M17
  • Import techniky vie aktualizovať, nielen zakladať — a prázdna bunka znamená „neuvedené“, nie „vymazať“, takže tabuľka s tromi stĺpcami nezmaže cisterne normu spotreby M04
  • Vodičské oprávnenia dostali obrazovku a interval zdravotných prehliadok sa konečne číta z nastavenia zboru — appka ho dovtedy vedela zapísať a nikdy neprečítala M03
  • Šesť zmien schémy, ktoré museli čakať — záznam o kontrole ADP, časová zóna zboru, interval prehliadok, ustanovenie preventivára, verzovanie skenov dokladov a vlastná tabuľka oznámení. Nahradený sken dokladu sa už nemaže: nová poistka nezruší platnosť starej za obdobie, na ktoré sa vzťahovala schéma
  • Zóna stroja zmizla z celého backendu — 88 miest v 52 súboroch. Kontajner beží v UTC, takže „dnes“ zo zóny stroja znamenalo, že medzi 22:00 a polnocou appka tvrdila, že je ešte včera oprava
  • TODO prestalo byť archív — sekcie „čo ostáva otvorené“ boli snímky, ktoré nikto nepreriedil; zo vzorky deviatich bodov bolo šesť dávno hotových. Nahradené jedným overeným zoznamom upratanie
  • Testov 1661 → 1960. Moduly hotové 8 → 10, v základe 4 → 3 kvalita
29. 7. 2026 — ráno
  • Nočné úlohy bežali v ostrej prevádzke o dve hodiny neskôr — a nikto to nemohol odhaliť na vývojárskom stroji, lebo tam zóna sedí. Server beží v UTC, takže denný prehľad chodil o 08:00 namiesto 06:00 a nočné mazanie starých údajov bežalo o pol šiestej ráno. Rovnaká príčina posielala hasičom pri poplachu SMS s časom o dve hodiny menším, než majú na hodinkách — hoci poznámka priamo nad tým riadkom hovorila, že si ho porovnávajú s hodinkami oprava
  • Kanistre a mesiace sa počítali podľa UTC — jazda z 1. júna o pol jednej v noci spadla do mája, takže vozidlo nad 7,5 t sa nepravdivo označilo za vozidlo bez kondičnej jazdy. Kiosk zapisoval nočné ohlásenia do knihy s včerajším dátumom, zásah o 05:30 vychádzal v štatistike ako nočný, z kalendára vypadávali výjazdy z prvých dvoch hodín dňa a tlačivá odovzdávané orgánu — vrátane správy o zásahu pre KOS — tlačili UTC čas oprava
  • Príprava sa na štyroch miestach počítala tromi rôznymi spôsobmi — stránka hlásila, že členovi chýba 55,5 h, iný pohľad 37,5 h a denný prehľad hodinovú dotáciu nesledoval vôbec. Správny je výcvikový rok (1. 9. – 31. 8.) podľa § 17 ods. 2 a 5; pôvodné číslo za kalendárny rok sa nemazalo, ale je označené, aby sa nedalo zameniť. Nesplnená príprava sa pri prelome roka ticho nevynuluje — uzavretý rok sa dva mesiace dopovie vedľa nového M03/M05
  • Má zbor pokope povinnú dokumentáciu? — appka prejde § 30 vyhlášky položku po položke a povie, čo vie doložiť z evidencií, čo len čiastočne a čo vôbec. Kľúčové rozlíšenie: ods. 2 vymenúva dokumentáciu hasičskej jednotky ako takej, ale pre DHZO z nej ods. 4 vyberá užší výsek — a práve ten sa pri kontrole žiada. Vytlačiteľný kontrolný list na kontrolu z OR HaZZ M19
  • Kniha PHM sa dala viesť tak, že ju pred kontrolou neobhájiš — výdaj bez väzby na techniku, tankovanie bez ceny a dokladu, zápis, po ktorom je sklad v mínuse, duplicitné doklady z opakovaného importu. Kontrola ich vypíše aj s tým, čo s nimi; nič neprepisuje. V reálnej knihe pilotu hneď našla dve veci: výdaj benzínu, ktorý stlačil sklad na −5 l, a príjem 160 l nafty bez ceny a bez čísla dokladu M09
  • „Strojník" bola doteraz len zaškrtnutá kolónka — a pritom na nej stálo upozornenie pri nasadení vozidla aj výpočet akcieschopnosti. Teraz sa vyhodnocujú tri podmienky z prílohy 3: oprávnenie, zdravotná spôsobilosť a najmenej dvojročná prax. „Nedá sa posúdiť" nie je „nespĺňa" — z chýbajúceho údaja appka nerobí porušenie predpisu, ale ani ho neprehltne. Pri zásahu nikdy nič neblokuje M06/M05
  • Člen sa nedozvedel, že sa akcia zrušila alebo presunula — dozvedel sa to tak, že prišiel k zbrojnici. Oznámenie chodí tým, čo na termín reagovali, píše čo presne sa zmenilo (pôvodný a nový údaj), nikdy spätne a za presunutú sériu ide jedna správa, nie štyri M12
  • Na KOS mohlo odísť neúplné tlačivo — bez časov, bez veliteľa zásahu, bez opisu. Appka teraz pred odoslaním povie, čo chýba a kam kliknúť; vedomé odoslanie neúplnej správy je možné, ale len s dôvodom, ktorý zostane zaznamenaný. Časy sa nikdy nedopĺňajú za používateľa M07
  • Prehľad pripravenosti zboru — čo všetko treba nastaviť, aby appka robila to, čo sľubuje, rozdelené na „blokuje prevádzku" a „odporúčané", s dôsledkom pri každej položke. Nenastavené veci sa dovtedy prejavili až tichým nefungovaním M01
  • Prázdne SMTP zboru odrezalo zbor od systémového servera — prihlásenie fungovalo, len maily prestali chodiť a nikto sa to nedozvedel oprava
  • Portál konečne neukazuje ani jeden vymyslený údaj — z hlavičky zmizli falošné správy, kontakty a skratky zo šablóny; navigácia ide z reálneho zdroja. Zmazaných 10 476 riadkov a deväť nepoužívaných rámov upratanie
  • Prístupnosť obrazoviek Technika a Členovia — tabuľky s popisom a hlavičkami, chyby oznámené čítačke, dôvod pri zamknutom tlačidle, filtre ako prepínače (nie iba farba). Meranie odhalilo, že sekundárny text nespĺňal kontrast na siedmich z ôsmich obrazoviek — bolo to vo farbe motívu, nie v komponentoch; po oprave 0 nálezov UX
  • 69 nových integračných testov cez celý HTTP zásobník: výjazdový reťazec od založenia po uzavretie, akcie, zvolávanie, výpožičky a päť tlačív. Testov je dokopy 1661 kvalita
  • README a DEPLOY zosúladené so skutočnosťou — vrátane kapitoly „čo ešte chýba pre ostré nasadenie" a zistenia, že premenné zapísané do konfiguračného súboru sa do API kontajnera vôbec nedostanú dokumentácia
29. 7. 2026 — noc
  • Zásoba PHM na stanici: appka to čítala presne naopak — vyhláška hovorí „…najmenej však 40 l nafty, 20 l benzínu z každého používaného druhu", čiže určuje dolnú hranicu, nie strop. Appka hlásila porušenie práve vtedy, keď mal zbor paliva dosť (pilot: 155 l nafty), a mlčala, keď bol sklad prázdny. Overené v oboch zneniach predpisu; opravený sklad PHM aj kanistre a čísla má odteraz jedna definícia, aby sa obe strany nemohli znova rozísť. Kanister bez zisteného stavu sa už neráta ako plný — pri strope bolo bezpečné nadhodnotiť, pri minime by to zakrylo prázdnu nádobu M09
  • Výmaz osobných údajov člena na žiadosť — anonymizácia namiesto mazania riadkov: zo správ o zásahu, knihy služby a vozového zošita meno nezmizne (to by bolo sfalšovanie dokladu s vlastnou dobou uchovávania), zmizne všetko, čo po odchode člena nemá čo držať — kontakt, adresa, dátum narodenia, miery, podpis vrátane súboru, zdravotné prehliadky, prihlasovací účet, PIN aj karta. Nezvratné, preto len správca a s prepísaním mena člena GDPR
  • Kontrola dýchacieho prístroja po použití — príloha č. 4 bod 8 žiada ošetrenie a kontrolu pred zaradením, po oprave, po každom použití alebo najmenej raz za pol roka, s písomným záznamom. Semafor teraz ukazuje, ktorý prístroj sa vrátil zo zásahu a ešte nebol skontrolovaný M20
  • Preventivár obce a jeho aktualizačná príprava — obec ho ustanoviť môže, appka teda nič neblokuje; ale bez potvrdenia o aktualizačnej príprave (1× za 5 rokov, najmenej 20 h) je osvedčenie zo zákona neplatné, a to už appka ustrážiť vie M19
  • Ročná uzávierka dotácie pre obec a DPO — paušál so sadzbou podľa kategórie appka vydá, pohyblivú zložku ukáže len v litroch a kilometroch a označí „na doplnenie": sadzbu na výjazd overenú nemáme a odhad by sa na papieri pre obec tváril ako nárok M25
  • Vývoj v čase namiesto jedného čísla — výjazdy, reakčné časy, účasť, km a PHM po mesiacoch a rokoch. Ťažisko je na tom, čo sa kresliť nesmie: krivka tvrdí viac než jedno číslo, takže nepodložený rad appka nenakreslí a napíše prečo (pilot má 3 výjazdy v jednom mesiaci — nekreslí sa nič) M16
  • Kto smie viesť zásahové vozidlo — dovtedy bol „strojník" len zaškrtnutá kolónka, hoci na nej stálo upozornenie pri nasadení aj výpočet akcieschopnosti. Teraz sa vyhodnocujú tri podmienky z prílohy 3: oprávnenie, zdravotná spôsobilosť a najmenej dvojročná prax. Skupina je nastavením zboru — vyhláška hovorí len „príslušná skupina" a tá závisí od techniky M03
  • Hromadná zmena stavu a zaradenia techniky — pred cvičením ide päť kusov naraz mimo pohotovosti a po návrate späť; klikanie po jednom znamenalo, že sa to buď nezaeviduje, alebo sa zabudne vrátiť. Vyradenie a stavy „v zásahu / požičané" hromadne nejdú zámerne M04
  • Moje termíny na kiosku — k počítaču sa člen dostane raz začas, okolo tabletu v garáži chodí každý týždeň. Čo komu prepadáva vidí po priložení karty; cudzie termíny sa na zdieľanom tablete vypýtať nedajú M10
  • Správa série opakujúcich sa akcií — zrušiť zvyšok, presunúť miesto či čas hromadne, ale výlučne do budúcnosti: už odvedená akcia má podpísanú prezenčnú listinu a spätný prepis by z dokladu urobil nepravdu M12
  • 50 integračných testov cez celý HTTP zásobník — vážne chyby posledných dní vznikali medzi vrstvami (endpoint bez prihlásenia, pád servera pri chybnom sedení, pád pri čase s iným posunom) a unit test ich nemal ako vidieť. Testov je dokopy 1300 kvalita
  • /health konečne hovorí pravdu — dovtedy vracal „ok" bez ohľadu na to, či appka vidí databázu, úložisko a plánovač; chýbajúca plánovaná úloha znamená, že digest ticho nechodí mesiace. Verejná odpoveď pritom neprezradí ani jeden hostiteľ či bucket. Do logov pribudlo číslo požiadavky, takže hlásenie sa dá spätne spojiť so zborom a používateľom prevádzka
  • Prístupnosť a ovládanie klávesnicou v ráme portálu — Fuse globálne vypínal viditeľný focus, takže sa portál nedal ovládať bez myši; vrátený, pribudol skip link a panel upozornení sa zavrie Escapom. Používateľské menu bolo po anglicky UX
  • Stránka 404 namiesto bielej obrazovky pri preklepe alebo starom odkaze z e-mailu; a zmazané zvyšky FUSE šablóny — 16 nepoužívaných mock modulov a 4,1 MB obrázkov, o ktoré sa zmenšil produkčný kontajner upratanie
  • Opravený build na serveri — nové integračné testy potrebujú databázu, ktorú build agent nemal, takže tri buildy po sebe padli. Pipeline si ju teraz naštartuje a po testoch odloží, bez dotknutia dát CI
  • Preverené, nie obídené: hlásenie, že sa v PDF zle vykresľuje znak „ĺ", sa nepotvrdilo — písmo ho má a v dokumente je správne; v bezpätkovom písme sa jednoducho podobá na „Í". Namiesto obchádzky bola zmazaná zavádzajúca poznámka v kóde M07
28. 7. 2026 — noc
  • Zdravotné prehliadky: periodicitu neurčuje žiadny predpis — dohľadané v plných textoch zákonov. Odkaz v 314/2001 § 37 vedie na predpisy, ktoré lehotu nikdy neurčovali a sú dávno zrušené; ani pre nositeľov dýchacej techniky prísnejší režim z vyhlášky nevyplýva. Appka preto **žiadny interval nevymýšľa** — ukazuje, čo vie doložiť, a interval si zbor určuje podľa posudku lekára M03
  • Opravené: prehliadka bez vyplnenej platnosti sa tvárila ako platná — akcieschopnosť ju brala ako splnenú, takže záznam spred rokov nikdy nevypršal a zbor sa javil spôsobilý M05
  • Začiatok výcvikového roka si nastavuje zbor (predvolene 1. september podľa § 17 ods. 2) — vyhodnotenie prípravy sa už neriadi napevno zadanou hodnotou M03
  • Doklady techniky medzi sledovanými termínmi — končiaca poistka alebo revízna správa sa objaví v kalendári, v zvončeku, na nástennej obrazovke, v dennom maile aj v tlačenom prehľade lehôt; doklad bez platnosti a doklad vyradenej techniky sa nehlásia M04/M05
  • Úprava dokladu bez znovunahrávania skenu — pri predĺžení poistky sa mení len údaj, súbor v úložisku zostáva nedotknutý M04
  • Týždenný súhrn počítal dlh dvakrát — mal vlastnú, chudobnejšiu definíciu nedokončeného výjazdu a otvorený checklist rátal ako samostatnú položku. Teraz používa tú istú definíciu ako stránka aj denný digest M05
  • Chýbajúci údaj v tokene už nekončí chybou servera — namiesto HTTP 500 s výpisom zásobníka a cestami zo servera príde zrozumiteľné „Neplatné sedenie" bezpečnosť
  • Zmazané zvyšky demo šablóny z prihlásenia — vrátane obrazovky, ktorej demo rozhranie vedelo vydať platne vyzerajúci prístup, a samoobslužnej registrácie, ktorá je v rozpore so zadaním bezpečnosť
  • Slovenské názvy typov udalostí majú jednu definíciu — dovtedy sedem kópií, ktoré sa pri novom type udalosti rozišli: dve by na papier pre orgán vytlačili technický identifikátor, štyri by ho ticho zlúčili s inou kategóriou upratanie
28. 7. 2026 — večer
  • Opravená chyba, ktorá zhadzovala zápisy — čas s iným než UTC posunom (alebo bez posunu) končil chybou servera pri zápise jazdy, založení výjazdu, nasadení techniky aj pri príjme SMS z brány. Okamih sa teraz zachová presne, nezrozumiteľný vstup vysvetlí po slovensky oprava
  • Prihlásenie konečne hovorí, čo sa stalo — chybová hláška sa predtým vôbec nestihla zobraziť (portál sa pri každom neúspechu sám obnovil). Pri dočasnom uzamknutí po hádaní hesiel je vidieť aj odpočet, ktorý prežije obnovenie stránky M02
  • Bezpečnostný audit celého API — preverených ~420 endpointov 51 controllerov. Nájdený a opravený endpoint bez prihlásenia (dal sa čítať kiosk tokenom z tabletu v zbrojnici a bez tokenu vracal výpis servera) a dve miesta, kde sa dal uložiť člen cudzieho zboru. Nové testy diery zachytia do budúcna bezpečnosť
  • Zdokonaľovacia príprava sa počíta za výcvikový rok (1. 9. – 31. 8.) podľa § 17 ods. 2 a 5 vyhlášky, nie za kalendárny rok. Rozdiel je 24 hodín na člena — appka ukazuje obe optiky, aby sa zmena dala vysvetliť M03
  • Nedokončené výjazdy v dennom digeste a na dashboarde — pripomína sa od 7. dňa a potom raz týždenne, aby sa upomienka nestala šumom; vypíše presne, čo ktorému výjazdu chýba M05/M06
  • Dokumenty techniky — technický preukaz, poistka, faktúra či revízna správa priamo pri vozidle namiesto šanónu v zbrojnici; doklad s platnosťou má countdown M04
  • Nové obrazovky použiteľné na telefóne — odstránené vodorovné skrolovanie na štyroch miestach, široké tabuľky majú ukotvený prvý stĺpec UX
  • Zjednotené CSV parsovanie oboch importov — pri porovnaní kópií sa našlo, že import tankovacích kariet čítal „28,5 l/100km" ako 28,51 upratanie
  • Heslo už nie je predvyplnené v prihlasovacom formulári mimo vývojového prostredia M02
28. 7. 2026 — ráno
  • Nástenná obrazovka pri poplachu — pri výjazde sa TV v zbrojnici prepne na červenú: beží čas od vyhlásenia, veľkým typ udalosti a adresa, dlaždice nasadenej techniky a menoslov „kto ide" vrátane reakcií zo zvolávania M13
  • SMS pri zvolávaní — poplach odíde po e-maile a pushi aj ako SMS, lebo telefón nemusí mať dáta ani appku; brána sa napája konfiguráciou, bez nej je kanál vypnutý M17/M23
  • Ochrana prihlásenia — hádanie hesiel sa spomaľuje a po opakovaných pokusoch uzamkne; kľúč je účet a IP, takže nikto cudzí nedokáže veliteľovi uzamknúť účet pred zásahom M02
  • Zriadenie prvého správcu nového zboru — dovtedy sa musel dopisovať priamo do databázy, čím bolo nasadenie druhého zboru zablokované M01/M02
  • Nedokončené výjazdy — prehľad, čo presne každému výjazdu chýba (časy, správa, veliteľ, jazda, checklist) a riadené uzavretie s povinným dôvodom; časy sa nikdy nedopĺňajú za vás M06
  • Technický dashboard strojnej služby — jedna obrazovka pre strojníka: fotky, stavy farebne, countdown lehôt a navrchu to, čo blokuje výjazd (nie abecedne) M13
  • Skutočná spotreba proti norme — porovnanie evidovaných litrov s normou vozidla; odchýlka odhalí poruchu, netesnosť aj chybne zapísané litre M09/M04
  • Import transakcií z tankovacej karty a import techniky z CSV — koniec prepisovania výpisov a Excelu po riadkoch; opakovaný import ten istý údaj nezdvojí M09/M04
  • Časy dojazdu a porovnanie rokov — výjazdový čas, dojazd a trvanie s priemerom, mediánom a najhorším prípadom; pri málo dátach appka priznáva, že tvrdenie nie je podložené M16
  • Týždenný súhrn pre veliteľa — v pondelok ráno prehľad uplynulého aj nadchádzajúceho týždňa a hlavne čo sa neurobilo: chýbajúce správy, nepreštartovaná technika, otvorené checklisty M05/M17
  • Kalendár v mesačnom zobrazení — mriežka na plánovanie, aby bolo vidieť, keď na jeden týždeň padnú tri veci naraz M12
  • História trasy vozidla — trasa dňa na mape so zastávkami, prejdenou dráhou a rýchlosťami; do vozového zošita sa zámerne nič nezapisuje (GPS meria dráhu, nie tachometer) M11
  • Prezenčná listina akcie v PDF — papier na podpisy pre školenie, cvičenie či brigádu, s výberom „len prihlásení / celý zbor" M12
  • Reporty pre OR HaZZ na vyžiadanie — zásahová činnosť a materiálno-technické vybavenie za zadané obdobie v PDF aj CSV M21
  • Hromadné pridelenie OOPP s prehľadom, komu čo chýba — a zápis ohlásenia priamo na kiosku, keď občan príde k dverám zbrojnice M03/M10
  • Spojovacia služba a číselníky dostali vlastnú stránku — dovtedy boli dostupné len cez API, resp. zastrčené v Nastaveniach M19/M06
  • Opravené pri integrácii: e-mailová služba logovala celé telo správy vrátane dočasných hesiel; prah upozornenia na lehoty bol po migrácii nulový, čiže ticho vypnuté hlásenie blížiacich sa lehôt; povinná štvorica OOPP mala tri samostatné definície bezpečnosť/dáta
27. 7. 2026
  • Dotykový kiosk v zbrojnici — tablet na stene: prihlásenie PIN-om alebo RFID kartou, výdaj a príjem PHM, preštartovanie so zápisom závady, odklik kontrol; sedenie sa samo ukončí po nečinnosti M10
  • PIN a RFID identifikácia členov — per zbor, PIN len ako hash, karta unikátna v zbore; kiosk sedenie je odizolované od portálu M02
  • Live poloha techniky — príjem z GPS jednotiek cez token brány, mapa so stavom vozidiel (jazdí/stojí/mlčí), história trasy, PHM a voda v % M11
  • Cestná vzdialenosť výjazdu — vzdialenosť po ceste a čas dojazdu z routing služby popri vzdušnej čiare M06
  • Pripomienky pred akciou — e-mail členom, ktorí ešte nereagovali, a súhrn vyhlasovateľovi s varovaním pri nedostatku ľudí M12/M17
  • Počasie s hasičskými výstrahami — vietor, sucho, mráz a zrážky na dashboarde aj TV obrazovke M13
  • Tabový detail člena a ročný výkaz do Excelu; pozvánka do portálu e-mailom a archivácia zboru namiesto mazania M03/M21/M02/M01
  • Dokumentácia obce o ochrane pred požiarmi — appka vyhodnotí šesť povinných okruhov podľa vyhlášky a ukáže, čo vie doložiť a kde sú diery — vrátane vytlačiteľného kontrolného listu M19
  • Portál použiteľný na telefóne — lišty filtrov a tlačidiel sa zalamujú, stránky sa zmestia na 375 px; overené na 10 obrazovkách UX
  • Bezpečnostné dotiahnutie kiosku — zámok PIN-u po piatich pokusoch, UID kariet vidí len správca, archivovaný zbor je uzavretý M10/M02/M01
  • Oprava straty nastavení — čiastočná úprava zboru už nevynuluje neposlané polia (PATCH); údaje DNV obnovené M01
  • Akcieschopnosť jednotky — appka podľa kategórie zboru vyhodnotí, či zbor spĺňa podmienky na výjazd (ľudia, príprava, prehliadky, OOPP, technika v pohotovosti, družstvo 1+3) a pri znížení pripraví oznámenie pre operačné stredisko KR HaZZ M05
  • Zvolávanie členov — náhrada messengerovej skupiny pri poplachu: veliteľ vyhlási zvolávanie, členom príde e-mail a odklikávajú „idem / neskôr / nejdem" aj s časom príchodu M23
  • Velenie zásahu — obrazovka pre veliteľa: kto je spôsobilý, kto má akú odbornosť, čo berieme; upozorní na plavidlo bez VMP či vozidlo bez strojníka M06
  • Checklist po návrate — umytie, dotankovanie, voda, hadice, vozový zošit a správa o zásahu; zápis jazdy a výdaj PHM si appka doloží sama M06
  • Portál ako appka na telefóne — inštalácia na plochu (PWA) so skratkami na Zvolávanie a Moje termíny M22
  • Zabudnuté heslo — samoobslužný reset cez odkaz v e-maile, bez čakania na správcu M02
  • Audit prihlásení a poučenie o mlčanlivosti — kto a kedy sa prihlásil, potvrdenie poučenia o osobných údajoch pri prvom vstupe, nočné mazanie starých záznamov M02/GDPR
  • Prevádzkový denník vozidla v PDF podľa prílohy 5 a prílohová strana správy o zásahu so situačným náčrtom a fotkami M08/M07
  • Kanistre a zásoba PHM so strážením zásoby na stanici a vnútorná kontrolná činnosť — posledná chýbajúca položka povinnej dokumentácie M09/M19
  • Základná odborná príprava, Moja činnosť a fotogaléria techniky — kto smie zasahovať samostatne, čo člen za rok odrobil a ako vozidlo vyzerá M03/M04
  • Notifikácie na telefón — zvolávanie príde ako push aj keď portál nie je otvorený M17
  • Výpočet paušálu dotácie — sadzby podľa kategórie sú priamo vo vyhláške, appka ich už dopočíta aj so spotrebou PHM mimo katastra M25
  • Spojovacia služba — rádiostanice, staničný denník a kniha porúch; posledná chýbajúca časť povinnej dokumentácie M19
  • Hodiny zdokonaľovacej prípravy (6 h/mesiac) a objednaná lehota — vozidlo objednané na STK už nestraší v dennom prehľade M03/M05
  • Návrh jazdy z GPS, séria opakujúcich sa akcií a rebríček aktivity v PDF pre výročnú schôdzu M11/M12/M16
20. 7. 2026
  • Štatistika členskej základne — vekové a rodové zloženie, priemerný vek, funkcie + PDF export M03/M16
  • Profesionálna prihlasovacia stránka — odstránené FUSE demo (falošné avatary, social login, self-registrácia), plne po slovensky UX
  • Filtre v zoznamoch — kalendár (typ udalosti), technika (stav/kategória), členovia (funkcia + neaktívni), výjazdy (typ/rok) M04/M06/M12
  • Posledné prihlásenie člena a verzia aplikácie v pätičke M02/UX
  • Export dát zboru do JSON (prenositeľnosť/záloha, len správca) M01/GDPR
  • Sekcia Novinky na verejnej landing a zvonček upozornení doplnený o preštartovanie a plán údržby M18/M17
19. 7. 2026
  • Ročný plán údržby — plán po mesiacoch, väzba na knihu údržby, kalendár, watchdog, PDF M19
  • PPAH — protipožiarne asistenčné hliadky podľa vyhl. 121/2002 (limity osôb, checklist, PDF) M12
  • Ročný výkaz HJ — automaticky skladaný generátor s validáciami, CSV+PDF M21
  • Správa zborov + prístup pre členov — tenanty, dočasné heslá, zmena a reset hesla M01/M02
  • Rolovo-citlivá navigácia + route guardy — člen nevidí adminské moduly M01/M02
  • Osobný prehľad „Moje termíny" a TV/kiosk režim dashboardu M03/M13
  • Globálne vyhľadávanie naprieč členmi, technikou a výjazdmi UX
15. 7. 2026
  • Preštartovanie / funkčné skúšky techniky — konfigurovateľné intervaly, závada → poruchový stav M04
  • Tankovanie s bločkom — cena/dodávateľ/doklad + foto v MinIO, CSV knihy PHM M09
13. 7. 2026
  • Dokumentácia jednotky — odborná príprava, preventívne kontroly, kniha služby a ohlásení, dokumenty v MinIO M19
  • Oznamy/nástenka, in-app zvonček, bodovanie členov, prehľadová mapa výjazdov, podklady pre dotácie M12/M17/M16/M11/M25
9.–10. 7. 2026
  • Protiplynová služba ADP — prostriedky + výcviky nositeľov, kniha o výkone služby M20/M19
  • Akcie a podujatia s prihlasovaním členov + dashboard karta M12/M13
8. 7. 2026
  • Kalendár/agenda + .ics feed, výpožičky techniky, verejná landing, QR kódy/kiosk M12/M14/M18/M10
  • Reporty a PDF karty, ročné štatistiky, interaktívna mapa výjazdu M13/M06
7. 7. 2026
  • Výjazdový proces E2 — výjazdy, správa o zásahu (verné tlačivo), vozový zošit, žiadanka, Fireport SMS brána M06/M07/M08/M15
  • Evidencia výstroja a údržby techniky, MinIO fotodokumentácia, PostGIS vzdialenosť, deploy na QNAP + status page M03/M04
5.–6. 7. 2026
  • Základ projektu (E0) — skeleton, multitenancy, JWT auth, docker-compose, CI/CD M01/M02
  • Analýza legislatívy a podkladov (611/2006, 121/2002, 162/2006, IKPO, Fireport) → ZADANIE.md

Zdroj pravdy: ZADANIE.md · postup: TODO.md · repo: dev.azure.com/trista-sk/pyros · aktualizované 30. 7. 2026