02 — Návrh riešenia a schéma komunikácie
Stav: návrh na diskusiu, revízia 30. 10. 2026. Body označené (overiť) treba potvrdiť s dodávateľom, bankou alebo daňovým poradcom pred implementáciou.
1. Princípy
- Jeden centrálny systém (jadro) je jediný zdroj pravdy pre tovar, sklad, ceny, zákazníkov a objednávky. E-shop, pokladnica, B2B portál, aplikácia vodiča aj back-office sú len klienti toho istého jadra. Tovar predaný na pokladni okamžite zmizne z e-shopu a naopak.
- Všetko v prehliadači. Žiadne natívne aplikácie — e-shop, pokladnica, back-office aj vodič sú webové aplikácie (PWA, mobile first, Apple HIG štýl).
- Všetko online v cloude. Žiadny lokálny server ani offline režim na predajni. Pri výpadku platí zákonný núdzový postup (paragóny) — pozri
03. - eKasu neprogramujeme sami. Evidenciu tržieb robí certifikovaná pokladnica (SORP v cloude alebo ORP s CHDÚ), ktorú len voláme cez API.
2. Celková schéma
flowchart TB
subgraph KLIENTI["Klienti — prehliadač (PWA, mobile first)"]
ESHOP["E-shop B2C"]
B2B["B2B portál<br/>školy, firmy"]
POS["Pokladnica<br/>iPad / tablet / PC v prehliadači"]
ADMIN["Back-office<br/>sklad, CRM, akcie"]
DRIVER["Vodič<br/>rozvoz v mobile"]
AIC["Claude a AI asistenti<br/>cez MCP"]
end
subgraph VERCEL["Jadro — Vercel (EÚ región)"]
API["API<br/>autentifikácia, role"]
CAT["Katalóg / PIM"]
INV["Sklad<br/>zásoby, rezervácie"]
OMS["Objednávky"]
PRICE["Ceny, zľavy,<br/>lojalita"]
CRM["CRM, komunikácia"]
SALE["Predaj / pokladňa<br/>smeny, doklady"]
BILL["Faktúry, dobropisy"]
PRINT["Tlačový server<br/>(CloudPRNT)"]
QUEUE["Fronta udalostí, cron"]
MCPS["MCP server<br/>nástroje, audit"]
AIL["AI vrstva<br/>extrakcia, vyhľadávanie, RAG"]
DB[("MongoDB Atlas<br/>Search + Vector Search")]
end
subgraph PREDAJNA["Predajňa — len zariadenia, žiadny server"]
PRN["Sieťová tlačiareň dokladov<br/>+ zásuvka"]
SCAN["Skener EAN / QR"]
TERM["Platobný terminál"]
end
subgraph EXT["Externé služby"]
SORP["Certifikovaná pokladnica<br/>SORP / ORP — API"]
EKASA["eKasa — Finančná správa SR"]
PGW["Comgate / 24pay"]
COUR["Kuriéri"]
MSG["E-mail, SMS, push"]
MONEY["Money — účtovníčka"]
EINV["E-faktúra B2B *(overiť)*"]
REG["Registre firiem (IČO)"]
CMP["Porovnávače cien<br/>Heureka, Pricemania"]
GW["Claude API<br/>Anthropic"]
VOY["Voyage AI<br/>embeddingy, cez Atlas"]
SRC["EPREL, Icecat,<br/>cenníky dodávateľov"]
end
ESHOP & B2B & POS & ADMIN & DRIVER --> API
SCAN -.->|"ako klávesnica"| POS
API --> CAT & INV & OMS & PRICE & CRM & SALE & BILL
CAT & INV & OMS & PRICE & CRM & SALE & BILL --> DB
OMS & INV & SALE & BILL --> QUEUE
SALE <-->|"doklad → UID"| SORP
SORP <--> EKASA
SALE --> PRINT
PRN -->|"HTTPS polling"| PRINT
SALE <-->|"cloud API terminálu *(overiť)*"| TERM
OMS <--> PGW
OMS <--> COUR
QUEUE --> MSG & MONEY
BILL --> EINV
CRM --> REG
CMP -->|"sťahuje XML feed"| CAT
AIC --> MCPS
MCPS --> API
CAT & CRM --> AIL
AIL <--> GW
DB <--> VOY
CAT <-->|"import parametrov"| SRC
Na predajni nie je žiadny počítač so službou — tlačiareň si doklady sama vyzdvihuje z cloudu (CloudPRNT / Server Direct Print), skener funguje ako klávesnica v prehliadači a terminál komunikuje cez cloud poskytovateľa.
3. Moduly jadra
| Modul | Čo rieši |
|---|---|
| Katalóg / PIM | podrobne v 07-katalog.md; kategórie → druh → prevedenie; sady parametrov podľa druhu (typované: číslo + jednotka, výber, áno/nie), obrázky, EAN, energetický štítok, záruky, porovnanie |
| Sklad | centrálny sklad s lokáciami (predajňa, sklad), príjem, výdaj, presun, inventúra, rezervácie pre Click & Collect, sériové čísla |
| Objednávky | e-shop, B2B, telefón; stavy, vychystanie, výdaj na predajni, rozvoz s časovými oknami, kuriér |
| Ceny a zľavy | B2B cenníky, akcie s platnosťou, kupóny, vouchery, lojalitné levely (klzné 12-mesačné okno), objemové zľavy |
| CRM | jeden profil zákazníka naprieč e-shopom aj pokladnicou, história, súhlasy GDPR, segmenty, kampane |
| Predaj / pokladňa | smeny, pokladničné doklady cez SORP/ORP API, hotovosť, väzba na sklad a CRM |
| Faktúry | faktúry, dobropisy, zálohy, export do Money, e-faktúra |
| Vyhľadávanie | fulltext + fazety nad parametrami, „skladom teraz“ |
| AI vrstva | extrakcia parametrov, popisy, vyhľadávanie vetou, RAG z manuálov, zhrnutia — 08-ai-a-mcp.md |
| MCP server | celý systém pre Claude a AI asistentov: plnenie katalógu, sklad, tržby, pohyby, výkazy; zápis len ako návrh na schválenie |
| Exporty (feedy) | XML feedy pre Heureka.sk a Pricemania.sk z katalógu, skladu a cien; mapovanie kategórií, výber tovaru, meranie objednávok z porovnávačov |
4. Kľúčové toky
4.1 Click & Collect (ROPO)
sequenceDiagram
autonumber
actor Z as Zákazník
participant E as E-shop
participant C as Jadro (Vercel)
participant P as Pokladnica (prehliadač)
participant K as SORP → eKasa
Z->>E: rezervuje tovar (platba online alebo na predajni)
E->>C: objednávka
C->>C: rezervácia zásoby
C-->>P: úloha „vychystať“
P->>C: vychystané
C-->>Z: SMS/e-mail: „Pripravené, kód 4821, QR“
Z->>P: príde, ukáže QR
P->>C: načítaj objednávku
alt platí na predajni
C->>K: pokladničný doklad
K-->>C: UID
else zaplatené online
C->>C: len výdaj (doklad eKasa? *(overiť)*)
end
C->>C: vydané, odpis zo skladu
Note over P: ponuka doplnkového tovaru pri výdaji
4.2 Rozvoz vlastným autom
Objednávka → časové okno → vodič v mobilnom prehliadači (zastávky, navigácia, podpis, foto). Ak vodič inkasuje, môže vystaviť doklad cez tú istú SORP v mobile — pri cloudovej pokladnici netreba ďalšie zariadenie. Na štart navrhujem len platbu vopred / na faktúru (R4).
4.3 Udalosti
Každá zmena (objednávka, výdaj, platba, doklad) vytvorí udalosť vo fronte. Na ňu reagujú notifikácie, export do Money, vyhľadávanie, prepočet lojality. Výpadok jednej integrácie nezastaví predaj.
4.4 Porovnávače cien (Heureka, Pricemania)
Porovnávač si v pravidelnom intervale sám stiahne XML súbor z adresy e-shopu (napr. dnesdoma.sk/feed/heureka.xml). Jadro feed pregeneruje cez cron a uloží ho ako hotový súbor, takže sťahovanie nezaťaží databázu.
flowchart TB
CAT["Katalóg<br/>názov, popis, parametre, EAN, obrázky"] --> GEN
INV["Sklad<br/>skladom / do x dní"] --> GEN
PRICE["Ceny a akcie<br/>cena s DPH"] --> GEN
MAP["Back-office<br/>mapovanie kategórií,<br/>čo neexportovať"] --> GEN
GEN["Generovanie feedov<br/>Vercel Cron"] --> BLOB[("Vercel Blob<br/>heureka.xml, pricemania.xml")]
BLOB -->|"stiahnutie"| HEU["Heureka.sk"]
BLOB -->|"stiahnutie"| PM["Pricemania.sk"]
HEU & PM -->|"preklik s UTM"| ESHOP["E-shop → objednávka<br/>so zdrojom"]
| Čo | Heureka.sk | Pricemania.sk |
|---|---|---|
| Produktový feed | XML SHOPITEM: ID, názov, popis, URL, obrázky, cena s DPH, EAN, výrobca, kategória v strome Heureky, parametre (PARAM), dostupnosť (DELIVERY_DATE), doprava (DELIVERY) | XML podľa špecifikácie Pricemanie: ID, názov, popis, URL, obrázok, cena s DPH, EAN, výrobca, kategória, dostupnosť, doprava (overiť aktuálnu špecifikáciu) |
| Ako často | každú hodinu; ceny pri akcii hneď | každú hodinu |
| Dostupnosť | samostatný dostupnostný feed (zásoba, osobný odber na predajni) — častejšie, napr. každých 15 min (overiť) | v produktovom feede |
| Meranie | konverzný kód Heureky + UTM; voliteľne Overené zákazníkmi (dotazník po nákupe) | UTM, konverzný kód ak ho ponúka (overiť) |
Pravidlá exportu:
- do feedu ide len tovar s cenou, obrázkom, EAN a viditeľný v e-shope B2C;
- dostupnosť sa berie zo skladu po odčítaní rezervácií — rovnaké číslo ako na e-shope;
- cena vo feede = cena na stránke produktu (inak porovnávač tovar vyradí);
- energetická trieda a odkaz na štítok idú ako parameter (overiť požiadavky porovnávačov);
- v back-office sa dá vylúčiť kategória, značka alebo konkrétny produkt;
- objednávka si pamätá zdroj (Heureka / Pricemania / priamo), v prehľade sa dajú porovnať tržby a náklady na preklik.
Rovnakým mechanizmom sa dá neskôr pridať aj Google Merchant Center.
5. Navrhované technológie
| Vrstva | Návrh | Prečo |
|---|---|---|
| Aplikácia | Next.js (App Router) na Vercel — jeden monorepo pre e-shop, B2B, back-office, pokladnicu aj vodiča | jeden kód, jeden deploy, PWA v prehliadači |
| API | Vercel Functions (Node.js, Fluid Compute) | žiadny server na správu |
| Databáza | MongoDB Atlas (EÚ región, napr. Frankfurt) | dokumenty sedia na produkty s rôznymi parametrami; transakcie pre sklad; Search a Vector Search v tej istej databáze |
| Fronta, plánovanie | Vercel Queues, Vercel Cron | udalosti, exporty, notifikácie |
| Súbory | Vercel Blob | obrázky tovaru, PDF doklady |
| Vyhľadávanie | Atlas Search (fulltext, fazety, preklepy) + Atlas Vector Search (význam), embeddingy Voyage AI | filtre aj význam nad tými istými dátami, bez ďalšej služby |
| AI | Claude API (Anthropic; Haiku / Sonnet / Opus 5.5), Anthropic SDK, Vercel Workflow | podrobne v 08-ai-a-mcp.md |
| MCP | MCP server v Next.js (/api/mcp, OAuth, role, audit) | Claude nad celým systémom |
| UI | Apple HIG štýl v prehliadači (SF Pro / systémové písmo, veľké dotykové plochy) | mobile first |
Alternatíva: hotové jadro Medusa v2 (open-source e-commerce). Beží ako dlhodobý Node server, takže by potrebovalo hosting mimo Vercel — pri požiadavke „všetko na Vercel“ navrhujem vlastné jadro v Next.js.
6. Etapy (návrh)
- Jadro + sklad + pokladnica — nahradí MOPWIN/KASAWIN, migrácia kariet tovaru a zásob; katalóg s parametrami (
07), MCP na čítanie a ranné zhrnutie (08). - E-shop B2C + Click & Collect — ROPO, rezervácie, notifikácie, feedy pre Heureka.sk a Pricemania.sk; AI plnenie katalógu a vyhľadávanie vetou.
- B2B portál + faktúry + Money export + e-faktúra.
- Rozvoz, kuriér do hodiny.
- Lojalita, CRM kampane, komunikačný kanál.