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.

30 minut · ERP integrace

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

  1. Pro produkty, ceny, zásoby, zákazníky, objednávky, expedice a doklady určuj autoritativní systém samostatně.
  2. Vytvoř mapování internal_id ↔ system ↔ external_id s unikátním constraintem. Nepáruj dlouhodobě podle názvu ani měnitelného SKU.
  3. Sklad rozliš na fyzický stav, rezervace a available to sell. Do e-shopu neposílej jediný údaj bez definice jeho významu.
  4. 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

  1. Kontrakt verzuj a popiš schématem: povinná pole, desetinná čísla, ISO 8601 časy, stránkování, mazání a význam stavů.
  2. 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.
  3. Odchozí objednávky zapisuj do transactional outboxu. Webhook ověř podpisem, časovým oknem a ID události.
  4. 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

  1. Každý importovaný záznam zpracuj podle stabilního ID a verze. Starší změna nesmí přepsat novější stav.
  2. Při exportu objednávky pošli idempotency key a ulož externí ID odpovědi. Timeout neznamená, že ERP operaci neprovedlo.
  3. Periodický reconciliation job porovná počty, kontrolní součty nebo změněné entity a opraví událost ztracenou na kterékoli straně.
  4. 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.

  1. 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
  2. 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.

  3. 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.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.