ALBI B2B · interní zadání ← Rozcestník · verze 1.0 · 25. 9. 2026 · k revizi
F03 · fáze 1 · nové

Nástěnka po přihlášení - místo obecné homepage přehled pro odběratele

Přihlášený zákazník uvidí na úvodní stránce, co ho zajímá: faktury po splatnosti, zásilky na cestě, poslední objednávku, produkty, které objednává pravidelně, naposledy zobrazené a novinky ve svém sortimentu. Každý blok je samostatný dotaz. Skládá se z jiných funkcí, sama o sobě přidává tři endpointy.

Obálka backendu + SFX FrontAPI: 3 nové endpointy, 4 existující Administrace: beze změny PBS 121587 Autor: Hana Ortmannová
Co se dělá

B2B web je celý za přihlášením, takže homepage jako u B2C nemá smysl. Nástěnka odpovídá na otázky, se kterými odběratel přichází: dlužím něco, kde je zboží, co jsem objednával, co mám doobjednat. Stará B2B nástěnka ukazuje jen počty objednávek, zásilek a faktur.

Kam patří. Obálka: tři endpointy nástěnky v obálce backendu, nástěnka ze sedmi bloků v obálce SFX. Co nástěnka ukazuje, je per klient, proto jádro NE. Rozhodl produkt PragueBest. Jádro: doklady a zásilky (D1, D2 v rozdělení prací) a bloky z F01, F05, F06 se použijí tak, jak jsou.

Otevřené otázky

K1 mění rozsah bloku doporučení, ostatní neblokují. Blok se dá dodat později, nástěnka bez něj funguje.

Klient

Rozhoduje ALBI

#Otázka a náš návrh
K1Doporučení z BigData v B2B: mikroslužba umí doporučit jen podle produktu nebo kategorie, ne podle zákazníka. Kalkulace má položku BigData v tvorbě e‑shopu. Návrh pro fázi 1: na nástěnce blok „Novinky ve vašem sortimentu" bez BigData, pásy BigData jen na detailu produktu a v košíku jako u B2C. Chce ALBI investovat do úpravy mikroslužby, aby uměla „pro vás"? (P3)
K2Blok „Objednáváte pravidelně": z jakého období počítat? Návrh: posledních 12 měsíců, řazeno podle počtu objednávek, ve kterých produkt byl, max. 8 produktů.
K3Faktury po splatnosti vidí i podúčet? Dnes je vidí celý uzel firmy. Návrh: počet ano (může blokovat objednávání), detail jen hlavní účet.
Vývojář

Rozhoduje vývoj

#Otázka
D1Faktury: FrontAPI endpoint dokumentů čte tabulku documents, kterou u ALBI nikdo neplní. Splatnost a stav jsou v orders_documents ze synchronizace AlbiLine. Navrhujeme nový endpoint nad orders_documents, ne most do documents. Souhlas?
D2Seznam objednávek ve FrontAPI nemá parametr řazení. Pro „poslední objednávku" je potřeba ověřit výchozí pořadí, nebo přidat sort.
D3„Objednáváte pravidelně" agreguje položky objednávek uzlu za 12 měsíců. U velkých odběratelů jsou to tisíce řádků. Počítat na dotaz s cache, nebo denně do pomocné tabulky?
D4Souhrnný endpoint s počty volá čtyři dotazy. Stačí jeden endpoint, nebo raději čtyři malé, ať se blok nezdrží? Navrhujeme jeden pro počty, samostatné pro seznamy.

Shrnutí

Bloky nástěnky

Pořadí shora dolů. Sloupec Zdroj říká, odkud data přijdou a co se pro to musí postavit.

