Juhend
Tarnija tootevoog e-poodi: mida XML-lingiga peale hakata
Tarnija saatis aadressi, mis avaneb brauseris arusaamatu koodimürana, ja ütles, et „sealt saab tooted kätte“. Selles juhendis on kirjas, mis see aadress on, mida tarnijalt küsida, kus asi kinni jääb ja mis vahe on sellel, mida saab ise proovida ja mida mitte.
Mis see tootevoog üldse on
Tarnija tootevoog on masinale kirjutatud hinnakiri. Selle taga on fail või aadress, mida tarnija ise ajakohasena hoiab ja kus on kirjas tema tooted koos hinna, laoseisu, kirjelduse ja piltidega. Inimesele mõeldud PDF-hinnakirjast eristab seda ainult üks asi: see on vormistatud nii, et arvuti oskaks seda lugeda.
Tootevoog on toores andmehunnik, mis lihtsalt seisab ühel aadressil. Liidest ega valmislahendust sellega kaasa ei tule: sinu e-pood ei tea sellest voost midagi ega hakka seda ise lugema. Kuskil peab olema midagi, mis voo kätte võtab, tarnija välju sinu poe väljadeks tõlgib, hinna ümber arvutab ja tulemuse poodi kirjutab. Ja teeb seda iga päev uuesti. Kogu töö ongi selles vahepealses osas.
Kolm formaati, mis ette tulevad
- XML. Minu senise kogemuse järgi tuleb see ette kõige sagedamini. Tarnija annab ühe veebiaadressi, mille taga on terve kataloog ühes failis. Sildistruktuur lubab tootel olla mitu pilti ja mitu omadust, nii et info jõuab kohale täiel kujul. Vastutasuks on fail suur: iga lugemine tähendab kogu kataloogi allalaadimist.
- CSV või Exceli tabel. Üks rida on üks toode. Lihtne vaadata ja lihtne kontrollida, aga tabel on lame: mitu pilti või variatsiooni surutakse ühte lahtrisse mingi eraldajaga. Kodeeringu- ja eraldajahädad tulevad ette just siin.
- API. Teenus, mille käest saab küsida. Saab pärida ainult seda, mis eile muutus, või ainult ühe toote laoseisu. Vajab võtit või kasutajat ja algne seadistus on suurem töö, kuid liigutatavat andmemahtu on kordades vähem.
Küsimusele „milline neist on parim“ on lihtne vastus: see, mida tarnija ise korras hoiab. Iga päev uuendatud CSV-fail on kasulikum kui API, mille andmed on pool aastat vanad.
Mida tarnijalt enne alustamist küsida
Need küsimused tasub tarnijale saata sellisena, nagu nad siin on, ka siis, kui sa ise iga vastust lõpuni ei mõista. Vastused ütlevad arendajale ära suurema osa sellest, mida ta muidu katse-eksituse teel välja selgitaks.
- Kui tihti voog uueneb. Kord ööpäevas, mitu korda päevas või muutuse hetkel. See number määrab ära, kui tihti on üldse mõtet voogu lugeda.
- Kas hind ja laoseis on samas voos. Mõnel tarnijal on laoseisu jaoks eraldi kergem voog. Küsi, kas see on olemas.
- Milliseid välju voog sisaldab. Küsi väljade nimekiri koos tähendusega. Eriti tootekood, EAN, nimi, kirjeldus, hind, laoseis, kategooria, tootja ja pildid.
- Kas hinnad on käibemaksuga või ilma. Ja mis valuutas.
- Mis kujul on laoseis. Number, jah/ei, sõna „laos“ või vahemik nagu „10+“.
- Kuidas tulevad pildid. Kas voos on täispikad pildiaadressid, kas need avanevad ilma sisselogimiseta ja kas aadress jääb samaks, kui tarnija pilti vahetab.
- Kuidas on kategooriad esitatud. Vaba tekst, püsiv ID või terve puu.
- Kas testvoog või näidisfail on olemas. Ilma näidisfailita on iga ajahinnang oletus. Küsi endale testvoog või üks päris eksport.
- Mida tähendab toote kadumine voost. Kas toode on tootmisest väljas või jäi lihtsalt sel korral eksporti lisamata. Vastusest sõltub, kas skript tohib toote üldse peita.
- Kas voog on avalik. Kui vajab kasutajat, parooli või IP-lubamist, tuleb see enne paika saada, muidu seisab töö esimese päeva järel.
Kus asi kinni jääb
Tootevoo ühendamine jääb kinni pisiasjade taha, mis on igaüks eraldi triviaalne, aga tuhande toote peale korrutatuna töömahukas.
- Kodeering. Täpitähed muutuvad küsimärkideks või kahemärgiliseks mürasodiks. Põhjus on selles, et fail on ühes kodeeringus, aga deklareeritud teises. Parandatav, aga tuleb märgata - muidu jõuab e-poodi tuhat katkise nimega toodet.
- Puuduvad väljad. Voos on neli tuhat toodet, kirjeldus ainult pooltel. Otsus tuleb teha enne importi: kas tuua ilma kirjelduseta, jätta vahele või kirjutada ise. Kui otsust ei ole, teeb selle skript sinu eest.
- Hind käibemaksuga või ilma. See viga ei anna endast kuidagi märku. Kataloog imporditakse edukalt, ükski veateade ei tule ja terve poe hinnatase on käibemaksu võrra paigast ära. Avastatakse tavaliselt ostja või raamatupidaja kaudu.
- Laoseis tekstina. „Laos“, „otsas“, „tellimisel“, „5+“. Masin ei oska sõna arvuga võrrelda. Kokku tuleb leppida tõlketabel, muidu näitab pood laos olevat toodet, mida tarnijal ei ole.
- Kategooriapuu ei klapi. Tarnija puu on ehitatud tema lao loogika järgi, sinu oma peaks olema ehitatud ostja loogika järgi. Ühe ühele kopeerimine annab poe, kus on nelisada kategooriat ja midagi ei leia.
- Pildid puuduvad või ei lae. Aadressid viitavad kohta, mis nõuab sisselogimist, või on iga pilt mitmemegabaidine originaal. Eraldi probleem on see, kui pildiaadress muutub igal uuendusel: siis laadib skript öösel kõik pildid uuesti alla.
- Dublikaadid. Sama toode tuleb kahelt tarnijalt. Ilma ühise tunnuseta, milleks on EAN või tootja tootekood, jõuab e-poodi kaks eraldi toodet kahe erineva hinnaga. Otsustada tuleb, kumb tarnija „võidab“.
- Voog muutub ette hoiatamata. Tarnija nimetab välja ümber või muudab puud. Ükski veateade ei tule: lihtsalt üks väli hakkab tühjana saabuma. Just seepärast käib regulaarne kontroll töö juurde.
Kuidas kategooriad kaardistada
Kategooriad on koht, kus tehakse kergesti otsus, mida hiljem ei saa enam odavalt tagasi pöörata. Tarnija puu on ehitatud tema lao järgi ja sisaldab harusid, mida sinu ostja ei otsi kunagi.
- Tee kaardistustabel: tarnija kategooria (eelistatult ID) - sinu kategooria. See on üks kord tehtav töö, mida skript hiljem lihtsalt loeb.
- Ära lase kaardistamata kategooriatel automaatselt uusi kategooriaid tekitada. Suuna need ühte „üle vaatamata“ ootesse, et uus tarnija kategooria jääks silma.
- Kaardista ID järgi, kui tarnija seda pakub. Nimesid nimetatakse ümber, ID-sid mitte.
- Ära kaardista tervet puud korraga. Alusta nendest, mille taga on kõige rohkem tooteid. Ülejäänu jõuab järge oodata.
- Sinu kategooriapuu jääb sinu omaks. Tarnija kategooria on sisend, mitte käsk.
Kuidas hinnavalem käib
- Alus on tarnija hind. Selle peale tuleb juurdehindlus. Pigem on see reegel kui üks number kogu poe peale: eri kategooriatel eri määr, odavatel toodetel tihti kindel miinimumsumma, sest protsent annaks sente.
- Ümardamine on osa valemist. Kas hind lõpeb alati kindla lõpuga või ümardatakse täiseuroni. Lepi see kokku enne importi, mitte pärast seda, kui kataloogis on juba veidraid hindu.
- Käibemaks otsustatakse ühes kohas. Kas kõik hinnad hoitakse käibemaksuta ja pood lisab selle, või vastupidi. Segamini kasutades tulevad hinnavead kohtadest, kust neid otsima ei hakata.
- Käsitsi määratud hind peab püsima. Alati on tooteid, mille hinna tahad ise paika panna. Valem peab erandit austama, muidu kirjutab öine käivitus sinu töö üle.
- Mõistlikkuse piir. Sea hinnamuutusele lagi. Kui uus hind erineb eelmisest rohkem kui kokku lepitud protsendi võrra, jäta toode muutmata ja pane see teatesse. Tarnija komaviga jõuab muidu poodi ilma ühegi veateateta.
Konkreetsed määrad sõltuvad su ärist ja neid ei oska keegi väljastpoolt sulle ette öelda. Tähtis on see, et valem oleks kirja pandud ühes kohas ja et sinna mahuksid ka erandid. Peas hoitud juurdehindlus ei ole valem, vaid mälu - ja mälu ei tööta öösel kell kolm.
Miks reaalaeg siin ei aita
„Kas laoseis liigub reaalajas?“ tuleb e-poe omanikult tihti esimese küsimusena. Vastus on enamasti see, et reaalaeg ei annaks siin midagi juurde. Kui tarnija ise uuendab oma voogu kord ööpäevas, siis iga minuti tagant lugemine ei tee andmeid värskemaks. See toodab ainult hulga päringuid sama vana info pärast.
Terve kataloogi XML on pealegi raske fail. Selle allalaadimine ja läbitöötlemine paari minuti tagant koormab nii sinu majutust kui ka tarnija serverit, ja tarnijad panevad sellisele käitumisele mingil hetkel piiri ette.
Ajastatud käivitus lahendab sama ülesande rahulikumalt. Öösel on poes vähe liiklust, koormus ei sega ostjat ja kui midagi läks viltu, on hommik enne päeva tellimusi käes probleemi parandamiseks. Mõistlik vaikimisi seadistus on umbes selline: tooteinfo ja hinnad üks kord öösel, laoseis tihedamini, kui tarnijal on selleks eraldi kergem voog. Reaalajas kontroll jääb kitsale erijuhtumile: viimane eksemplar ostuhetkel. Siis küsitakse API kaudu ühe toote kohta, ilma et kogu voogu uuesti loetaks.
Mis läheb valesti, kui voog katkeb
Katkine uuendus annab endast harva märku. Hinnad ja laoseisud jäävad eilsesse seisu, pood näeb välja täpselt nagu enne ja keegi ei märka enne, kui ostja tellib toote, mida laos ei ole. Veel halvem variant on pooltühi voog: naiivne skript loeb sealt välja, et kolm tuhat toodet on otsa saanud, ja nullib laoseisu.
Seepärast käivad need reeglid automatiseerimise juurde algusest peale:
- Logi iga käivitus: millal, mitu toodet loeti, mitu muutus. Ilma logita ei ole hiljem võimalik öelda, millal asi katki läks.
- Keeldu kahtlasest käivitusest. Kui voos on järsku kordades vähem tooteid kui eile, peatu ja teata. Ära rakenda.
- Ära kustuta tooteid automaatselt. Märgi otsa saanuks või peida. Kustutamine on inimese otsus ja lõhub ühtlasi toote aadressi.
- Teata ebaõnnestumisest inimesele. Ühest e-kirjast piisab. Vaikne automaatika on käsitsi tööst halvem, sest seda usaldatakse.
Millal tasub ise proovida
- Üks tarnija ja korralikult vormistatud voog
- Paarsada toodet, mitte mitu tuhat
- Voo väljad vastavad e-poe väljadele umbes üks ühele
- Olemas on impordilahendus, mille eeldatava kujuga tarnija voog juba klapib
- Pood ei ole veel avatud või kataloog on nii väike, et käsitsi parandamine on realistlik
Millal võtta arendaja
- Mitu tarnijat, igaüks oma formaadiga: kaardistus ja dublikaatide käsitlus korrutuvad
- Tuhandeid tooteid, kus käsitsi järelparandus ei ole enam võimalik
- Hinnavalemis on erandid või käsitsi määratud hinnad, mis peavad üle elama iga uuenduse
- Voog ei mahu valmisimpordi eeldustesse: pesastatud omadused, variatsioonid, ebatavaline laoseisuformaat
- Pood on juba avatud ja vale hind või vale laoseis maksab kohe raha
Vahepealne variant on ka olemas: tee esmalt testimport paarikümne tootega. See, mis seal katki läheb - täpitähed, hinnad, kategooriad, pildid - ongi see nimekiri, millega arendaja juurde minna. Katse tulemus on konkreetne loend, mille põhjal saab arendaja anda ajahinnangu ilma oletamata.
Kui otsustad, et seda ei ole mõtet ise teha, on e-poe automatiseerimine see teenus, mis siin kirjeldatud töö ära teeb. Kui e-pood on alles plaanis, tasub alustada WooCommerce e-poe ehitamisest ja tootevoog kohe algusest osaks planeerida: siis saab kategooriapuu ja tooteväljad ehitada tarnija voo järgi, ilma et valmis kataloogi peaks hiljem ümber tõstma.
Kuidas see päris projektis välja näeb
Andermi.ee on 5200+ tootega WooCommerce e-pood, kuhu on ühendatud 7 tarnija XML- ja API-tootevood. Tehnilise poole lahendasin Python-põhiste skriptide ja CRON-jobidega, mis töötlevad tarnijate vooge igal ööl. See on seesama ajastatud lahendus, mida ma ülalpool reaalajale eelistan.
Selles mahus tähendab 7 tarnijat 7 erinevat välja- ja kategoorialoogikat, mis tuleb ühe poe struktuuriks kokku viia. Üks vale kodeeringuga väli puudutab korraga kogu kataloogi ja üks kaardistamata kategooria jätab terve tooterühma poes leidmatuks. Sama projekti käigus tegin ka kategooria- ja SEO-struktuuri, jõudlusoptimeerimise ja serverikeskkonna korrastamise. Vaata andermi.ee projekti lähemalt.
Kui tarnija voo aadress on sul olemas, ütleb juba üks pilk failile, kas väljad on täidetud, mis kujul on laoseis ja kui palju kaardistamist ees ootab. Selle faili saad mulle saata kontaktivormi kaudu.
Levinumad küsimused
Kas ma saan tarnija XML-i lihtsalt e-poodi importida?
Mõnikord jah. Kui tarnija voog juhtub olema samas kujus, mida sinu impordilahendus ootab, ja tooteid on vähe, võib esimene import õnnestuda. Probleem tekib teisel korral: import on ühekordne tegevus, tootevoog aga muutub iga päev. Automatiseerimine tähendab, et keegi peab hoolitsema ka kolmesajanda uuenduse eest.
Kui tihti peaks tootevoog uuenema?
Küsi tarnijalt, kui tihti ta ise oma voogu uuendab, ja seadista oma lugemine samasse rütmi või sellest harvemaks. Tihedamini lugemine ei anna värskemat infot.
Mis saab siis, kui tarnija muudab voo ülesehitust?
Küsi tarnijalt, kas ta teatab voo muudatustest ette ja kellele. Ettehoiatuse peale ei tasu loota, nii et muutuse peab üles leidma sinu enda logi, mis võrdleb tänast käivitust eilsega.
Tarnijal on ainult CSV- või Exceli fail. Kas siis ei saa?
Saab. Küsi failist eraldajat, kodeeringut ja seda, mis märgiga on mitu pilti ühte lahtrisse pandud. Need kolm asja otsustavad ära, kui suur töö see on.
Kas ühte e-poodi saab ühendada mitu tarnijat?
Jah, ja see on tavaline. Lisatöö tuleb sellest, mis ühenduste vahel juhtub: sama toode tuleb kahelt tarnijalt, kategooriad on erineva loogikaga ja hinnareeglid ei pruugi kattuda. Need reeglid tuleb kokku leppida enne esimest importi.
Kas automatiseerimine kirjutab minu käsitsi tehtud muudatused üle?
Ainult siis, kui seda niimoodi ehitada. Käsitsi määratud hind, oma tootekirjeldus või valitud pilt saab jääda puutumata, kui erandid on juba alguses kokku lepitud. Tüütu on see, kui otsus tehakse alles pärast seda, kui öine käivitus on töö üle kirjutanud.
Saatsid tarnija lingi ja ei tea, kas sellest asja saab?
Saada mulle tarnija voo aadress või näidisfail. Vaatan üle, millises seisus andmed on, mis läheks kaardistamisele ja kui suur töö see tegelikult oleks.
Lase tarnija voog üle vaadata