spec:kulso_webshop
Tartalomjegyzék
Külső webshoppal való kommunikáció és fontosabb infók
Webshop egyedi szinkron:
Egyedi szinkronizálás a termékek evir oldalon megtalálható, és a webshopban egy (ritka esetben több) api hívással módosítható, feltölthető. Az egyedi szinkronizáció szolgál a termékek feltöltésére is.
- A szinkront futtatja a
my[webshop].pm
: egy dok.pm alapú objektum, mely a [webshop]_common.pm ből összerakott $self→{Data}→{Mezok} -el dolgozik.- Ezeket a mezoket a kovetkezo modon lehet testreszabni, két fő csoportra lehet osztani:
- Egyertelmű az evir oldalon az adat, és egyértelműen van helye a webshop oldalon.
- peldaul:
- megnevezés,
- ar,
- készlet
- kategoria
- tulajdonságok
- kapcsolódó és helyettesítő termékek
- az
{options}
értékei:- 0: nem visszük at a webshopba
- default: Átvisszük a webshopba
- eVIR oldalaról nem egyértelmű az adat beazonosítása, vagy nem létezik ilyen adat, akkor megengedjük a termék tulajdonság feltöltését is.
- például
- leírás mezők,
- súly
- megjegyzés mezők
- slug
- az option ertekei:
- 0: nem visszuk at a webshopba
- default: Valami általunk választott cikkparam érték
- pl Bruttó súly
- mas általunk választott cikkparam érték,
- pl Netto súly
- Termék tulajdonságok felsorolva.
- Az árat és a készletet külön kezeljük, mert volt, mikor nem engedtük, hogy egyedi szinkronizálásban szerepeljenek. Ez viszont XXX.
- torzs_webshop::sync_product:
- abstract
- lista az egyedi szinkronizálásokról.
- Ezen listából lehet futtatni is őket, vagy módosítani.
Összes termék szinkronizálása
azt jelenti, hogy alast_sync
a legkorábbi időpontra lesz állítva, alast_cikkszam
pedig üres string lesz.
- [webshop]_sync tablaban vannak a fej adatok tarolva
- last_sync es a last_cikkszam a batchesitest szolgaljak, ahol a last_sync a last_cikkszam modify_time-ja.
- id: azonositja a szinkront
- [webshop]_sync_mezok tablaban vannak, hogy mely termek rekordokat kell szinkronizalni, es milyen ertekkel.
- torzs_webshop::sync_setup:
- Form, melyet az egyedi szinkron listabol lehet elerni. Egy egyedi szinkron letrehozasa/modositasara szolgal.
- itt lehet beallitani a [webshop]_sync_mezok erteket valamint a sync nevet.
Webshop folyamata:
Altalanos info:
- torzs_webshop::common -t haszalom a cikkeknek az evirre vonatkozo adatok osszeszedesehez.
- torzs_webshop::webshop_log*.pm logolashoz es log listahoz.
- 'webshop_log_fej' es 'webshop_log_tetel' tablakban van a log
- webshop_log_fej:muvelet: pl termekek szinkronizalasa
- webshop_log_tetel: amikkel a muvelet vegrehajtodott. pl termekek
- elib::error_notifyer hasznalata a notifyolashoz.
- jelenleg emailt kuldok ki
- [webshop]_variables tablaban vannak olyan ertekek, melyekre szuksegunk van ket api muvelet kozott, de nem annyira nagyok, hogy teljes tablat kapjanak
- mint az utolso rendeles id, ar szinkronizalas
Termek szinkronizalas folyamatas:
- A lefuttatott szinkronizalasnak(mely lehet egyedi de lehet ar/keszlet is) vesszuk az last_sync es a last_cikkszam rekordjait
- last_sync: utoljara felszinkronizalt termek modositasi timestamp-je
- last_cikkszam: utoljara felszinkronizalt termek cikkszama.
- ezekkel szurunk a termekekre, hogy csak azokat szinkronizaljuk, mely a last_sync ota valtozott. Ha a modify_time=last_sync akkor a last_cikkszammal hasonlitjuk ossze.
- (altalaban) 50 darab cikkre szurunk, es ezt egy darab api hivassal frissitjuk miutan osszeszedtuk a szukseges adatokat.
- oka: woocommerce: Kiszamoltuk, hogy noha 100 a batch merete, de 50-el fut le emberi idon belul.
- Mielott az api hivast megtesszuk, frissitjuk a last_sync es last_cikkszam-ot, hogy ne akadjon be a szinkronizalas hiba eseten.
- Ez utan megnezzuk, hogy van-e meg idonk lefuttatni egy ujabb hivast (az elozo futasi idot felhasznalva a becsleshez).
- Ha van akkor megcsinaljuk
- Ha nincs akkor a hatterben fog futni tovabb, batchjobkent.
- Ar es keszlet szinkronizalasakor nem toltunk fol uj cikket, csak a meglevoket frissitjuk a gyorsasag miatt.
- keszlet szinkronizalaskor nem a modositasi datumot vesszuk alapul a cikkek szuresere, hanem, hogy last_sync ota megjelent-e az aruslot_log tablaban bejegyzes raktarkeszlet valtozasra.
sync_product_by_id megjegyzesek
— Csesznák Tamás 2022/08/26 11:32 A megjegyzések nagyrésze lehet, hogy a source_browserben is megtalálható, és sokat átlehet oda költöztetni.
- a
$id
az egyedi szinkronizalasok evires id-je. sub _sync_products_init
: Inicializalja azokat a {Mezok}-et amiket szinkronizalni lehet- set_value hogy mely mezoket akarom szinkronizalni
- ettol fuggoen metadaadatok lekerese
- Vagy eVIR oldalon kapcsolotablabol
- Vagy webshop api hivassal
- while ciklusban amig lehet:
- sub calc_product_sync_infos:
- Elsődlegesen eVIR oldali cikk adatok összeszedése, a következő 50 darabra.
- Másodlagosan (shoppoktól eltérően ez változhat), itt állapítom meg, hogy mely cikk van feltöltve, és mely nincsen.
- sub calc_product_sync_infos_ar:
- gyors megoldas a sale arkategoria megszerzesehez
- Ronda, és javítani kéne, költöztetni a torzs_webshop::common-ba
- sub sync_products_felvesz
- parameterek:
- do_update⇒frissitunk
- do_create⇒letrehozunk
- sync_name⇒'szinkron neve'
- vegigmegy a cikkeken, es megnezi, hogy az adott cikket update-elni vagy create-elni kell.
- sub sync_update_product:
- Keszit egy rekordot, amit oda lehet adni az apinak.
- shopify esetén itt végzi el a szinkronizálást is.
- visszater a sikerek szamaval (jó esetben ez az elvárt működés).
keszlet szinkronizacio:
Keszleteknel annyi valtozas van, hogy a termekeket nem a modify datum alapjan, hanem az aruslot log-ban torteno valtozas alapjan szedem ossze.
Webshop specifikus infok:
woocommerce:
tulajdonsag kategoria es cimkenek van metaadata amit fel kell toltenni szinkron elott. vannak kapcsolotablak. A woocommerce_common.pm-ben vannak az utasitasok hogy berakjuk a tablaba a termeket. minden metaadatnak, a media adatoknak es a termekeknek van tablaja. A kepek feltolteset a wordpress intezi A kepeket nem lehet webshop oldali batchkent feltolteni, csak 1-esevel.
Shoprenter:
Mindig lekerjuk a shopbol a termekeket. Nincs kapcsolotabla kapcsolotabla van: kepek A nyelv adatokat lekerjuk minden hivasnal, hogy a description-nek megtudjuk mondani a nyelvet .
Api kisokos: A maximálisan indítható requestek limitje 3/alkalmazás/bolt/másodperc. Outer ID-t nem használunk, mert nem támogatott, helyette az extended resource-ot használjuk. Minden olyan mező, ami leírást/szöveget tartalmaz 2 részből áll: 1 fej részből, és egy description részből. Például a text tulajdonságok, vagy a termék megnevezése. Az id mezok base64 kodolasuaki, kibontva ezt kapjuk: pl: productCategory-product_id=534&category_id=146
UNAS:
XML-ben komunikalunk. unas_data.pm alakitja pxml adatszerkezette. Nincs adat, amit külön kellene feltölteni. max 20 darab sikertelen hivas, es max 128 mb. agusztus 9 ota a megrendelés státusz is lekérdezhető apin keresztül
Shopify:
graphQL-t is hasznalunk pl keszletnel. nincs shop oldali batchelt hivas Nincsenek termék tuladjonságok: Csak options van, amiből 3 választható
— Csesznák Tamás 2022/08/26 11:12
spec/kulso_webshop.txt · Utolsó módosítás: szerkesztette: csetom