Zavřený katalog - filtruje UpSearch podle příznaků
Zákazník vidí a koupí jen sortiment své pobočky, stejně jako dnes. Mění se, kdo to hlídá: do MasterShopu jdou všechny produkty s příznaky a filtruje až UpSearch. Web mu v hlavičce jen řekne, kdo je přihlášený, a dostane zpět už vyfiltrovaná data.
Změna proti starému B2B: technika, ne chováníObálka + SFX + UpSearchRozdělení prací: Z2, B1, B2Potřebuje dodavatele UpSearchBackend: změna logiky se připravujeAutor: Hana Ortmannová
Co se dělá
Starý B2B filtruje sortiment sám v e‑shopu: zákazník bez povolení produkt nenajde v databázi. Nový B2B to dělá jinak. MasterShop nic nefiltruje, jen ke každé položce drží příznak: u produktu cost level, u zamčené kategorie, článku nebo banneru kód zákaznické skupiny. Web pošle s každým dotazem na UpSearch hlavičku s tím, kdo je přihlášený a za kterou pobočku nakupuje. Co ten uživatel smí, zná UpSearch z dat od MasterShopu a vrátí jen povolené položky.
Pro zákazníka beze změny: vidí a koupí jen sortiment své pobočky. Pravidla, co kdo smí, zůstávají jako dnes (Jak funguje dnes, téma 01).
Obálka backendu: synchronizace z AlbiLine plní příznaky (cost level produktu, skupina a povolené cost levely pobočky). Do UpSearch posílá produkty, kategorie, články a bannery i s příznaky a k tomu pobočky s jejich kódy.
SFX: do hlavičky každého dotazu na UpSearch přidá, kdo je přihlášený a jakou má aktivní pobočku. Žádné kódy NEPOTŘEBUJE, dostane už vyfiltrovaná data.
UpSearch: k hlavičce si dohledá kódy pobočky a filtruje ve všech cestách, které SFX volá: výpis, vyhledávání, našeptávač, počty ve filtrech.
NEDĚLÁ se filtr v MasterShopu ani dofiltrování v prohlížeči.
Kam patří.Obálka backendu: příznaky ze synchronizace AlbiLine a export produktů i kódů poboček do UpSearch. Obálka SFX: hlavička s přihlášeným uživatelem, prázdné stavy. UpSearch: dohledání kódů pobočky a filtr. Jádro MasterShopu: nic nového, pokud programátor nerozhodne jinak (D3). Názvy hlaviček a endpointů jsou pracovní, pojmenuje je programátor.
Připravuje se. Vývojář doporučuje změnit u zavřeného katalogu i logiku na backendu, ne jen přesunout filtr do UpSearch. Co přesně se na backendu změní, upřesní programátor. Do té doby platí sekce 03 a 05 jako návrh a otázky D1 a D3 zůstávají otevřené.
01 - Otevřené
Otevřené otázky
Čtyři otázky pro vývoj, tři pro dodavatele UpSearch. D1 a U1 blokují: bez nich nejde říct, kde všude filtr platí.
Vývojář
Rozhoduje vývoj
#
Otázka
D1
Detail produktu, košík a objednávka jdou přes FrontAPI, ne přes UpSearch. Má MasterShop příznak kontrolovat aspoň tam (přímý odkaz na detail, vložení do košíku, odeslání objednávky), nebo se nekontroluje vůbec? Návrh: kontrolovat v košíku a objednávce, detail mimo sortiment vrátit 404.
D2
Identifikaci uživatele v hlavičce musí UpSearch umět ověřit, jinak si kdokoli z prohlížeče podvrhne cizí pobočku a uvidí její sortiment. Skládá ji server SFX v proxy /_upsearch z přihlášení (token), nebo prohlížeč? Návrh: server SFX.
D3
Jak se kódy poboček dostanou do UpSearch: export z obálky spolu s produkty (při každé změně pobočky v AlbiLine), nebo si je UpSearch při dotazu vezme z FrontAPI? Export je jednodušší, dotaz má vždy čerstvá data.
D4
Kde SFX drží aktivní pobočku hlavního účtu: jen v prohlížeči, nebo i na serveru? Ovlivňuje D2 a S01.
UpSearch
Odpovídá dodavatel UpSearch
#
Otázka
U1
Filtr podle hlaviček dnes funguje jen ve staré cestě dotazu. Zapne ho i v cestě, kterou volá SFX (frontapi/catalog, search, autocomplete, počty ve filtrech)? Jaká hlavička ponese přihlášeného uživatele a pobočku a umí si k ní UpSearch dohledat kódy z exportu, nebo čeká kódy přímo v hlavičce (wg)?
U2
Jak dostat příznaky z importu MasterShopu do indexu (metapole se schématem)? Jeden index na trh, čtyři trhy.
U3
Budou v indexu i kategorie, články a bannery s kódem skupiny, aby je UpSearch filtroval stejně jako produkty? Dnes si je SFX bere z FrontAPI.
02 - Řešení v kostce
Shrnutí
Všechno do MasterShopu, nic se neschovává. Produkty, kategorie, články i bannery jsou v databázi pro všechny. Rozdíl mezi zákazníky dělají příznaky.
Příznak na položce: produkt má cost level (kód z AlbiLine, právě jeden). Zamčená kategorie, článek, banner a doprava mají kódy zákaznických skupin, které je odemykají.
Příznak na pobočce: seznam povolených cost levelů a zákaznická skupina, obojí z AlbiLine. Třetí příznak je ruční: pole „Kategorie s omezeným přístupem“ u pobočky v administraci odemyká vybrané zamčené kategorie jen jí. Přenáší se a jde do UpSearch jako další kódy pobočky.
Hlavička za uživatele: web pošle s každým dotazem na UpSearch, kdo je přihlášený a za kterou pobočku nakupuje. Podúčet má jednu pobočku, hlavní účet tu, kterou si přepnul v liště. Kódy pobočky web NEPOSÍLÁ, zná je UpSearch.
Filtruje UpSearch. Vrátí jen produkty s povoleným cost levelem mimo zamčené kategorie, které pobočka nemá odemčené. Počty ve filtrech a prázdné kategorie počítá z toho samého.
Ceny jdou dál z FrontAPI podle ceníku pobočky, UpSearch je neřeší (platí pravidlo z průzkumu: výpis nemusí mít cenu podle ceníku).
03 - Co se má stát
Workflow
Co se ukládá
Produkt:cost_level_code, dnes už v synchronizaci z AlbiLine. Nově odchází i do indexu UpSearch.
Zamčená kategorie, článek, banner: seznam kódů skupin, které položku odemykají. Dnes vazba ve „Whitelist skupin uživatelů“, nově odchází do indexu UpSearch jako příznak položky.
Pobočka (doručovací adresa): povolené cost levely a kód skupiny z AlbiLine, dnes už v synchronizaci. K tomu ručně vybrané „Kategorie s omezeným přístupem“ z administrace. Všechno nově odchází do UpSearch jako kódy pobočky (D3).
Kroky
Synchronizace z AlbiLine naplní příznaky produktů a poboček. Export do UpSearch pošle produkty i s cost levelem, položky s kódy skupin a pobočky s jejich kódy.
Neúspěch: produkt bez cost levelu → do indexu jde bez příznaku a UpSearch ho NEVRÁTÍ nikomu. Hlásí se v logu synchronizace.
Uživatel se přihlásí. SFX zná jen, kdo to je a jakou má aktivní pobočku. Kódy pobočky NEDOSTÁVÁ.
Pobočka bez povolených cost levelů: UpSearch nevrátí nic. Web ukáže prázdný stav s kontaktem na obchodníka, ne chybu.
Každý dotaz na UpSearch (výpis, vyhledávání, našeptávač, počty) nese v hlavičce přihlášeného uživatele a pobočku. UpSearch si k ní dohledá kódy, vrátí jen povolené položky a z nich spočítá počty a stránkování. D2U1
Hlavní účet přepne pobočku v horní liště. Další dotazy jdou s novou pobočkou v hlavičce, UpSearch přepne sortiment sám. Ceník se přepne stejně (S01).
Detail produktu, košík a objednávka jdou přes FrontAPI. Co tam MasterShop kontroluje, rozhodne D1.
AlbiLineCost level produktu, kódy pobočkysynchronizace každých 20 minut
→
MasterShop (obálka)Všechno s příznakyprodukty, kategorie, články, bannery a pobočky s kódy odcházejí do UpSearch
→
UpSearchFiltrk hlavičce dohledá kódy pobočky a vrátí jen povolené položky, počty a stránkování
→
SFXZobrazí, co dostanev dotazu jen řekne, kdo je přihlášený a jaká pobočka
MasterShop drží data a příznaky, UpSearch rozhoduje, co uživatel uvidí, SFX to jen zobrazí.
04 - StorefrontX
Zobrazení na FE
SFX nestaví žádný filtr a žádné kódy nezná. Přidá hlavičku s přihlášeným uživatelem, ukáže prázdné stavy a u produktu mimo sortiment stránku 404.
Místo
Odkud data
Kdo filtruje
Výpis kategorie, filtry, řazení, počty
UpSearch
UpSearch podle hlavičky
Vyhledávání a našeptávač
UpSearch
UpSearch podle hlavičky
Kategorie v menu, články, bannery
dnes FrontAPI
UpSearch, pokud budou v indexu (U3); jinak FrontAPI podle kódu skupiny
Detail produktu
FrontAPI
D1; návrh 404 pro produkt mimo sortiment
Košík a objednávka
FrontAPI
D1; návrh: nepovolený produkt košík nepřijme
Prázdná kategorie: text „V této kategorii pro vás nemáme žádné produkty.“ s odkazem na katalog. Kategorie v menu zůstává, jako dnes.
Prázdný sortiment pobočky: věta s kontaktem na obchodníka ALBI místo výpisu. NEUKAZUJE se chyba.
Nic se nedofiltrovává v prohlížeči. Co UpSearch vrátí, to se zobrazí.
05 - Rozhraní
FrontAPI a UpSearch
Příznaky a pobočky v exportu do UpSearch, žádný nový endpoint pro web. Hlavičky navazují na ty, které UpSearch už čte.
Co
Stav
K čemu
Export poboček a jejich kódů do UpSearch
nový
Ke každé pobočce povolené cost levely, kód skupiny a ručně vybrané kategorie. Export, nebo dotaz UpSearch do FrontAPI, viz D3.
Export produktů do UpSearch
rozšířit
K produktu přibude cost_level_code. Zamčené kategorie, články a bannery dostanou seznam kódů skupin (U2, U3).
Hlavičky na UpSearch
existují
UpSearch dnes čte client-id, cc, lang, pl (ceníky) a wg (whitelist skupiny). SFX posílá jen první čtyři. Nově pošle i přihlášeného uživatele a jeho pobočku (U1).
Hlavičku doplnit na serveru SFX, ne v prohlížeči (D2). Proxy /_upsearch dnes hlavičky z prohlížeče přeposílá beze změny.
Ceny ve výpisu zůstávají podle hlavičky pl (ceník zákazníka) jako na albi.eu. Ceník pobočky řeší S01.
06 - MasterShop admin
Administrace
Nic nového k nastavování. Příznaky plní AlbiLine, zamčení kategorie a skupiny zůstávají jako dnes.
Katalog → Produkty: sloupec a filtr „Cost level“ existují.
Katalog → Kategorie: přepínač „Aktivní - omezeno whitelistem zákazníků“ existuje. Které skupiny kategorii odemykají: Zákazníci → Whitelist skupin uživatelů → záložka „Kategorie“. Beze změny.
Zákazník → Dodací adresy: „Zákaznická skupina“ a „Kategorie s omezeným přístupem“ existují a zůstávají. Co je v druhém poli vybrané, jde do UpSearch jako kód pobočky.
Poznámka, bylo by dobré dodělat: u pobočky (Zákazník → Dodací adresy) zobrazit povolené cost levely z AlbiLine, jen ke čtení. Dnes je obsluha nemá kde vidět a nemůže ověřit, proč zákazník produkt nevidí. Není to podmínka spuštění.
07 - Pravidla
Pravidla a validace
Produkt je vidět, když má cost level na seznamu pobočky a zároveň není v zamčené kategorii, kterou pobočka nemá odemčenou. Produkt ve dvou kategoriích, z nichž jedna je zamčená a neodemčená, NENÍ vidět nikde.
Odemčení zamčené kategorie: kód skupiny pobočky je mezi kódy kategorie, nebo je kategorie u pobočky vybraná přímo v poli „Kategorie s omezeným přístupem“. Obě cesty se sčítají, jako dnes.
Běžné kategorie vidí všichni. Uvnitř jsou jen produkty s povoleným cost levelem, takže může být prázdná.
Rozhoduje aktivní pobočka, ne zákazník. Hlavní účet po přepnutí pobočky vidí jiný sortiment.
Produkt bez cost levelu se nikomu neukáže. Nesmí se nahradit výchozí hodnotou.
Pobočka bez povolených cost levelů nevidí žádný produkt. Příznak „povolit vše“ z AlbiLine (enable_all_products) vrátí všechny cost levely, zamčené kategorie dál platí.
Hlavička z prohlížeče se NEBERE jako důvěryhodná: kdo se ptá, musí UpSearch umět ověřit (D2).
08 - Hranice
Mimo rozsah a nasazení
Mimo rozsah
Filtr sortimentu uvnitř MasterShopu (klasické jádro ho umí, na headlessu se NEPOUŽIJE).
Ceník pobočky a přepínač pobočky: S01. Ceny ve výpisu podle ceníku pobočky: rozhodnuto, že nemusí.
Osobní XML feed pobočky: dnes filtruje sám, jde mimo UpSearch (téma 07).
Nasazení
Pořadí: export příznaků a poboček do UpSearch a filtr u dodavatele (U1, U2) → hlavička v SFX. Bez filtru u UpSearch NESMÍ jít B2B ven: uviděl by celý sortiment.
Nezávisí na blokeru B2B košíku Z1, kromě kontroly v košíku podle D1.
Kontrola po nasazení
Pobočka s cost levely A9I a TNL: výpis a vyhledávání vrátí jen produkty s těmito kódy, počty ve filtrech sedí na to, co je vidět.
Produkt v zamčené „Hry do škol“ i v běžné „Deskové hry“: pobočka bez skupiny „school“ ho nenajde ani v „Deskových hrách“.
Hlavní účet přepne pobočku s jiným sortimentem: výpis se změní bez odhlášení.
Dotaz na UpSearch s podvrženou hlavičkou z prohlížeče vrátí totéž co bez ní (D2).
Přímý odkaz na detail produktu mimo sortiment: chování podle D1.