#BlokCo ukazujeZdroj datStav
1Hlavička účtuOslovení, firma, aktivní doručovací adresa, název ceníku, role (hlavní účet / podúčet).GET /api-users/users/auth + adresy. Role a uzel firmy dnes FrontAPI nevydává → do souhrnu (blok 2).rozšířit
2Tři číslaFaktury po splatnosti (počet, s částkou), zásilky na cestě (počet), poslední objednávka (číslo, částka, datum).Nový GET /api-b2b/dashboard/summary nad orders_documents a orders.nový
3Upozornění na účtuPruh, když je účet v AlbiLine označený jako špatný plátce nebo blokovaný. Text: objednávat nejde, ozvěte se zástupci.Příznaky uzlu ze synchronizace (is_bad_payer, is_blocked) → součást souhrnu.v souhrnu
4Objednáváte pravidelněAž 8 produktů, které se nejčastěji opakují v objednávkách za 12 měsíců, s posledním objednaným množstvím. Tlačítko „Doobjednat vše" naplní košík.Nový GET /api-b2b/frequently-ordered. Naplnění košíku přes endpoint z F01 s tělem items[].nový
5Naposledy zobrazenéAž 8 karet.F05, existující endpoint.existuje
6OblíbenéAž 4 karty + odkaz na celý seznam a na sledované kategorie.F06, nový endpoint tam.F06
7Novinky ve vašem sortimentuAž 8 produktů z povoleného sortimentu zákazníka, seřazených od nejnovějšího.Existující výpis produktů s řazením podle data přidání. Zavřený katalog aplikuje jádro.existuje

Co záměrně chybí: pásy BigData („mohlo by se vám líbit", „trendy"). Mikroslužba vrací produkty podle produktu nebo kategorie, ne podle zákazníka, a obálka albi.eu na ni není napojená. Na nástěnce by pás ukazoval totéž všem. Doporučení na detailu produktu a v košíku jsou samostatná položka kalkulace, ne tato funkce.

Workflow

Co se ukládá

Kroky

  1. Zákazník se přihlásí nebo otevře kořen webu s platným přihlášením. SFX vykreslí kostru nástěnky se sedmi bloky ve stavu načítání.
  2. SFX spustí dotazy na bloky souběžně. Hlavička a tři čísla z jednoho souhrnného volání, ostatní bloky každý svým voláním.
    • Blok selže: zobrazí se jeho nadpis a věta „Teď se nepodařilo načíst" s tlačítkem Zkusit znovu. Ostatní bloky NEČEKAJÍ.
    • Blok je prázdný: bloky 4, 5, 6, 7 se nevykreslí, nebo ukážou jednu větu s odkazem (viz FE). Blok 2 ukáže nuly.
  3. Souhrn vrátí příznak špatného plátce nebo blokace. SFX vykreslí pruh nad bloky a zároveň zakáže tlačítka „Doobjednat vše" a „Do košíku" na nástěnce.
  4. Zákazník klikne na Doobjednat vše. SFX pošle položky bloku 4 s posledními objednanými množstvími na endpoint z F01 s tělem items[]. Výsledkové okno je stejné jako u F01.
  5. Zákazník klikne na číslo faktur nebo zásilek. Přejde do sekce Faktury nebo Zásilky uživatelské zóny. Ty jsou stávající funkce k přenosu, ne tato položka.

Nesahat na homepage SFX jádra ani albi.eu. B2B obálka SFX přepíše šablonu Homepage vlastní nástěnkou. Anonymní homepage v B2B neexistuje.

Zobrazení na FE

Obálka SFX přepíše šablonu Homepage. Rozvržení podle prototypu, obrazovka Nástěnka. Design system ALBI.

Rozvržení

Stavy bloků

BlokNačítáníPrázdný
Tři číslaKostra tří karetNuly. Karta poslední objednávky: „Zatím žádná objednávka" s odkazem do katalogu.
Objednáváte pravidelněKostra karetBlok se nevykreslí. Nový zákazník ho uvidí až po prvních objednávkách.
Naposledy zobrazenéKostra karetVěta „Zatím nic. Otevřete si detail produktu v katalogu."
OblíbenéKostra karetVěta „Srdíčkem u produktu si ho uložíte." s odkazem do katalogu.
Novinky ve vašem sortimentuKostra karetBlok se nevykreslí.
Náhled FE: nástěnka
WF-F1

Nástěnka, hlavní účet

