Karuselle
Wielojęzyczny marketplace z wyselekcjonowaną markową modą z drugiej ręki: wyszukiwanie semantyczne, elastyczne prowizje sprzedawców, raportowanie podatkowe w UE i nowe metody płatności w rosnącym kodzie Laravel.

Zadanie
Wielojęzyczny marketplace modowy z wieloma sprzedawcami i kilkoma zewnętrznymi kanałami sprzedaży musiał dalej rosnąć na starzejącym się kodzie: mądrzejsze wyszukiwanie, uczciwe i elastyczne prowizje, raportowanie podatkowe w UE, więcej metod płatności — i sklep, który pozostanie szybki i bezpieczny.
Rozwiązanie
Trzy lata jako jedyny programista:
- Aktualizacja frameworka: Laravel 5.8 → 6 → 7 → 8 → 9 → 10 → 11 ze wszystkimi pakietami oraz PHP 7.4 → 8.x w dwa tygodnie, do tego przeprowadzka na nowy serwer.
- Wyszukiwanie semantyczne w czterech językach: własna usługa embeddingów i wektorowa baza danych, przyrostowa synchronizacja indeksu przez kolejki, powrót do zwykłego wyszukiwania z circuit breakerem, przełącznik w panelu bez wdrożenia, deterministyczny filtr koloru/kategorii/materiału, synonimy i komendy diagnostyczne.
- Katalog i witryna sklepu: filtry AJAX na żywo w szufladach z licznikami, przeliczanie rozmiarów na EU i typy rozmiarów według kraju, filtry rabatów i sprzedawców, przyjazne dla SEO adresy URL, pełny redesign kart, nagłówka, stopki i mega-menu, banery i slidery na stronie głównej zarządzane przeciąganiem.
- Propozycja ceny: klient proponuje cenę, administrator odpowiada kontrofertą e-mailem nawet gościom, limity na osobę, termin ważności i ochrona przed podwójnym kliknięciem.
- Checkout i płatności: opłata Buyer Protection w koszyku, checkoucie, e-mailach i fakturach VAT; kupony, wysyłka zależna od kraju; Stripe z 3D Secure, Apple Pay i Google Pay, PayPal REST, Paysera z weryfikacją kwoty.
- Sprzedawcy i pieniądze: kanały sprzedaży z własnymi prowizjami i fakturami, osobna faktura dla każdego sprzedawcy w jednym zamówieniu, terminy wypłat dla sprzedawców, unijny raport podatkowy DAC7 w XML, numery faktur nadawane pod blokadą w bazie danych oraz moduł Commission Rules z jednym resolverem, stawkami dla kanałów, regułami według wieku ogłoszenia, podglądem, sortowaniem przeciąganiem i dziennikiem zmian.
- Feedy i marketing: Google Merchant, Facebook, marketplace’y partnerskie w CSV, synchronizacja e-commerce z Mailchimp, consent mode v2.
- SEO i GEO: dane strukturalne dla produktów, okruszków i FAQ, canonical i hreflang tylko dla istniejących tłumaczeń, noindex dla faset, reguły robots dla crawlerów AI i llms.txt, codzienna mapa strony i komenda do kontroli SEO.
- Języki: LT, EN, PL i RU z tłumaczeniem przy zapisie i cotygodniowymi komendami synchronizacji.
- Panel i utrzymanie: panele kolejek i zadań z heartbeatem workerów, eksporty w tle, odzyskiwanie sesji z zachowaniem wpisanego tekstu, sprzątanie porzuconych szkiców produktów.
- Bezpieczeństwo: przegląd bezpieczeństwa zamknął luki w kontroli dostępu i dostępie do plików, dodał ograniczanie prób logowania na konto i na IP, wylogowywanie sesji po zmianie hasła i ograniczenie typów przesyłanych plików.
- Testy: zestaw testów od zera do 239 testów, z zabezpieczeniem przed uruchomieniem ich na produkcji.
Rezultat
- Obliczanie prowizji dla 50 produktów: ze 101 zapytań do bazy danych do 2.
- Lista ofert: 169 → 121 zapytań na stronę; produkt z 35 ofertami: 92 → 64.
- Miniatury produktów: 136 KB → 20 KB każda (60 na stronę kategorii); zdjęcia jednego produktu 2,5 MB → 0,5 MB.
- Zarobki sprzedawców w historii sprzedaży pokazują teraz to, co faktycznie naliczono — znaleziono i naprawiono błąd, który dotyczył większości historycznych wierszy.
- Wyszukiwanie semantyczne obejmuje na produkcji około 9000 produktów.