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

Naposledy zobrazené - jádro to už umí, staví se frontend

Pás produktů, které si zákazník naposledy prohlížel, na nástěnce a pod výpisem kategorie. Historie se drží u účtu, přežije odhlášení i změnu zařízení. Jádro MasterShopu má tabulku, endpointy i pravidla viditelnosti hotové.

Jen SFX + zapnutí volby FrontAPI: 2 endpointy existují Administrace: 1 volba zapnout PBS 121587 Autor: Hana Ortmannová
Co se dělá

Odběratel se k produktům vrací. Chce je najít bez hledání v katalogu, i když se mezitím přihlásil z jiného počítače. Jádro MasterShopu k tomu má modul ProductsRecentlyViewed s tabulkou per zákazník a dvěma FrontAPI endpointy. Žádná obálka ani SFX ho zatím nepoužívá.

Kam patří. Jádro MasterShopu (větev front-api): tabulka, oba endpointy i systémová volba už existují, beze změny. Obálka: pás naposledy zobrazených a zápis zobrazení v SFX. Názvy nových tabulek a endpointů jsou pracovní, v jádru je pojmenuje programátor.

Otevřené otázky

Jedna otázka pro klienta o počtu, jedna pro vývoj o limitu v jádře. Ani jedna neblokuje.

Klient

Rozhoduje ALBI

#Otázka a náš návrh
K1Kolik produktů má pás ukazovat? Návrh: 8 na nástěnce, 12 pod kategorií. Jádro si pamatuje 24, zobrazovaný počet je systémová volba.
Vývojář

Rozhoduje vývoj

#Otázka
D1Jádro drží 24 produktů a maže po 30 dnech. Dokument inovací slibuje „přežije týden pauzy", to sedí. Stačí to, nebo se má expirace pro B2B prodloužit? Obojí je konfigurace modulu, ne kód.
D2Zápis z SFX: volat POST hned při otevření detailu, nebo sbírat v prohlížeči a poslat dávkou při odchodu ze stránky? Endpoint je merge, umí obojí. Navrhujeme hned při otevření, je to jednodušší a nezávislé na zavření karty.

Shrnutí

Workflow

Co se ukládá

Kroky

  1. Zákazník otevře detail produktu. SFX po vykreslení detailu zavolá POST /api-recently-viewed/products s jednou položkou: id produktu a čas zobrazení. D2
    • Neúspěch: volání selže → nic se neděje, detail zůstane vykreslený. Zákazník chybu NEVIDÍ.
    • Úspěch: jádro produkt zapíše nebo posune na začátek a ořízne historii na 24 položek.
  2. Zákazník otevře nástěnku nebo výpis kategorie. SFX zavolá GET /api-recently-viewed/products a dostane produktové karty ve stejném formátu jako výpis kategorie.
    • Prázdná odpověď: pás se NEVYKRESLÍ vůbec, ani nadpis. Prázdný pás s textem „zatím nic" je jen na nástěnce, kde má místo.
    • Aspoň jeden produkt: pás se vykreslí s produktovými kartami, které SFX už má z katalogu.
  3. Ve výpisu kategorie SFX vynechá z pásu produkty, které jsou zrovna v zobrazeném výpisu nahoře. Ať zákazník nevidí totéž dvakrát.

Nesahat na modul ProductsRecentlyViewed v jádře. Limity a expirace jsou jeho konfigurace, viditelnost produktů řeší jeho dotaz.

Zobrazení na FE

Jedna nová komponenta pásu, dvě umístění, jedno volání navíc v detailu produktu. Karty produktů jsou stávající komponenty katalogu.

Kde se pás zobrazuje

MístoChování
Nástěnka (F03)Blok „Naposledy jste si prohlíželi". Až 8 karet, na mobilu vodorovný posuv. Když je historie prázdná, blok ukáže větu „Zatím nic. Otevřete si detail produktu v katalogu." s odkazem.
Výpis kategoriePás pod výpisem produktů, nad patičkou. Až 12 karet. Bez historie se nevykreslí.
Detail produktuPás se NEZOBRAZUJE. Detail má alternativy a příslušenství, další pás by ho zahltil. Detail jen zapisuje.

Komponenta

Náhled FE: pás pod výpisem kategorie
WF-F1

Výpis kategorie, dole pás naposledy zobrazených

Katalog › Hry a puzzle › Puzzle
… výpis produktů kategorie (stávající) …
Naposledy jste si prohlíželi
Hrnek Kočka 330 ml
149 Kč / ks
balení 6 ks
Diář 2027 denní A5
189 Kč / ks
balení 10 ks
Svíčka vonná Vanilka
99 Kč / ks
balení 12 ks
Plyšák Liška 25 cm
249 Kč / ks
balení 6 ks

Nový je jen pás. Karty jsou stávající komponenta katalogu. Pořadí: nejnovější vlevo. Na mobilu vodorovný posuv, na desktopu čtyři karty v řadě.

FrontAPI

Oba endpointy existují v jádru, modul FrontApi, skupina RecentlyViewed. Vyžadují JWT zákazníka.

EndpointStavK čemu
GET /api-recently-viewed/productsexistujeVrátí produktové karty naposledy zobrazených produktů, jen ty aktuálně viditelné pro zákazníka. Varianta /{slug} vynechá jeden produkt.
POST /api-recently-viewed/productsexistujeMerge položek items[{ id, viewedAt }]. Umí jednu i dávku. Jiný zápisový endpoint není.

Příklad zápisu

POST /api-recently-viewed/products
{ "items": [ { "id": 7701, "viewedAt": "2026-09-25T10:14:00+02:00" } ] }

Administrace

Jedna systémová volba, kterou vidí jen superadmin. Bez ní endpointy nic neukládají.

Náhled administrace: systémové volby modulu
WF-A1

Nastavení → Systémové volby → Naposledy zobrazené

Systémové volby
Prezentace: B2B CZ
Naposledy zobrazené produkty jen superadmin
Zapnuto
zapnout pro B2B CZ, SK, PL, EN
Počet zobrazených
8
Uložit

Stávající obrazovka jádra, nic nového. Přesné názvy voleb jsou v konfiguraci modulu ProductsRecentlyViewed.

Pravidla a validace

Mimo rozsah a nasazení

Mimo rozsah

Nasazení

Kontrola po nasazení