E-trgovina / podaci
Sistem za normalizaciju podataka o proizvodima
Automatizovan pipeline za prikupljanje, deduplikaciju i obogaćivanje podataka o proizvodima — pretvara 90-minutni ručni unos u 10 minuta, za 150+ korisnika u pozadinskoj službi.
Pregled
Svaki katalog-biznis ima isti tihi porez: neko, negde, kuca podatke o proizvodima u formu. Naslovi, opisi, specifikacije, slike — povučeni od dobavljača, očišćeni, deduplicirani, i dovedeni do dovoljne doslednosti da bi se prodali. Na velikoj skali taj porez je ogroman, i plaća se u najsklonijoj greškama valuti koja postoji: ljudskoj pažnji na repetitivnom poslu.
Problem
Ručni unos je trajao oko 90 minuta po proizvodu. Gore od vremena bilo je odstupanje: isti proizvod bi ušao u sistem dvaput od dva dobavljača sa malo drugačijim rečima, i sada si imao duplikate da ih zauvek usklađuješ. Sadržaj nije bio samo spor za proizvodnju — borio se sam sa sobom.
Rešenje
Automatizovan sistem za prikupljanje, obradu i skladištenje podataka o proizvodima, izgrađen oko jedne ideje o kojoj se ne pregovara: jedinstvenost sadržaja. Prima iz izvora trećih strana, normalizuje sve u dosledan oblik, detektuje i sažima duplikate, i pozadinskoj službi predaje čist zapis za pregled umesto prazne forme za popunjavanje. Opsluživao je 150+ korisnika u pozadinskoj službi i integrisao se sa okolnim softverom trećih strana u kojem su već radili.
Glavni rezultat: unos je pao sa 90 minuta na 10, a ažuriranja proizvoda postala su otprilike 10× brža. Ali broj do kog mi je više stalo je onaj koji je teško staviti na slajd — duplikati su prestali da se množe.
Arhitektura
Laravel backend drži pipeline za prijem i normalizaciju; Vue.js interfejs daje pozadinskoj službi tok pregleda-i-ispravke umesto toka unosa podataka. MySQL čuva kanonski katalog.
Pipeline je namerno u fazama — prikupi → normalizuj → dedupliciraj → obogati → objavi — tako da je svaka briga izolovana i nezavisno popravljiva. Deduplikacija je srce svega: uparivati „isti proizvod” kroz izvore koji se ne slažu oko formatiranja, jedinica i imenovanja jeste maglovit problem, a držati tu logiku u jednoj dobro testiranoj fazi (umesto razmazanu po importerima) je ono što ju je učinilo održivom.
Tehnički izazovi
Deduplikaciju je lako uraditi 80% tačno, a zaista teško dovesti do 99%. Dugačak rep je pun umalo-promašaja: dva oglasa koja su isti proizvod u drugačijem pakovanju, ili različiti proizvodi koje bi naivno uparivanje spojilo. Pogreši u smeru spajanja i tiho uništiš podatke, što je gore od duplikata. Zato je sistem naklonjen tome da iznese verovatne poklopce čoveku umesto da agresivno automatski spaja — automatizacija za očigledne slučajeve, čovek za dvosmislene.
I propusnost je bila važna. Normalizacija i uparivanje naspram kataloga koji raste mora da ostane dovoljno brzo da pozadinska služba ne čeka na to, što je značilo biti pažljiv oko toga kako upiti za uparivanje pogađaju bazu kako katalog raste.
Naučene lekcije
Pobeda nije bila „zameni ljude” — bila je promeni šta ljudi rade. Premeštanje sa kucanja na pregledanje zadržalo je njihovo rasuđivanje u petlji tačno tamo gde je bilo vredno (dvosmisleni poklopci) i izbacilo ga iz petlje tamo gde je bilo samo skupo (prekucavanje specifikacije). Taj okvir — automatizuj dosadnu izvesnost, eskaliraj zanimljivu sumnju — jeste onaj za kojim posežem na svakom pipeline-u podataka od tada.