Jak to działa

Katalog nie jest pisany ręcznie. Wejściem jest plik od dostawców, wyjściem gotowe strony. Między jednym a drugim stoją trzy skrypty i to one decydują, czy przy stu pozycjach sklep dalej wygląda na poukładany.

1. Feed wchodzi taki, jaki przyszedł

Sześciu producentów to sześć konwencji. Pojemność bywa zapisana jako 30ml, 30 ml, 0,4 l, 7x2ml albo 60 szt. Cena raz z przecinkiem, raz z kropką, raz z dopiskiem . Nazwa marki w trzech wariantach wielkości liter, przez co bez normalizacji filtr pokazałby trzy osobne marki zamiast jednej.

Importer sprowadza to do jednego kształtu: litry na mililitry, cena na liczbę całkowitą groszy, marka na jedną nazwę kanoniczną. Wartości, których nie umie zinterpretować, odrzuca zamiast zgadywać. Cicho przyjęty śmieć w cenie jest gorszy niż zatrzymany import.

2. Braki są liczone, nie ukrywane

Pięć pól jest wymaganych: osoba odpowiedzialna, skład INCI, kraj pochodzenia, czas dostawy i kod EAN. W tym feedzie 18 z 45 pozycji ma co najmniej jeden brak.

Dwa pierwsze pola nie są ozdobą karty. Rozporządzenie 1223/2009 wymaga wskazania osoby odpowiedzialnej i podania składu na produkcie kosmetycznym. Do tego od 13 grudnia 2024 obowiązuje GPSR, czyli rozporządzenie 2023/988, którego artykuł 19 dotyczy sprzedaży na odległość: oferta w internecie ma jasno i widocznie zawierać nazwę producenta wraz z adresem pocztowym i elektronicznym, a gdy producent nie ma siedziby w Unii, dane osoby odpowiedzialnej. To znaczy, że te dane muszą stać na karcie produktu w sklepie, nie tylko na opakowaniu. Przy sześciu producentach to sześć zestawów danych firmowych do wyświetlenia, a jeden z nich jest spoza Unii i ma polskiego importera.

Karta produktu nie drukuje pustych etykiet. Brak wartości usuwa cały wiersz, więc układ zostaje nienaruszony, a lista braków trafia na widoczną notkę i do raportu. To jest różnica między „sklep wygląda dobrze" a „sklep wygląda dobrze i wiadomo, czego brakuje".

3. Zdjęcia sprowadzone do wspólnego mianownika

Na wejściu było 27 różnych rozmiarów plików. Produkt zajmował od 0,22 do 1,00 najdłuższego boku kadru, co w siatce daje raz znaczek, raz obiekt wypełniający kafelek.

Skrypt wykrywa produkt na podstawie samych pikseli, po odległości od koloru tła spod rogów zdjęcia. Potem kadruje do obrysu, skaluje tak, by produkt zajmował 0,76 boku, sadza go na wspólnym tle i dokłada jeden identyczny cień. Balans bieli koryguje w 25 przypadkach, mapując tło studyjne na neutralną szarość. Tam, gdzie tło jest celowo kolorowe, korekty nie robi, bo przeciągnęłaby za sobą kolor produktu.

Czego skrypt nie naprawi

Jeśli producent przysłał zdjęcie z produktem uciętym przez krawędź kadru, brakujących pikseli nie ma skąd wziąć. Takie pliki (4 z 45) dostają flagę „zdjęcie do wymiany" i czekają na nowy plik. Wersja znormalizowana i tak powstaje, żeby siatka się nie sypała, ale nikt nie udaje, że problem zniknął.

SKURozmiar źródłaWypełnienie kadruTłoKorekta bieli
AVE-SER-HYAL-30760×5070,43#e5ede2tak
AVE-SER-HYAL-50640×4270,27#f0f6ectak
AVE-CRM-NOC-50520×3250,64#edfce9nie
AVE-TON-OCZ-200390×5200,83#e6e6e6tak
AVE-TON-OCZ-4001280×8530,42#eef6ebtak
AVE-SER-VITC-30675×9000,57#f7efe2nie
AVE-CRM-OCZ-15900×5620,33#fafff9tak
BOR-MAS-SHEA-200880×11000,69#fffcf9tak

Pierwsze osiem z 45 rekordów raportu z przebiegu normalizacji.

4. Skąd co pochodzi

Podział źródeł prawdy jest tu celowy i to on decyduje o architekturze integracji. Stan magazynowy, cena i dane zgodności należą do systemu, który obsługuje zamówienia. Opis, zdjęcia i układ karty należą do sklepu. Dlatego opisy w tym demo leżą w osobnym pliku, kluczowane po grupie produktowej, a nie w feedzie. Wszystkie pojemności jednego produktu dzielą jeden tekst, więc poprawka nazwy składnika to jedna zmiana, nie trzy.

5. Wydajność

Strony są statyczne, bez frameworka i bez kroku budowania po stronie przeglądarki. Filtrowanie działa na już wczytanej siatce, fonty są hostowane lokalnie i ograniczone do potrzebnych zakresów znaków, zdjęcia to WebP w dwóch rozmiarach: 400 i 800 px. Cała warstwa interaktywna to jeden plik skryptu o wadze 2,4 kB przed kompresją.

Wróć do katalogu