[{"data":1,"prerenderedAt":798},["ShallowReactive",2],{"blog-pimcore-erp-delta-sync-hu":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":13,"about":24,"sources":33,"cover":67,"og":68,"expertise":69,"locales":70,"lang":73,"title":74,"description":75,"coverAlt":76,"metaTitle":77,"takeaways":78,"faq":84,"toc":103,"blocks":137,"others":519},"pimcore-erp-delta-sync","2026-10-02",12,"web",[9,10,11,12],"Pimcore","SAP integration","PIM ERP sync","Symfony Messenger",[14,15,16,17,18,19,20,21,22,23],"Pimcore ERP delta sync","Pimcore developer","Pimcore SAP integration","PIM ERP Schnittstelle","Pimcore SAP Schnittstelle","PIM ERP sync best practices","Pimcore Symfony Messenger","delta sync vs full sync","idempotent import Pimcore","Pimcore Infor integration",[25,27,30],{"name":9,"url":26},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPimcore",{"name":28,"url":29},"SAP ERP","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSAP_ERP",{"name":31,"url":32},"Product information management","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct_information_management",[34,37,40,43,46,49,52,55,58,61,64],{"title":35,"url":36},"Pimcore docs: Symfony Messenger","https:\u002F\u002Fdocs.pimcore.com\u002Fplatform\u002FGetting_Started\u002FInstallation\u002FAdvanced_Installation_Topics\u002FSymfony_Messenger\u002F",{"title":38,"url":39},"Pimcore docs: Platform Versions","https:\u002F\u002Fdocs.pimcore.com\u002Fplatform\u002FPimcore_Platform\u002FPlatform_Versions\u002F",{"title":41,"url":42},"Pimcore docs: Pimcore Editions","https:\u002F\u002Fdocs.pimcore.com\u002Fplatform\u002FPimcore_Platform\u002FPimcore_Editions\u002F",{"title":44,"url":45},"Pimcore docs: Data Importer","https:\u002F\u002Fdocs.pimcore.com\u002Fplatform\u002FData_Importer\u002F",{"title":47,"url":48},"Pimcore on GitHub: Release 2026.3.0","https:\u002F\u002Fgithub.com\u002Fpimcore\u002Fpimcore\u002Freleases\u002Ftag\u002Fv2026.3.0",{"title":50,"url":51},"Symfony docs: Messenger, Sync & Queued Message Handling","https:\u002F\u002Fsymfony.com\u002Fdoc\u002Fcurrent\u002Fmessenger.html",{"title":53,"url":54},"SAP Library: Change Pointer (Master Data Distribution)","https:\u002F\u002Fhelp.sap.com\u002Fdoc\u002Fsaphelp_nw73ehp1\u002F7.31.19\u002Fen-us\u002F4a\u002Fbb1e253536478be10000000a421937\u002Fcontent.htm?no_cache=true",{"title":56,"url":57},"SAP Library: Change Pointer (IDoc Interface\u002FALE)","https:\u002F\u002Fhelp.sap.com\u002Fdoc\u002Fsaphelp_em700_ehp01\u002F7.0.1\u002Fen-US\u002F12\u002F83e03c19758e71e10000000a114084\u002Fcontent.htm?no_cache=true",{"title":59,"url":60},"Infor docs: Infor ION and M3 BODs","https:\u002F\u002Fdocs.infor.com\u002Fm3cs\u002F10.2.3\u002Fen-us\u002Fm3csbom\u002Ffabsog\u002Fgoi1495809108914.html",{"title":62,"url":63},"Infor Developer Portal: Integration with ION","https:\u002F\u002Fdeveloper.infor.com\u002Ftutorials\u002Fintegration-with-ion",{"title":65,"url":66},"Debezium: open source distributed platform for change data capture","https:\u002F\u002Fdebezium.io\u002F","\u002Fimages\u002Fblog\u002Fpimcore-erp-delta-sync\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpimcore-erp-delta-sync\u002Fog.jpg","b2b-ecommerce-developer",[71,72,73],"en","de","hu","Pimcore ERP delta szinkron: termékadatok SAP vagy Infor, PIM és webshop között","Termékadatok szinkronja SAP vagy Infor, Pimcore és webshop között: delta és full sync, változásdetektálás, idempotens importok, Messenger, tulajdonlás, replay.","Ábra: a termékadatok egy SAP vagy Infor ERP-ből delta kinyerésen és üzenetsoron át a Pimcore-ba folynak, ahol minőségi kapuk futnak, majd tovább a webshopba.","Pimcore ERP delta szinkron: ami működik · Balázs Csorba",[79,80,81,82,83],"Attribútumonként döntsd el, ki a tulajdonos, mielőtt importot írsz: az ERP birtokolja a kereskedelmi és logisztikai adatokat, a PIM a tartalmat és az osztályozást, és egy mezőt sem ír két rendszer.","A mindennapi folyamathoz delta szinkront használj, a full sync pedig legyen ütemezett egyeztetés, ne a normál út. A változást a forrásnál észleld (SAP change pointer, Infor Sync BOD, CDC), és erősítsd meg tartalom-hash-sel.","Az üzenetek legalább egyszer kerülnek kézbesítésre, ezért minden handlernek idempotensnek kell lennie: stabil kulcs üzleti eseményenként, upsert insert helyett, és hash-ellenőrzés írás előtt.","Tegyél üzenetsort az ERP és a PIM közé. A Pimcore-ban ez a Symfony Messenger a pimcore_core sorral és egy failure transporttal, élesben lehetőleg RabbitMQ-n.","A minőségi kapuk, egy figyelt hibasor és egy replay parancs teszi a törékeny importot üzemeltethető pipeline-ná. Építés előtt ellenőrizd az aktuális Pimcore verziót, kiadást és támogatási időszakot.",[85,88,91,94,97,100],{"q":86,"a":87},"Hogyan szinkronizálok termékadatokat SAP-ból Pimcore-ba?","A változásokat eseményként vedd ki az SAP-ból ahelyett, hogy minden alkalommal a teljes anyagtörzset olvasnád, például change pointerekkel (a BD61 tranzakcióban aktiválva, az RBDMIDOC riport dolgozza fel), amelyek IDoc-okat állítanak elő. Tedd az üzeneteket üzenetsorba, importáld őket idempotens handlerrel, amely cikkszám alapján upsertel, és kihagyja azokat a rekordokat, amelyek tartalom-hash-e nem változott, és tarts meg egy ütemezett full egyeztetést biztonsági hálóként.",{"q":89,"a":90},"Mi a különbség a full sync és a delta sync között?","A full sync minden futásnál az összes rekordot beolvassa és összehasonlítja. Egyszerű és önjavító, de lassú, és terheli az ERP-t. A delta sync csak azt viszi át, ami az utolsó futás óta változott: gyors és olcsó, de észrevétlenül elcsúszhat, ha egy változás kimarad. A mindennapokban deltát futtatok, hetente vagy éjszakánként pedig full egyeztetést az elcsúszás kiszűrésére.",{"q":92,"a":93},"Hogyan észlelem a megváltozott rekordokat ERP és PIM között?","Négy lehetőség van: módosítási időbélyeg, forrásoldali események (SAP change pointer, Infor Sync BOD), change data capture az adatbázison, és egy magad számolt tartalom-hash. Az időbélyeg és az események megmondják, hová nézz, a hash pedig azt, hogy valóban változott-e valami lényeges. Az esemény vagy időbélyeg és a hash kombinációja adja a legjobb eredményt.",{"q":95,"a":96},"Használhat a Pimcore üzenetsort importokhoz?","Igen. A Pimcore a Symfony Messengert használja, és definiálja a háttérfeladatokhoz a pimcore_core sort, valamint egy opcionális pimcore_failed_jobs transportot a hibákhoz. Az alapértelmezett backend a Doctrine, támogatott még az AMQP (RabbitMQ) és a Redis. A dokumentáció élesben RabbitMQ-t javasol, a workerek indítása: bin\u002Fconsole messenger:consume pimcore_core.",{"q":98,"a":99},"Mit nyújt a Pimcore Data Importer delta importokhoz?","A Data Importer CSV, JSON, XML, XLSX és SQL forrásokat olvas, ütemezve, parancssorból vagy üzenetsoron keresztüli push-ra fut, és tartalmaz egy delta ellenőrzést, amely kihagyja a változatlan rekordokat, valamint egy cleanup funkciót, amely törli a forrásból kikerült objektumokat. Fájlalapú feedekhez jól illik. Eseményvezérelt ERP-folyamatokhoz, attribútumonkénti szabályokkal általában saját Messenger handlereket adok hozzá.",{"q":101,"a":102},"Hogyan találok Pimcore fejlesztőt SAP vagy ERP integrációhoz?","Olyat keress, aki élesben működő szinkront szállított, nem csak demót: kérdezd meg, hogyan kezeli az attribútumonkénti tulajdonlást, az idempotenciát, a hibás üzeneteket és a replayt. A Symfony Messenger, az ERP oldal (IDoc, BOD, OData vagy REST) és a másik végén lévő webshop ismerete többet számít bármelyik eszköznél.",[104,107,110,113,116,119,122,125,128,131,134],{"id":105,"title":106},"why-it-is-hard","Miért nehezebb ez a szinkron, mint amilyennek látszik",{"id":108,"title":109},"ownership","Először döntsd el, ki melyik attribútum tulajdonosa",{"id":111,"title":112},"data-flow","Az adatfolyam",{"id":114,"title":115},"delta-vs-full","Full vagy delta sync, és hogyan észlelj változást",{"id":117,"title":118},"idempotent-imports","Idempotens importok",{"id":120,"title":121},"queues","Üzenetsorok: Symfony Messenger a Pimcore-ban",{"id":123,"title":124},"quality-gates","Adatminőségi kapuk",{"id":126,"title":127},"monitoring-replays","Monitoring és replay",{"id":129,"title":130},"verify-2026","Mit ellenőrizz a Pimcore-ról 2026-ban",{"id":132,"title":133},"my-approach","Hogyan állok hozzá projektekben",{"id":135,"title":136},"sources","Források",[138,142,145,159,162,165,168,169,172,226,229,230,233,242,245,246,249,252,299,302,310,311,314,348,351,352,355,358,365,368,369,372,394,402,403,406,429,432,433,436,463,466,467,479,482,483],{"type":139,"content":140},"paragraph",[141],"Szinte minden B2B kereskedelmi projekt, amelyen dolgozom, ugyanarra a gerincre épül: egy ERP, például SAP vagy Infor, tartja a cikkek, árak és készletek igazságát, egy PIM, például a Pimcore, ebből az ügyfél számára érthető tartalmat csinál, a webshop pedig eladja. A három rendszer hétfőn egyetért, péntekre már nem. Amikor az értékesítő megkérdezi, miért mutat a shop régi árat, a válasz szinte soha nem az, hogy „elromlott a szinkron”. Hanem az, hogy senki nem döntötte el, kié a mező, mi számít változásnak, és mi történik, ha egy üzenet hibára fut.",{"type":139,"content":143},[144],"Ez a cikk azt a felépítést mutatja, amelyet ma használnék az ERP, a Pimcore és a webshop közötti szinkronhoz: először a tulajdonlás, aztán egy delta folyamat mellé tett full egyeztetés, olyan változásdetektálás, amely nem egyetlen jelre épít, idempotens handlerek egy üzenetsor mögött, minőségi kapuk, valamint a monitoring és replay eszközök, amelyektől üzemeltethető lesz. A végén rövid lista arról, mit ellenőrizz a Pimcore verzióival és kiadásaival kapcsolatban, mielőtt elköteleződsz, mert ez a terep 2026-ban mozgott.",{"type":139,"content":146},[147,148,153,154,158],"Ha AI réteget terveznél a tiszta termékadatokra, ugyanaz az alap számít: a strukturált, megbízható katalógusadatra épül mind az ",{"tag":149,"to":150,"children":151},"link","\u002Fblog\u002Fagentic-commerce-protocols-ucp-acp-guide",[152],"agentic commerce protokollok",", mind a ",{"tag":149,"to":155,"children":156},"\u002Fblog\u002Fgenerative-engine-optimization-audit",[157],"generative engine optimization",".",{"type":160,"level":161,"id":105,"text":106},"heading",2,{"type":139,"content":163},[164],"Papíron egy cső: olvasás az ERP-ből, írás a PIM-be, publikálás a shopba. A gyakorlatban négy probléma lapul benne. Az első a mennyiség és a ritmus: egy több százezer rekordos anyagtörzset nem lehet néhány percenként újraolvasni, de az árak és készletek folyamatosan változnak. A második, hogy a „változott” kétértelmű: egy ERP-rekordhoz hozzá lehet nyúlni anélkül, hogy a shop számára lényeges attribútum változna. A harmadik, hogy a rendszerek félúton elhasalnak: egy hálózati timeout, egy zárolt objektum vagy egy validációs hiba részben frissített, részben frissítetlen rekordokat hagy. A negyedik, hogy gyakran két rendszer írja ugyanazt a mezőt, és az utolsó írás véletlenül nyer.",{"type":139,"content":166},[167],"Mindegyikre van egy unalmas, jól ismert válasz. Az alábbi felépítés lényege, hogy ezeket következetesen alkalmazza, így a szinkron egy oldalon elmagyarázható és tíz perc alatt debugolható.",{"type":160,"level":161,"id":108,"text":109},{"type":139,"content":170},[171],"Mielőtt importkódot írnék, leírok egy tulajdonlási táblát: minden attribútumcsoportot, azt, hogy melyik rendszer az egyetlen író, és milyen irányba folyik az adat. Egy mezőnek pontosan egy tulajdonosa van. A többi rendszer olvashatja, megjelenítheti vagy gyorsítótárazhatja, de soha nem írhatja vissza. Ez az egy szabály kiküszöböli a legtöbb „pingpong” hibát, amikor egy import felülír egy kézi szerkesztést, vagy egy szerkesztő kijavít egy értéket, amelyet másnap éjjel megint felülírnak.",{"type":173,"head":174,"rows":183},"table",[175,177,179,181],[176],"Attribútumcsoport",[178],"Tulajdonos",[180],"Irány",[182],"Szabály",[184,193,201,210,217],[185,187,189,191],[186],"Cikkszám, alapmennyiségi egység, státusz, súlyok, GTIN",[188],"ERP",[190],"ERP → PIM",[192],"A PIM szerkesztőfelületén csak olvasható",[194,196,197,199],[195],"Árak, készlet, elérhetőség, ügyfélspecifikus feltételek",[188],[198],"ERP → shop",[200],"Gyakran megkerüli a PIM-et, vagy élőben kérdezik le",[202,204,206,208],[203],"Címek, leírások, képek, dokumentumok, fordítások",[205],"PIM",[207],"PIM → shop",[209],"Gondozás után már nem importálják az ERP-ből",[211,213,214,215],[212],"Osztályozás, szűrhető attribútumok, variánsok, cross-sell",[205],[207],[216],"Egyszer az ERP-ből feltöltve, utána a PIM birtokolja",[218,220,222,224],[219],"Rendezés, SEO URL, merchandising jelzők",[221],"Shop",[223],"A shopban marad",[225],"Nem szinkronizálják vissza",{"type":139,"content":227},[228],"Ez a felosztás tipikus, nem általános. Egyes cégek a hosszú szövegeket az ERP-ben tartják, mások a méreteket a PIM-ben. Az számít, hogy a táblád létezik, hogy a kód érvényesíti (az importnak egyszerűen nincs leképezése azokra a mezőkre, amelyek nem az övéi), és hogy a PIM felülete csak olvashatónak jelöli az ERP-s mezőket, hogy a szerkesztők ne próbálják módosítani őket. A szürke zónára, például egy névre, amely az ERP-ben indul és a PIM-ben csiszolódik, tedd egyértelművé az átadást: az ERP értéke egyszer feltölti a mezőt, és egy jelző rögzíti, hogy attól kezdve a PIM a tulajdonos.",{"type":160,"level":161,"id":111,"text":112},{"type":139,"content":231},[232],"Az általam használt forma egy rövid lánc, középen egy üzenetsorral és mellette egy hibaúttal. Az ERP oldal változásesemények állít elő; egy vékony kinyerő lépés normalizálja őket; az üzenetsor leválasztja az ERP sebességét a Pimcore sebességéről; a Pimcore ellenőriz, dúsít és tárol; a publikáló lépés pedig kiszolgálja a shopot.",{"type":234,"attrs":235,"inner":239,"caption":240},"diagram",{"viewBox":236,"role":237,"aria-labelledby":238},"0 0 740 290","img","d1-pimerp-t d1-pimerp-d","\u003Ctitle id=\"d1-pimerp-t\">Termékadatfolyam az ERP-től a shopig\u003C\u002Ftitle>\u003Cdesc id=\"d1-pimerp-d\">Öt doboz egy sorban: ERP, kinyerés, sor, Pimcore PIM és shop, nyilakkal összekötve, alattuk szaggatott doboz a hibasornak, a replaynek és az egyeztetésnek.\u003C\u002Fdesc>\u003Ctext x=\"20\" y=\"28\" class=\"d-title\">Termékadatfolyam az ERP-től a shopig\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"28\" text-anchor=\"end\" class=\"d-label\">ERP → PIM → shop\u003C\u002Ftext>\u003Crect x=\"20\" y=\"80\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"79\" y=\"114\" text-anchor=\"middle\" class=\"d-text\">ERP\u003C\u002Ftext>\u003Ctext x=\"79\" y=\"135\" text-anchor=\"middle\" class=\"d-small\">SAP vagy Infor\u003C\u002Ftext>\u003Cpath d=\"M138 118 H155.5\" class=\"d-line\" \u002F>\u003Cpath d=\"M163.5 118 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"163.5\" y=\"80\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"222.5\" y=\"114\" text-anchor=\"middle\" class=\"d-text\">Kinyerés\u003C\u002Ftext>\u003Ctext x=\"222.5\" y=\"135\" text-anchor=\"middle\" class=\"d-small\">delta + hash\u003C\u002Ftext>\u003Cpath d=\"M281.5 118 H299\" class=\"d-line\" \u002F>\u003Cpath d=\"M307 118 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"307\" y=\"80\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"366\" y=\"114\" text-anchor=\"middle\" class=\"d-text\">Sor\u003C\u002Ftext>\u003Ctext x=\"366\" y=\"135\" text-anchor=\"middle\" class=\"d-small\">Messenger\u003C\u002Ftext>\u003Cpath d=\"M425 118 H442.5\" class=\"d-line\" \u002F>\u003Cpath d=\"M450.5 118 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"450.5\" y=\"80\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"509.5\" y=\"114\" text-anchor=\"middle\" class=\"d-text\">Pimcore PIM\u003C\u002Ftext>\u003Ctext x=\"509.5\" y=\"135\" text-anchor=\"middle\" class=\"d-small\">kapuk, dúsítás\u003C\u002Ftext>\u003Cpath d=\"M568.5 118 H586\" class=\"d-line\" \u002F>\u003Cpath d=\"M594 118 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"594\" y=\"80\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"653\" y=\"114\" text-anchor=\"middle\" class=\"d-text\">Shop\u003C\u002Ftext>\u003Ctext x=\"653\" y=\"135\" text-anchor=\"middle\" class=\"d-small\">publikálás\u003C\u002Ftext>\u003Cpath d=\"M509.5 156 V196\" class=\"d-line d-dash\" \u002F>\u003Cpath d=\"M366 156 V196\" class=\"d-line d-dash\" \u002F>\u003Crect x=\"20\" y=\"196\" width=\"700\" height=\"46\" rx=\"10\" class=\"d-box d-dash\" \u002F>\u003Ctext x=\"370\" y=\"224\" text-anchor=\"middle\" class=\"d-small\">Hibasor · replay · éjszakai full egyeztetés · dashboardok\u003C\u002Ftext>\u003Ctext x=\"370\" y=\"272\" text-anchor=\"middle\" class=\"d-label\">Az ERP a kereskedelmi adatok, a PIM a tartalom tulajdonosa\u003C\u002Ftext>",[241],"A szinkron mint lánc, középen üzenetsorral. A hibaút, a replay eszközök és az egyeztetés mellette futnak, és a terv részei, nem utólagos ötlet.",{"type":139,"content":243},[244],"Három részlet teszi működőképessé ezt a formát. Először: a kinyerő lépés az egyetlen hely, amely ismeri az SAP-t vagy az Inforot: IDoc-ot, BOD-ot, OData-t vagy REST-et beszél, és egyetlen belső üzenetformátumot ad ki. Az ERP cseréje vagy egy második ERP így egyetlen komponenst érint. Másodszor: az üzenetsor valódi üzenetsor, nem egy tábla, amelyet pollozol, így a back-pressure-t és az újrapróbálkozásokat olyan infrastruktúra kezeli, amelyet nem te írtál. Harmadszor: a PIM nem publikál vakon: visszatart egy rekordot, ha elbukik egy kapun, és a shop csak azt látja, ami átment.",{"type":160,"level":161,"id":114,"text":115},{"type":139,"content":247},[248],"A full sync minden futásnál minden rekordot beolvas, és összehasonlít a meglévővel. Egyszerű, önjavító, és ez a megfelelő eszköz az első betöltéshez és az időszakos egyeztetéshez. Ugyanakkor lassú, és terheli az ERP-t. A delta sync csak azt viszi át, ami az utolsó sikeres futás óta változott. Gyors, de van egy hibamódja, amelyet a full sync nem ismer: ha egy változás kimarad, kimaradva is marad. Ezért mindkettőt használom: deltát a mindennapokra, ütemezett full egyeztetést az elcsúszás kiszűrésére.",{"type":139,"content":250},[251],"A nehezebb kérdés az, honnan tudod, hogy valami változott. Négy gyakori jel van, és egyik sem elég önmagában.",{"type":173,"head":253,"rows":262},[254,256,258,260],[255],"Jel",[257],"Működés",[259],"Erősség",[261],"Gyengeség",[263,272,281,290],[264,266,268,270],[265],"Módosítási időbélyeg",[267],"Az utolsó vízjel óta módosított rekordok lekérdezése",[269],"Könnyű megépíteni",[271],"Óraeltérés, visszadátumozott módosítások, nincs információ a törlésekről",[273,275,277,279],[274],"Forrásoldali események",[276],"Az SAP change pointerek IDoc-okat állítanak elő; az Infor ION Sync BOD-okat publikál az adat tulajdonosától",[278],"Magát a változást jelzi, a törléseket is",[280],"Beállítást és karbantartást igényel az ERP-n",[282,284,286,288],[283],"Change data capture",[285],"Egy eszköz, például a Debezium, sorszintű változásokat streamel commit sorrendben",[287],"Teljes és rendezett",[289],"Táblaszinten működik, nem üzleti szinten",[291,293,295,297],[292],"Tartalom-hash",[294],"A normalizált, releváns attribútumokat hasheled és összehasonlítod",[296],"Figyelmen kívül hagyja a lényegtelen érintéseket, ismételhető",[298],"Te számolod és tárolod",{"type":139,"content":300},[301],"Az SAP oldalon a change pointerek az alapvető mechanizmus törzsadatokhoz. A BD61 tranzakcióban általánosan, majd üzenettípusonként aktiválják őket, például MATMAS az anyagokhoz. Az RBDMIDOC riport (BD21 tranzakció) beolvassa a feldolgozatlan pointereket, IDoc-okat generál, és feldolgozottnak jelöli a pointereket, az RBDCPCLR (BD22) pedig eltávolítja a feldolgozottakat, hogy a BDCP és BDCPS táblák kicsik maradjanak. Mindkét jobot tervezd be; egy soha nem takarított delta feed saját teljesítményproblémává válik. Az Infor oldalon az ION business object documenteket irányít, a Sync BOD-ot pedig az adat tulajdonosa küldi minden olyan alkalmazásnak, amelynek szüksége van a változásra.",{"type":139,"content":303},[304,305,309],"Az alapértelmezésem ezért egy ",{"tag":306,"children":307},"strong",[308],"kétlépéses ellenőrzés",": egy esemény vagy vízjel megmondja, mely rekordokat nézzem meg, a normalizált, saját attribútumok hash-e pedig azt, hogy írjak-e. Hashelés előtt normalizálj: szóközök levágása, számformátumok és tizedesjegyek egységesítése, listák rendezése, és hagyd el azokat a mezőket, amelyekhez az ERP üzleti jelentés nélkül hozzányúl. Különben egy időbélyeg-frissítés az ERP-ben ezernyi értelmetlen írást és újraindexelést vált ki a Pimcore-ban.",{"type":160,"level":161,"id":117,"text":118},{"type":139,"content":312},[313],"Az üzenetküldő rendszerek legalább egyszer kézbesítenek. A Symfony egyértelműen dokumentálja: egy üzenet többször is kézbesíthető, ezért a handlereknek ismételten is biztonságosan kell futniuk. Újrapróbálkozással, worker-újraindítással és replayjel előbb-utóbb minden rekord kétszer feldolgozásra kerül. Az idempotencia nem optimalizáció, hanem követelmény.",{"type":315,"ordered":316,"items":317},"list",false,[318,323,328,333,338,343],[319,322],{"tag":306,"children":320},[321],"Stabil kulcs üzleti eseményenként."," A kulcsot az üzleti jelentésből képezd (cikkszám plusz ERP változásszám vagy tartalom-hash), soha nem a küldéskor generált véletlen azonosítóból.",[324,327],{"tag":306,"children":325},[326],"Upsert természetes kulcs alapján."," Keresd meg a Pimcore objektumot cikkszám alapján, és egyetlen handlerben frissítsd vagy hozd létre. Soha ne hozz létre vakon.",[329,332],{"tag":306,"children":330},[331],"Hash írás előtt."," Ha a beérkező saját attribútumok hash-e megegyezik a tárolttal, ne csinálj semmit. Ez az újraindexelést és a cache-érvénytelenítési viharokat is megállítja.",[334,337],{"tag":306,"children":335},[336],"Sorrendtűrés."," Vigyél magaddal a forrásból egy verziót vagy időbélyeget, és hagyd figyelmen kívül a tároltnál régebbi üzenetet. Az üzenetsorok nem garantálnak globális sorrendet.",[339,342],{"tag":306,"children":340},[341],"A törlés mint állapot."," A deaktiválást és a törlést forrásverziós státuszváltásként modellezd, ne hiányzó rekordként, hogy túlélje a replayt.",[344,347],{"tag":306,"children":345},[346],"Adatbázis-megkötés mint utolsó védvonal."," A cikkszámon lévő egyedi kulcs a két worker közötti versenyhelyzetből látható hibát csinál.",{"type":139,"content":349},[350],"A Pimcore Data Importer fájlalapú feedeknél ugyanezt az elvet követi: a resolvere eldönti, hogy egy rekord meglévő objektumot frissít-e vagy újat hoz létre, a delta ellenőrzés pedig kihagyja a változatlan rekordokat. Ha a feeded egy CSV vagy JSON az ERP-ből, ez talán elég is. Saját handlerhez akkor nyúlok, ha a folyamat eseményvezérelt, ha a tulajdonlás attribútumonként logikát igényel, vagy ha egy ERP-üzenet több Pimcore objektumra bomlik szét.",{"type":160,"level":161,"id":120,"text":121},{"type":139,"content":353},[354],"A Pimcore a Symfony Messengert használja háttérmunkához. A dokumentáció a pimcore_core sort definiálja a háttérfeladatokhoz, és egy opcionális pimcore_failed_jobs transportot a hibás üzenetekhez. A backendet a PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX környezeti változó választja: az alapértelmezett a Doctrine, támogatott az AMQP (RabbitMQ) és a Redis. A dokumentáció szerint élesben a RabbitMQ az ajánlott üzenetsor, a workerek pedig `bin\u002Fconsole messenger:consume pimcore_core` paranccsal futnak, supervisor vagy systemd felügyeletével.",{"type":139,"content":356},[357],"ERP szinkronhoz a pimcore_core mellé külön transportot vennék fel, hogy az árfrissítések hulláma ne éheztesse ki a szerkesztők saját háttérfeladatait, és sorokként méreteznék a workereket. A Symfony oldalon az újrapróbálkozást transportonként állítják (max_retries, delay, multiplier, max_delay, jitter); alapértelmezés szerint egy üzenetet háromszor próbálnak újra exponenciális visszalépéssel, mielőtt a failure transportba kerül. Gondold végig, mely hibák érdemelnek újrapróbálkozást: egy zárolt objektum vagy timeout igen, egy validációs hiba nem, mert az újrapróbálás csak a riasztást késlelteti.",{"type":359,"variant":360,"title":361,"body":362},"callout","tip","Ne tedd a teljes ERP-rekordot az üzenetbe",[363],[364],"Küldj kis üzenetet kulccsal, forrásverzióval és hash-sel, és hagyd, hogy a handler szükség esetén lekérje a teljes rekordot. A nagy payload felduzzasztja a sort, és mire az újrapróbálás lefut, a payload már elavult lehet. Egy vékony üzenet és friss olvasás könnyebben újrajátszható és könnyebben átlátható.",{"type":139,"content":366},[367],"Tartsd őszintén a sort. A messenger:stats megmutatja, hány üzenet vár transportonként, a failure transport pedig csak akkor ér valamit, ha valaki ránéz, és ezzel már a monitoringnál tartunk.",{"type":160,"level":161,"id":123,"text":124},{"type":139,"content":370},[371],"Az a szinkron, amely hűen másolja a rossz adatot, rosszabb annál, amelyik megáll. Kapukat teszek a „megérkezett” és a „publikált” közé, és az a rekord, amely elbukik egy kapun, visszatartva és jelentve van, sem eldobva, sem publikálva nem lesz.",{"type":315,"ordered":316,"items":373},[374,379,384,389],[375,378],{"tag":306,"children":376},[377],"Szerkezeti kapu:"," kötelező mezők megvannak, típusok és egységek érvényesek, a hivatkozott objektumok (márka, kategória, egység) léteznek.",[380,383],{"tag":306,"children":381},[382],"Üzleti kapu:"," értelmes tartományok (az ár nulla felett, a súly nem a medián tízezerszerese), értelmes státuszátmenetek, nincs hirtelen tömeges deaktiválás.",[385,388],{"tag":306,"children":386},[387],"Teljességi kapu:"," egy termék csak akkor kerül a shopba, ha a kötelező tartalom (cím, kép, fordítás) minden szükséges nyelven megvan.",[390,393],{"tag":306,"children":391},[392],"Mennyiségi kapu:"," ha egy futás a szokásosnál jóval több rekordot módosítana vagy törölne, állj meg és kérj megerősítést ahelyett, hogy alkalmaznád. Így elkapsz egy ERP-félrekonfigurálást, mielőtt kiüríti a shopodat.",{"type":139,"content":395},[396,397,401],"A kapuk egyértelmű státuszmodellt adnak: megérkezett, érvényes, dúsított, publikált, visszatartott. Ha LLM-et használsz dúsításra, például leírásvázlatokhoz vagy osztályozáshoz, a kimenetét kezeld újabb kapubemenetként, és teszteld úgy, mint bármely modellfunkciót, ahogy az ",{"tag":149,"to":398,"children":399},"\u002Fblog\u002Fllm-evals-for-product-features",[400],"LLM evalok termékfunkciókhoz"," című cikkben leírtam.",{"type":160,"level":161,"id":126,"text":127},{"type":139,"content":404},[405],"A szinkron mércéje nem az, hogyan viselkedik jó napokon, hanem hogy milyen gyorsan épülsz fel egy rossz napon. Éles indulás előtt négy dolgot akarok a helyén látni.",{"type":315,"ordered":407,"items":408},true,[409,414,419,424],[410,413],{"tag":306,"children":411},[412],"Hibasor gazdával."," A hibás üzenetek külön transportba kerülnek (a Pimcore-ban pimcore_failed_jobs). Megtekintés: messenger:failed:show, újrafuttatás: messenger:failed:retry, elvetés: messenger:failed:remove. Riaszts, ha a darabszám egy megadott időnél tovább nulla felett van.",[415,418],{"tag":306,"children":416},[417],"Késés és átbocsátás."," Sormélység transportonként, a legrégebbi üzenet kora és rekord per perc. Egy lapos vonal ugyanolyan gyanús, mint egy kiugrás.",[420,423],{"tag":306,"children":421},[422],"Replay parancs."," Egy cikkszám, időablak vagy ERP változásszám alapján újra kinyerni és újraküldeni. Mivel a handlerek idempotensek, a replay biztonságosan futtatható élesben.",[425,428],{"tag":306,"children":426},[427],"Egyeztetési riport."," A teljes összehasonlítás ERP és PIM között, amely a különbségeket listázza, nem csak megfelelt vagy nem. Éjszakánként vagy hetente futtasd, és nézd a trendet: a növekvő eltérésszám azt jelenti, hogy egy delta jel kimarad.",{"type":139,"content":430},[431],"Üzenetenként naplózz egy strukturált sort: kulcs, forrásverzió, hash, eredmény (írva, változatlanként kihagyva, kapu által visszatartva, hibás) és időtartam. A legtöbb támogatási kérdés ezután keresés lesz, nem nyomozás.",{"type":160,"level":161,"id":129,"text":130},{"type":139,"content":434},[435],"A Pimcore nemrég megváltoztatta a kiadási modelljét, és ennek egy része a tervezést is érinti. Ezeket a pontokat a projekt indulása előtt az aktuális dokumentációval vetném össze, nem emlékezetből feltételezném.",{"type":315,"ordered":407,"items":437},[438,443,448,453,458],[439,442],{"tag":306,"children":440},[441],"Platformverzió és támogatási időszak."," A Pimcore verziók Major.Minor sémát követnek, a minor verziók nagyjából negyedévente jelennek meg, és a 2026.1 óta minden modul a platform verziószámát viseli. A 2026.3 kiadás 2026. szeptember 29-én jelent meg, és nem LTS. Egy platformverzió közösségi támogatása a következő kiadásával ér véget.",[444,447],{"tag":306,"children":445},[446],"LTS cél."," A dokumentáció a 2025.4-et 2028 decemberéig, a 2024.4-et 2026 decemberéig LTS-ként sorolja fel. Egy hosszú életű B2B shophoz LTS vonalra terveznék, vagy rendszeres minor frissítéseket költségvetnék.",[449,452],{"tag":306,"children":450},[451],"Kiadás és modulok."," A Data Hub és a Data Importer a Community kiadásban szerepel; a Professional a TinyMCE szerkesztőt adja hozzá; az Enterprise minden modult tartalmaz, például a Workflow Designert és az E-Commerce Frameworköt. Ellenőrizd, a terved ténylegesen mely modulokra épül, és ezekhez milyen kiadás és licenc kell.",[454,457],{"tag":306,"children":455},[456],"Release notes, nem csak verziószámok."," A 2026.3 jegyzetei biztonsági javításokat és a régi admin controllerek Studio API javára történő eltávolítását említik. Ha saját admin kódod vagy integrációid vannak, előbb olvasd el az upgrade notesokat.",[459,462],{"tag":306,"children":460},[461],"Messenger beállítás."," Ellenőrizd a transport DSN prefixet, a failure transport konfigurációt, és azt, hogyan felügyelik a workereket a hostingodon, mert itt dől el a szinkron megbízhatósága.",{"type":139,"content":464},[465],"Árakat és támogatási szerződési részleteket szándékosan nem idézek: ezek a Pimcore-ral vagy a partnereddel kötött megállapodásodtól függenek, és változnak.",{"type":160,"level":161,"id":132,"text":133},{"type":139,"content":468},[469,470,474,475,158],"Ez a felépítés az, ahogy egy Pimcore és SAP delta szinkronra gondolok, és van egy Pimcore plusz SAP delta-szinkron referenciaprojektem, amelyet a ",{"tag":149,"to":471,"children":472},"\u002Freferences",[473],"referenciák oldalon"," találsz. Ha Pimcore fejlesztőt keresel SAP vagy Infor integrációhoz, PIM-ERP interfészhez, vagy egy elcsúszó szinkron átvizsgálásához, nézd meg a ",{"tag":149,"to":476,"children":477},"\u002Fexpertise\u002Fb2b-ecommerce-developer",[478],"B2B e-commerce fejlesztő profilomat",{"type":139,"content":480},[481],"A tanácsom röviden: írd meg először a tulajdonlási táblát, tegyél minden handlert idempotenssé, hasheld, ami a tiéd, tegyél üzenetsort és hibautat a közepére, és gyakorold a replayt, mielőtt szükséged lenne rá.",{"type":160,"level":161,"id":135,"text":136},{"type":315,"ordered":407,"items":484},[485,489,492,495,498,501,504,507,510,513,516],[486],{"tag":487,"href":36,"children":488},"a",[35],[490],{"tag":487,"href":39,"children":491},[38],[493],{"tag":487,"href":42,"children":494},[41],[496],{"tag":487,"href":45,"children":497},[44],[499],{"tag":487,"href":48,"children":500},[47],[502],{"tag":487,"href":51,"children":503},[50],[505],{"tag":487,"href":54,"children":506},[53],[508],{"tag":487,"href":57,"children":509},[56],[511],{"tag":487,"href":60,"children":512},[59],[514],{"tag":487,"href":63,"children":515},[62],[517],{"tag":487,"href":66,"children":518},[65],[520,606,663,751],{"slug":521,"published":5,"minutes":522,"category":7,"tags":523,"keywords":528,"about":539,"sources":548,"cover":600,"og":601,"expertise":69,"locales":602,"lang":73,"title":603,"description":604,"coverAlt":605},"european-accessibility-act-b2b-shop",13,[524,525,526,527],"European Accessibility Act","BFSG","WCAG 2.2","B2B e-commerce",[529,530,531,532,533,534,535,536,537,538],"European Accessibility Act B2B shop","BFSG B2B Onlineshop","Barrierefreiheit Onlineshop","Spryker barrierefrei","barrierefrei Webshop","BaFG Österreich Webshop","EN 301 549 WCAG 2.2","BFSG Kleinstunternehmen Ausnahme","Pimcore TYPO3 Barrierefreiheit","EAA e-commerce checklist",[540,542,545],{"name":524,"url":541},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEuropean_Accessibility_Act",{"name":543,"url":544},"Web Content Accessibility Guidelines","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWeb_Content_Accessibility_Guidelines",{"name":546,"url":547},"E-commerce","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FE-commerce",[549,552,555,558,561,564,567,570,573,576,579,582,585,588,591,594,597],{"title":550,"url":551},"BFSG section 1: purpose and scope (gesetze-im-internet.de)","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__1.html",{"title":553,"url":554},"BFSG section 2: definitions, consumer, microenterprise, e-commerce services","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__2.html",{"title":556,"url":557},"BFSG section 3: accessibility and the microenterprise exemption","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__3.html",{"title":559,"url":560},"BFSG section 14: duties of the service provider","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__14.html",{"title":562,"url":563},"BFSG section 32: rights of consumers and associations in the administrative procedure","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__32.html",{"title":565,"url":566},"BFSG section 37: fines","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__37.html",{"title":568,"url":569},"BFSG section 38: transitional provisions","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F__38.html",{"title":571,"url":572},"Bundesfachstelle Barrierefreiheit: FAQ on the BFSG (B2B, microenterprises, EN 301 549)","https:\u002F\u002Fwww.bundesfachstelle-barrierefreiheit.de\u002FDE\u002FFachwissen\u002FProdukte-und-Dienstleistungen\u002FBarrierefreiheitsstaerkungsgesetz\u002FFAQ\u002Ffaq_node.html",{"title":574,"url":575},"AccessibleEU: The European accessibility standard EN 301 549 has been updated (7 September 2026)","https:\u002F\u002Faccessible-eu-centre.ec.europa.eu\u002Fcontent-corner\u002Fnews\u002Feuropean-accessibility-standard-en-301-549-has-been-updated-2026-09-07_en",{"title":577,"url":578},"W3C: Web Content Accessibility Guidelines (WCAG) 2.2","https:\u002F\u002Fwww.w3.org\u002FTR\u002FWCAG22\u002F",{"title":580,"url":581},"Deque: Automated testing identifies 57 percent of digital accessibility issues","https:\u002F\u002Fwww.deque.com\u002Fblog\u002Fautomated-testing-study-identifies-57-percent-of-digital-accessibility-issues\u002F",{"title":583,"url":584},"sitebrunch: What is the market surveillance authority for accessibility (MLBF)?","https:\u002F\u002Fwww.sitebrunch.com\u002Fnews\u002Fmlbf-marktueberwachungsstelle-barrierefreiheit",{"title":586,"url":587},"Marcus Herrmann: June 2026, how the MLBF intends to check","https:\u002F\u002Fmarcus-herrmann.com\u002Fblog\u002Fmlbf-verraet-wie-sie-pruefen-will",{"title":589,"url":590},"axes4: BFSG in practice, what has happened since the deadline (2026)","https:\u002F\u002Fwww.axes4.com\u002Fde\u002Fblog\u002Fpost\u002F2026\u002Fbfsg-in-der-praxis-was-sich-seit-dem-stichtag-getan-hat",{"title":592,"url":593},"ODC Legal: BFSG for websites, what companies must check in 2026","https:\u002F\u002Fwww.odclegal.de\u002Fblog\u002Fbfsg-website-pflicht",{"title":595,"url":596},"WKO: Information on the Austrian Barrierefreiheitsgesetz","https:\u002F\u002Fwww.wko.at\u002Fce-kennzeichnung-normen\u002Finformationen-zum-barrierefreiheitsgesetz",{"title":598,"url":599},"Web Crossing: One year of the Barrierefreiheitsgesetz, where online shops must improve","https:\u002F\u002Fwww.web-crossing.com\u002Fnews\u002Fdetail\u002Fein-jahr-barrierefreiheitsgesetz-wo-onlineshops-und-websites-jetzt-nachbessern-muessen\u002F","\u002Fimages\u002Fblog\u002Feuropean-accessibility-act-b2b-shop\u002Fcover.webp","\u002Fimages\u002Fblog\u002Feuropean-accessibility-act-b2b-shop\u002Fog.jpg",[71,72,73],"European Accessibility Act B2B webshopoknál: mit kell javítaniuk a Spryker, Pimcore és TYPO3 csapatoknak","Vonatkozik az European Accessibility Act a B2B webshopokra? BFSG és BaFG hatálya, mikrovállalkozási mentesség, 2026-os végrehajtás, WCAG 2.2 és javítási terv.","Ábra: egy B2B webshop elágazik a BFSG és BaFG fogyasztói hatályának kérdésére, a WCAG 2.2 AA megfelelésre, az akadálymentességi nyilatkozatra és a piacfelügyeletre.",{"slug":607,"published":5,"minutes":6,"category":7,"tags":608,"keywords":612,"about":623,"sources":630,"cover":657,"og":658,"expertise":69,"locales":659,"lang":73,"title":660,"description":661,"coverAlt":662},"headless-product-configurator-b2b",[609,527,610,611],"Product configurator","Nuxt","Headless commerce",[613,614,615,616,617,618,619,620,621,622],"B2B product configurator","Produktkonfigurator","Produktkonfigurator TYPO3","B2B Konfigurator","headless product configurator","CPQ configure price quote","rule engine vs constraint solver","Nuxt Spryker Glue API","product configurator 100000 variants","accessible product configurator",[624,626,628],{"name":609,"url":625},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct_configurator",{"name":611,"url":627},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_commerce",{"name":610,"url":629},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNuxt",[631,633,636,639,642,645,648,651,654],{"title":632,"url":625},"Wikipedia: Knowledge-based configuration (product configurator)",{"title":634,"url":635},"Google OR-Tools: The CP-SAT solver","https:\u002F\u002Fdevelopers.google.com\u002Foptimization\u002Fcp\u002Fcp_solver",{"title":637,"url":638},"Spryker documentation: Glue API, Product Configuration feature integration","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fscos\u002Fdev\u002Ffeature-integration-guides\u002F202108.0\u002Fglue-api\u002Fglue-api-product-configuration-feature-integration.html",{"title":640,"url":641},"OWASP: Input Validation Cheat Sheet","https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FInput_Validation_Cheat_Sheet.html",{"title":643,"url":644},"web.dev: Virtualize large lists","https:\u002F\u002Fweb.dev\u002Farticles\u002Fvirtualize-long-lists-react-window",{"title":646,"url":647},"W3C: Understanding SC 3.3.1 Error Identification (WCAG 2.2)","https:\u002F\u002Fwww.w3.org\u002FWAI\u002FWCAG22\u002FUnderstanding\u002Ferror-identification.html",{"title":649,"url":650},"W3C: Understanding SC 4.1.3 Status Messages (WCAG 2.2)","https:\u002F\u002Fwww.w3.org\u002FWAI\u002FWCAG22\u002FUnderstanding\u002Fstatus-messages.html",{"title":652,"url":653},"W3C: Understanding SC 2.5.8 Target Size (Minimum) (WCAG 2.2)","https:\u002F\u002Fwww.w3.org\u002FWAI\u002FWCAG22\u002FUnderstanding\u002Ftarget-size-minimum.html",{"title":655,"url":656},"W3C WAI-ARIA Authoring Practices: Combobox pattern","https:\u002F\u002Fwww.w3.org\u002FWAI\u002FARIA\u002Fapg\u002Fpatterns\u002Fcombobox\u002F","\u002Fimages\u002Fblog\u002Fheadless-product-configurator-b2b\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fheadless-product-configurator-b2b\u002Fog.jpg",[71,72,73],"Headless B2B termékkonfigurátor: szabályok, árazás és Nuxt egy commerce API-n","Így építs headless B2B termékkonfigurátort: szabálymotor vagy solver, hol éljenek a szabályok, szerveroldali árazás, Nuxt commerce API-n, TYPO3, 100 ezer+ variáns.","Ábra: egy Nuxt front end egy konfigurációs szolgáltatással beszél, amely a PIM-ből a szabályokat, az ERP-ből az árakat olvassa, és validált konfigurációt ad át a commerce API-nak.",{"slug":664,"published":5,"minutes":522,"category":7,"tags":665,"keywords":668,"about":679,"sources":686,"cover":744,"og":745,"expertise":746,"locales":747,"lang":73,"title":748,"description":749,"coverAlt":750},"nuxt-core-web-vitals-performance",[666,610,667,546],"Core Web Vitals","Performance",[669,670,671,672,673,674,675,676,677,678],"Core Web Vitals Nuxt","Nuxt performance optimization","improve LCP Nuxt","INP Nuxt hydration","fix CLS Vue","Nuxt lazy hydration","Nuxt Image LCP","Nuxt Scripts third-party scripts","Nuxt prerender vs SSR vs ISR","Core Web Vitals e-commerce",[680,682,683],{"name":666,"url":681},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCore_Web_Vitals",{"name":610,"url":629},{"name":684,"url":685},"Vue.js","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVue.js",[687,690,693,696,699,702,705,708,711,714,717,720,723,726,729,732,735,738,741],{"title":688,"url":689},"web.dev: Web Vitals","https:\u002F\u002Fweb.dev\u002Farticles\u002Fvitals",{"title":691,"url":692},"web.dev: Largest Contentful Paint (LCP)","https:\u002F\u002Fweb.dev\u002Farticles\u002Flcp",{"title":694,"url":695},"web.dev: Optimize Largest Contentful Paint","https:\u002F\u002Fweb.dev\u002Farticles\u002Foptimize-lcp",{"title":697,"url":698},"web.dev: Interaction to Next Paint (INP)","https:\u002F\u002Fweb.dev\u002Farticles\u002Finp",{"title":700,"url":701},"web.dev: Optimize Cumulative Layout Shift","https:\u002F\u002Fweb.dev\u002Farticles\u002Foptimize-cls",{"title":703,"url":704},"web.dev: Optimize long tasks","https:\u002F\u002Fweb.dev\u002Farticles\u002Foptimize-long-tasks",{"title":706,"url":707},"Chrome for Developers: Chrome UX Report (CrUX)","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fcrux",{"title":709,"url":710},"Chrome for Developers: CrUX methodology","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fcrux\u002Fmethodology",{"title":712,"url":713},"GitHub: GoogleChrome\u002Fweb-vitals","https:\u002F\u002Fgithub.com\u002FGoogleChrome\u002Fweb-vitals",{"title":715,"url":716},"Nuxt docs: Rendering modes","https:\u002F\u002Fnuxt.com\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering",{"title":718,"url":719},"Nuxt docs: Components (Lazy prefix, delayed hydration, client components)","https:\u002F\u002Fnuxt.com\u002Fdocs\u002F4.x\u002Fguide\u002Fdirectory-structure\u002Fapp\u002Fcomponents",{"title":721,"url":722},"Nuxt docs: Experimental features (lazyHydration, payloadExtraction)","https:\u002F\u002Fnuxt.com\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features",{"title":724,"url":725},"Nuxt docs: Data fetching (pick, transform, lazy)","https:\u002F\u002Fnuxt.com\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdata-fetching",{"title":727,"url":728},"Nuxt blog: Nuxt 4.5","https:\u002F\u002Fnuxt.com\u002Fblog\u002Fv4-5",{"title":730,"url":731},"GitHub: Nuxt releases","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Freleases",{"title":733,"url":734},"Nuxt Image: NuxtImg","https:\u002F\u002Fimage.nuxt.com\u002Fusage\u002Fnuxt-img",{"title":736,"url":737},"Nuxt Fonts module","https:\u002F\u002Fnuxt.com\u002Fmodules\u002Ffonts",{"title":739,"url":740},"Nuxt Scripts: Getting started","https:\u002F\u002Fscripts.nuxt.com\u002Fdocs\u002Fgetting-started",{"title":742,"url":743},"Nuxt Scripts: Script triggers","https:\u002F\u002Fscripts.nuxt.com\u002Fdocs\u002Fguides\u002Fscript-triggers","\u002Fimages\u002Fblog\u002Fnuxt-core-web-vitals-performance\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fnuxt-core-web-vitals-performance\u002Fog.jpg","vue-nuxt-developer",[71,72,73],"Core Web Vitals Nuxt oldalakhoz és webshopokhoz: LCP, INP és CLS javítása","Így javítsd az LCP-t, az INP-t és a CLS-t Nuxt 4 oldalakon és webshopokban: képek, hydration, fontok, külső szkriptek, prerender vs. SSR vs. ISR, mérés valódi felhasználókkal.","Diagram: egy Nuxt oldalbetöltés a szerver HTML-jétől a hero képen, a hydration-ön és az interakción át, az LCP, INP és CLS küszöbértékeivel a szakaszokon.",{"slug":752,"published":753,"minutes":754,"category":7,"tags":755,"keywords":761,"about":770,"sources":779,"cover":792,"og":793,"expertise":746,"locales":794,"lang":73,"title":795,"description":796,"coverAlt":797},"home-assistant-ev-charging-energy-manager","2026-09-29",9,[756,757,758,759,760],"Home Assistant","EPEX Spot","Energy prices","Tesla","Energy management",[762,763,764,765,766,767,768,769],"EPEX Austria prices","spot tariff Austria EV charging","Home Assistant EV charging","cheapest hours charging","day-ahead price Austria","negative electricity prices Austria","Tesla charging spot prices","load management 3 phase",[771,774,776],{"name":772,"url":773},"EPEX SPOT","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEPEX_SPOT",{"name":756,"url":775},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHome_Assistant",{"name":777,"url":778},"Load management","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLoad_management",[780,783,786,789],{"title":781,"url":782},"aWATTar Austria: market data API","https:\u002F\u002Fwww.awattar.at\u002Fservices\u002Fapi",{"title":784,"url":785},"EPEX SPOT: market results","https:\u002F\u002Fwww.epexspot.com\u002Fen\u002Fmarket-results",{"title":787,"url":788},"Home Assistant developer docs: apps","https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Fapps\u002F",{"title":790,"url":791},"Home Assistant: Tesla Fleet integration","https:\u002F\u002Fwww.home-assistant.io\u002Fintegrations\u002Ftesla_fleet\u002F","\u002Fimages\u002Fblog\u002Fhome-assistant-ev-charging-energy-manager\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fhome-assistant-ev-charging-energy-manager\u002Fog.jpg",[71,72,73],"Töltés EPEX ausztriai árakon: mennyit spórol a Home Assistant appom","Egy év órás EPEX ár Ausztriára, újrajátszva egy Teslára és egy bojlerre: a legolcsóbb órákban 6,5 ct\u002FkWh a töltés 18,9 helyett, évi közel 590 €, a 20 A-es biztosíték kiégetése nélkül.","Borítókép: három oszlop hasonlítja össze a 18,9, 13,1 és 6,5 ct\u002FkWh-t 18:00-kori, éjszakai és legolcsóbb órás töltésnél.",1791009036561]