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

  1. 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.
  2. 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).
  3. 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.
  4. 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 / PIMpodrobne 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
Skladcentrálny sklad s lokáciami (predajňa, sklad), príjem, výdaj, presun, inventúra, rezervácie pre Click & Collect, sériové čísla
Objednávkye-shop, B2B, telefón; stavy, vychystanie, výdaj na predajni, rozvoz s časovými oknami, kuriér
Ceny a zľavyB2B cenníky, akcie s platnosťou, kupóny, vouchery, lojalitné levely (klzné 12-mesačné okno), objemové zľavy
CRMjeden profil zákazníka naprieč e-shopom aj pokladnicou, história, súhlasy GDPR, segmenty, kampane
Predaj / pokladňasmeny, pokladničné doklady cez SORP/ORP API, hotovosť, väzba na sklad a CRM
Faktúryfaktúry, dobropisy, zálohy, export do Money, e-faktúra
Vyhľadávaniefulltext + fazety nad parametrami, „skladom teraz“
AI vrstvaextrakcia parametrov, popisy, vyhľadávanie vetou, RAG z manuálov, zhrnutia — 08-ai-a-mcp.md
MCP servercelý 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"]
ČoHeureka.skPricemania.sk
Produktový feedXML 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 častokaž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
Meraniekonverzný 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

VrstvaNávrhPrečo
AplikáciaNext.js (App Router) na Vercel — jeden monorepo pre e-shop, B2B, back-office, pokladnicu aj vodičajeden kód, jeden deploy, PWA v prehliadači
APIVercel Functions (Node.js, Fluid Compute)žiadny server na správu
DatabázaMongoDB 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ánovanieVercel Queues, Vercel Cronudalosti, exporty, notifikácie
SúboryVercel Blobobrázky tovaru, PDF doklady
VyhľadávanieAtlas Search (fulltext, fazety, preklepy) + Atlas Vector Search (význam), embeddingy Voyage AIfiltre aj význam nad tými istými dátami, bez ďalšej služby
AIClaude API (Anthropic; Haiku / Sonnet / Opus 5.5), Anthropic SDK, Vercel Workflowpodrobne v 08-ai-a-mcp.md
MCPMCP server v Next.js (/api/mcp, OAuth, role, audit)Claude nad celým systémom
UIApple 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)

  1. 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).
  2. 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.
  3. B2B portál + faktúry + Money export + e-faktúra.
  4. Rozvoz, kuriér do hodiny.
  5. Lojalita, CRM kampane, komunikačný kanál.