feat(129): erli status mapping sync

Phase 129 complete:
- Add Erli pull/push status mapping tables, seeds and repositories
- Wire Erli status sync cron for inbox pull and manual-only push
- Add tabbed Erli settings UI, tests and documentation

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-16 00:27:08 +02:00
parent c127ebf04d
commit 7972bb9fa4
28 changed files with 2021 additions and 57 deletions

View File

@@ -374,6 +374,7 @@ UNIQUE: `(integration_id, shoppro_status_code)`
| `last_synced_external_order_id` | VARCHAR(128) | YES | Legacy/source-specific cursor |
| `last_run_at` | DATETIME | YES | |
| `last_success_at` | DATETIME | YES | |
| `last_status_pushed_at` | DATETIME | YES | Erli status push cursor for manual local status changes |
| `last_error` | VARCHAR(500) | YES | |
| `created_at` | DATETIME | NO | |
| `updated_at` | DATETIME | NO | |
@@ -524,6 +525,26 @@ UNIQUE: `(type, name)`
| `created_at` | DATETIME | |
| `updated_at` | DATETIME | |
**erli_order_status_mappings** — orderPRO status → Erli status used for status push
| Column | Type | Notes |
|--------|------|-------|
| `id` | INT UNSIGNED | PK |
| `erli_status_code` | VARCHAR(64) | UNIQUE; official values include `created`, `canceled`, `readyToProcess`, `inProgress`, `sent`, `readyToPickup`, `received`, `returned`, `returningToSender`, `unknown` |
| `erli_status_name` | VARCHAR(120) | Optional display label |
| `orderpro_status_code` | VARCHAR(64) | Nullable; empty mapping means push skips that orderPRO status |
| `created_at` | DATETIME | |
| `updated_at` | DATETIME | |
**erli_order_status_pull_mappings** — Erli status → orderPRO status used during `/inbox` import
| Column | Type | Notes |
|--------|------|-------|
| `id` | INT UNSIGNED | PK |
| `erli_status_code` | VARCHAR(64) | UNIQUE; seeded with `pending`, `purchased`, `cancelled` and extended by discovery |
| `erli_status_name` | VARCHAR(120) | Optional display label |
| `orderpro_status_code` | VARCHAR(64) | Nullable; if missing, mapper uses safe Phase 128 defaults |
| `created_at` | DATETIME | |
| `updated_at` | DATETIME | |
**allegro_delivery_method_mappings** — Map order delivery method strings to Allegro services
| Column | Type | Notes |
|--------|------|-------|
@@ -952,7 +973,7 @@ Index: `(status, priority, scheduled_at)`
| `created_at` | DATETIME | NO | |
| `updated_at` | DATETIME | NO | |
Seeded recurring jobs include `shoppro_orders_import`, `allegro_orders_import`, `shoppro_order_status_sync`, `shoppro_payment_status_sync`, `allegro_status_sync`, `shipment_tracking_sync`, `automation_history_cleanup`, `order_status_aged`, and `erli_orders_import` (Phase 128; default disabled until Erli order import is enabled).
Seeded recurring jobs include `shoppro_orders_import`, `allegro_orders_import`, `shoppro_order_status_sync`, `shoppro_payment_status_sync`, `allegro_status_sync`, `shipment_tracking_sync`, `automation_history_cleanup`, `order_status_aged`, `erli_orders_import` (Phase 128; default disabled until Erli order import is enabled), and `erli_status_sync` (Phase 129; default disabled until Erli settings save enables it).
---