Nástěnka · Katalog · Oblíbené · Objednávky · Faktury (1) · Zásilky · Můj účet
Dobrý den, Marie
Papírnictví u Lípy s. r. o. · Lípová 12, Praha 2 · ceník Velkoobchod B · hlavní účet
FAKTURY PO SPLATNOSTI
1
4 820 Kč · 6 dní
ZÁSILKY NA CESTĚ
2
Zobrazit zásilky
POSLEDNÍ OBJEDNÁVKA
2026‑1013
7 783 Kč · 23. 9. 2026
Objednáváte pravidelněDoobjednat vše
Puzzle Karak 500 dílků
129 Kč / ks
naposledy 12 ks · 8× za rok
Hrnek Kočka 330 ml
149 Kč / ks
naposledy 18 ks · 6× za rok
Dárková taška střední
19 Kč / ks
naposledy 100 ks · 5× za rok
Diář 2027 denní A5
189 Kč / ks
naposledy 10 ks · 3× za rok
… Naposledy jste si prohlíželi (F05) · Oblíbené (F06) · Novinky ve vašem sortimentu …

Nové je vše kromě produktových karet a navigace. Podúčet vidí totéž bez odkazu Faktury a s objednávkami jen na své adresy.

FrontAPI

Nové endpointy vznikají v obálce backendu ve skupině /api-b2b/, vzor obálka albi.eu (#[AsRoute], vlastní DTO, registrace tagu). Všechny vyžadují JWT zákazníka a respektují viditelnost objednávek podle uzlu a adres.

EndpointStavK čemu
GET /api-b2b/dashboard/summarynovýJeden dotaz pro hlavičku a tři čísla. Viz příklad níže. D4
GET /api-b2b/frequently-ordered?months=12&limit=8novýProdukty z objednávek zákazníka (uzel, nebo adresy podúčtu) za období, seřazené podle počtu objednávek s produktem. Vrací produktové karty + lastCount, lastOrderedAt, ordersCount. Jen produkty aktuálně viditelné a prodejné. D3
GET /api-b2b/documents?type=invoice&state=overduenovýFaktury a zásilky nad orders_documents ze synchronizace AlbiLine: documentCode, type, state, dueDate, totalWithoutVat, unpaidAmount, carrierCode, shippedDate, order {code, hash}. Filtr type (invoice, consignment), state. Používá i sekce Faktury a Zásilky. D1
POST /api-carts/carts/{cartToken}/reorderF01S tělem { "items": [ { "productId", "count" } ] } místo orderHash. Stejná odpověď. Definice v F01.
GET /api-users/users/authexistujeJméno, e‑mail, ceník. Nevrací roli ani uzel, proto je role v souhrnu.
GET /api-orders/orders/{userId}?perPage=1existujePoslední objednávka, pokud je výchozí řazení od nejnovější. D2 Jinak ji vrátí souhrn.
GET /api-recently-viewed/productsexistujeBlok 5, viz F05.
GET /api-products/… výpis s řazením od nejnovějšíhoexistujeBlok 7. Zavřený katalog aplikuje jádro. Parametr řazení podle data přidání ověřit ve výpisu produktů.

Odpověď souhrnu

GET /api-b2b/dashboard/summary
{
  "account": { "isMaster": true, "nodeId": 4821, "isBadPayer": false, "isBlocked": false,
               "deliveryAddress": { "id": 12, "label": "Lípová 12, Praha 2", "priceListLabel": "Velkoobchod B" } },
  "invoicesOverdue": { "count": 1, "unpaidAmount": 4820, "currencyCode": "CZK", "oldestDueDate": "2026-09-17" },
  "consignmentsOnTheWay": { "count": 2 },
  "lastOrder": { "code": "2026-1013", "hash": "a91f…", "totalWithoutVat": 7783, "currencyCode": "CZK", "createdAt": "2026-09-23T14:02:00+02:00" },
  "favouritesCount": 3
}

Administrace

Nic nepřibývá. Bloky nejsou konfigurovatelné, pořadí a počty jsou v kódu SFX. Klient o nastavení nežádal.

Pravidla a validace

Mimo rozsah a nasazení

Mimo rozsah

Nasazení

Kontrola po nasazení