Praktický návod
Jak napojit e-shop na skladový nebo ERP systém
Urči vlastníka každého údaje a postav integraci, která zvládne duplicitu, výpadek i pozdě doručenou změnu.
Nejdřív stručně
Synchronizace potřebuje autoritu, ne posledního zapisujícího
Nejdřív rozhodni, zda cenu, sklad, produkt, objednávku a doklad vlastní e-shop, ERP, nebo jiný systém. Obousměrné last-write-wins bez tohoto pravidla tiše přepisuje správná data.
Integrace je samostatná aplikační hranice. Překládá interní model na verzovaný API kontrakt, udržuje mapování ID a zaznamená každou synchronizační operaci.
Připrav si
Sepiš datovou smlouvu
Mapovací tabulka odhalí rozdíly v jednotkách, stavech a odpovědnosti dřív než první ostrý import.
- Matici source of truth pro entity a důležitá pole včetně směru synchronizace.
- Stabilní interní a externí ID, jednotky, měny, časové zóny, enum hodnoty a pravidla pro null.
- Sandbox nebo testovací účet ERP s realistickými limity, stránkováním a chybami.
- Vlastníka provozu, metriky čerstvosti dat, alerty a ruční postup pro opravu konfliktu.
Kroky 1 až 3
Navrhni synchronizaci jako opakovatelný proces
Každý krok může běžet znovu. Úspěch se pozná podle uloženého výsledku, ne podle toho, že požadavek jednou odešel.
1. Urči vlastnictví a identitu dat
- Pro produkty, ceny, zásoby, zákazníky, objednávky, expedice a doklady určuj autoritativní systém samostatně.
- Vytvoř mapování internal_id ↔ system ↔ external_id s unikátním constraintem. Nepáruj dlouhodobě podle názvu ani měnitelného SKU.
- Sklad rozliš na fyzický stav, rezervace a available to sell. Do e-shopu neposílej jediný údaj bez definice jeho významu.
- Objednávka si uchová snapshot ceny, daně, adresy a položek; pozdější změna ERP katalogu historii nepřepíše.
UNIQUE (external_system, external_id) Oficiální PostgreSQL dokumentace ke constraintům 2. Stabilizuj API kontrakt a přenos
- Kontrakt verzuj a popiš schématem: povinná pole, desetinná čísla, ISO 8601 časy, stránkování, mazání a význam stavů.
- Velký první import čti po dávkách. Změny pak přenášej událostí nebo watermarkem updated_at doplněným periodickým úplným porovnáním.
- Odchozí objednávky zapisuj do transactional outboxu. Webhook ověř podpisem, časovým oknem a ID události.
- Nastav krátké timeouty, rate limit, exponenciální retry s jitterem a correlation ID viditelné na obou stranách.
GET /products?updated_after=...&cursor=... HTTP Semantics — RFC 9110 3. Přidej idempotenci a reconciliation
- Každý importovaný záznam zpracuj podle stabilního ID a verze. Starší změna nesmí přepsat novější stav.
- Při exportu objednávky pošli idempotency key a ulož externí ID odpovědi. Timeout neznamená, že ERP operaci neprovedlo.
- Periodický reconciliation job porovná počty, kontrolní součty nebo změněné entity a opraví událost ztracenou na kterékoli straně.
- Nevalidní data dej do karantény s důvodem. Jedna chybná položka nesmí zablokovat celou synchronizační dávku.
php bin/console app:erp:reconcile --since="-1 day" Oficiální Symfony HttpClient dokumentace Krok 4
Ověř hranice integrace
Vedle správného payloadu testuj pořadí, duplicity, částečné chyby a několikahodinový výpadek.
-
Spusť kontraktní test
Vzorky z ERP projdou validací schématu a mapováním jednotek, měn, časů i enumů.
php bin/phpunit --testsuite=erp-contract -
Doruč změny mimo pořadí a dvakrát
Výsledný produkt, zásoba i objednávka odpovídají nejnovější verzi a nevzniknou duplicity.
-
Odpoj ERP a znovu ho připoj
Fronta nepřeteče, retry nezahltí službu a reconciliation doplní všechna chybějící data.
Když to zlobí
Nejčastější chyby
Vznikají duplicitní produkty
Párování stojí na měnitelném SKU nebo názvu. Udržuj stabilní mapovací tabulku a databázový unique constraint.
Sklad pravidelně skáče zpět
Oba systémy se považují za autoritu. Urči vlastníka zásoby a odděl fyzický stav od rezervací e-shopu.
Po timeoutu vznikla objednávka v ERP dvakrát
Opakování nemá idempotency key. Použij stabilní klíč objednávky a před vytvořením zkontroluj uložené externí ID.
Synchronizace je zelená, ale data jsou stará
Měříš jen běh procesu. Sleduj lag poslední potvrzené změny a pravidelně prováděj reconciliation.
Hotovo
Integrace má jasnou autoritu i cestu k opravě.
Stabilní identity, verzovaný kontrakt, idempotentní přenos a pravidelné porovnání drží e-shop a ERP konzistentní i při výpadcích.