Vitajte v dokumentácii pre ASOL HoReCa Hub – komunikačné rozhranie, ktoré spája vaše systémy s partnermi v oblasti hotelov, reštaurácií a kaviarní (HoReCa). Aplikácia poskytuje REST API pre tretie strany, administračné webové rozhranie a uchováva všetky dáta v lokálnej databáze.
ASOL HoReCa Hub slúži ako brána medzi externými partnermi a vašimi internými systémami. Umožňuje:
| Oblasť | Použité |
|---|---|
| Runtime | JDK 25, Spring Boot 4.0.7 (Spring Framework 7) |
| REST + dokumentácia | spring-boot-starter-web, springdoc-openapi 3.0.3 (Swagger UI) |
| Šablóny | Thymeleaf |
| Frontend (WebJars) | bootstrap 5.3.8, jquery 4.0.0, chart.js 4.5.1 + webjars-locator-lite |
| Databáza | H2 (súborová, ./data/horecahub) + Spring Data JPA / Hibernate |
| Migrácie schémy | Flyway |
| Bezpečnosť | Spring Security |
| Testy | JUnit 5, Mockito, Spring Test, spring-security-test |
Tu je kompletný zoznam všetkých dostupných stránok a rozhraní:
| Adresa | Popis | Kto má prístup |
|---|---|---|
/ |
Úvodná informačná stránka | všetci |
/admin |
Administračný dashboard | prihlásený ADMIN / USER |
/admin/users |
Správa používateľov (vytvorenie, mazanie) | iba ADMIN |
/admin/api-access |
Evidencia a prideľovanie API prístupov | iba ADMIN |
/admin/target-systems |
Evidencia cieľových systémov (backendov) | iba ADMIN |
/admin/monitoring |
Zoznam volaní API a ich detail | iba ADMIN |
/admin/monitoring/stats |
Štatistiky a grafy komunikácie | iba ADMIN |
/admin/monitoring/topology |
Vizuálna mapa prepojení (topológia) | iba ADMIN |
/admin/account/password |
Zmena vlastného hesla | prihlásený ADMIN / USER |
/login |
Prihlasovacia stránka | všetci |
/swagger-ui.html |
Swagger UI – interaktívna API dokumentácia | všetci |
/v3/api-docs |
OpenAPI definícia (strojovo čitateľná) | všetci |
Úvodná stránka administrácie (/admin) zobrazuje prehľad celého systému na jednom mieste.
Administrátor vidí:
Bežný používateľ (rola USER) vidí uvítací panel s odkazmi na zmenu hesla a API dokumentáciu. Agregované štatistiky sú dostupné iba administrátorovi.
Aplikácia používa súborovú databázu H2, ktorá sa ukladá do priečinka data/ (jdbc:h2:file:./data/horecahub). Priečinok sa pri štarte automaticky vytvorí, ak neexistuje.
Ak potrebujete uložiť dáta na iné miesto, spustite aplikáciu s parametrom:
java -jar target/asol-horeca-hub-26.3.1.jar --app.data-dir=/iny/adresar
Štruktúru databázy spravuje nástroj Flyway. To znamená, že databázu nikdy neupravujte ručne – každú zmenu pridajte ako nový migračný skript do priečinka src/main/resources/db/migration.
Technická poznámka: Flyway je jediný vlastník schémy. Hibernate je nastavený na
validate– teda iba overuje, že model sedí s databázou, nevytvára ani nemení tabuľky.
Ako pomenovávať migračné skripty:
V1__init.sql (už existuje)V2__popis.sql, V3__popis.sql, ...💡 Tip: Pri štarte sa automaticky vytvorí tabuľka
flyway_schema_history, kde Flyway sleduje, ktoré migrácie už boli spustené.
Po prvom spustení existuje jeden predvolený účet:
Používateľ: admin
Heslo: admin
⚠️ Dôležité: Po prvom prihlásení si heslo ihneď zmeňte na
/admin/account/password.
| Rola | Čo môže robiť |
|---|---|
| ADMIN | Správa používateľov + celá administrácia |
| USER | Prihlásenie do /admin a zmena vlastného hesla |
/admin/users/new zadá heslo, prípadne ho vygeneruje tlačidlom „Generovať".Technická poznámka: Heslá sú uložené v databáze (tabuľka
admin_user) a hashované algoritmom Argon2.
Prístup k publikovaným REST API (/api/...) sa prideľuje a spravuje v administrácii na /admin/api-access. Každý prístup definuje spôsob prihlásenia, na ktoré API platí, tajomstvo (kľúč alebo heslo) a či je aktívny.
| Typ | Ako partner posiela požiadavku |
|---|---|
| Basic auth | Authorization: Basic <zakódované prihlasovacie údaje> |
| Bearer token | Authorization: Bearer <api-kľúč> |
| X-API-Key | Hlavička X-API-Key: <api-kľúč> |
| Custom header | Vlastná hlavička s názvom, ktorý si zvolí administrátor |
401 Unauthorized.V Swagger UI (/swagger-ui.html) sú všetky schémy dostupné cez tlačidlo Authorize. Partner tak môže API vyskúšať priamo v prehliadači pomocou svojich pridelených prístupových údajov.
Technická poznámka: Tajomstvá sa porovnávajú bezpečne v konštantnom čase. Pre typ Custom header sa v OpenAPI vygeneruje samostatná schéma pre každý skutočne nakonfigurovaný názov hlavičky – partner v dialógu vidí presne tú hlavičku, ktorú mu administrátor pridelil.
Každé volanie API je v konečnom dôsledku smerované na niektorý backend systém. Tieto systémy sa evidujú v administrácii na /admin/target-systems.
Cieľový systém je backend (napr. legacy aplikačný server BlueGastro / dlappserver), na ktorý sa volanie preposiela. Pre každý systém zadáte parametre pripojenia: host, port, názov aplikácie, prefix klienta a či je systém aktívny.
Každému API prístupu môžete priradiť konkrétny cieľový systém. Pri volaní /api/... sa podľa overeného prístupu automaticky vyberie správny backend.
application.yml.Technická poznámka: Smerovanie zabezpečuje
RoutingBlueGastroBackendClient. Ten pri každom volaní zistí cieľový systém z autentifikačného kontextu (TargetSystemContext) a deleguje na príslušného klienta vytváranéhoBlueGastroBackendClientFactory. Klienti sa cachujú podľa parametrov pripojenia; pri zmene systému v admin UI sa pri ďalšom volaní automaticky vytvorí nové spojenie.
Každé volanie publikovaných REST API sa automaticky zaznamenáva. Záznamy nájdete v administrácii v sekcii Monitoring.
Pre každé volanie sa eviduje:
1. Komunikácia API (/admin/monitoring)
Zoznam všetkých volaní s možnosťou vyhľadávania, zoradenia a stránkovania. Detail každého záznamu vrátane úplných parametrov a tiel je dostupný po kliknutí.
2. Štatistiky (/admin/monitoring/stats)
Grafy a KPI karty nad zvoleným obdobím (7 / 14 / 30 / 90 dní):
3. Infraštruktúra – topológia (/admin/monitoring/topology)
Vizuálna mapa prepojení v troch vrstvách: API klienti → brána ASOL HoReCa Hub → cieľové systémy. Šípky zobrazujú toky dát a ich objem za zvolené obdobie. Farby uzlov rozlišujú aktívne, nesmerované a vypnuté prepojenia.
Každý backend uzol má tlačidlo Overiť, ktoré okamžite skontroluje dostupnosť daného systému cez sieť:
Technická poznámka: Záznamy sa ukladajú asynchrónne cez dedikovaný vláknový pool, takže monitoring nespomaľuje obsluhu volaní. Pri zahltení frontu sa záznam zahodí (zaloguje) namiesto blokovania volania.
Aby databáza nerástla bez obmedzenia, záznamy staršie ako nastavený počet dní sa automaticky mažú. Predvolene sa mažú záznamy staršie ako 90 dní, úloha beží každú noc o 03:30.
Technická poznámka: Mazanie prebieha dávkovo (po blokoch), takže ani prvý beh nad veľkým objemom dát neblokuje databázu.
Správanie monitoringu môžete upraviť v súbore application.yml:
monitoring:
enabled: true # zapnutie / vypnutie monitoringu
capture-request-body: true # zaznamenávať telo požiadavky?
capture-response-body: true # zaznamenávať telo odpovede?
max-payload-length: 16384 # max. dĺžka zaznamenaného tela (počet znakov)
async:
core-pool-size: 1
max-pool-size: 2
queue-capacity: 10000
retention:
enabled: true # automatické mazanie starých záznamov
max-age-days: 90 # záznamy staršie ako 90 dní sa zmažú
cron: "0 30 3 * * *" # kedy beží mazanie (denne o 03:30)
batch-size: 5000 # počet riadkov zmazaných v jednej transakcii
health:
connect-timeout-ms: 2000 # časový limit TCP kontroly dostupnosti (ms)
degraded-threshold-ms: 1000 # nad touto hodnotou sa spojenie považuje za „pomalé"
Predpoklad: Na spustenie je potrebný JDK 25 (
JAVA_HOMEmusí smerovať na JDK 25).
Štandardné spustenie:
java -jar target/asol-horeca-hub-26.3.1.jar
Spustenie s vlastným priečinkom pre dáta:
java -jar target/asol-horeca-hub-26.3.1.jar --app.data-dir=/iny/adresar
Po spustení je administrácia dostupná na adrese http://localhost:8080/admin a Swagger UI na http://localhost:8080/swagger-ui.html.