Zum Inhalt
PDF

Shop Management Interface

Web-Applikation zur Ausführung und Planung von Synchronisationen.

Rahmendaten

Zur Installation wird die ess.exe benötigt. Für diese Datei ist die Config-Datei management.ini essenziell. Dieser liegt in dem gleichen Ordner wie die ess.exe Datei.

Die Datei wird beim Ausführen von ess.exe --init automatisch mit Standardwerten erstellt, sofern sie noch nicht existiert. Vor dem ersten Start müssen in der management.ini Datei einige Änderungen vorgenommen werden. Diese Config-Datei ist folgendermaßen aufgebaut.

management.ini

Die Kategorien ACTIVE und SHOPS bilden den Grundbaustein der zu ansteuerenden Shops. Je nach Wunsch können neue Shops als Keys aufgenommen oder gelöscht werden.

In der SHOPS Kategorie wird jedem Shop der Pfad zu seiner config.ini zugewiesen. Die Shop-URL wird automatisch aus der jeweiligen config.ini ([SHOP]url) ausgelesen. Der Launcher-Pfad (ess.exe bzw. Python) wird automatisch bestimmt.


Beispiel: Einen Shop hinzufügen
[ACTIVE]
default = mostwanted

[SHOPS]
mostwanted = C:\Program Files\energy shop-sync\config.ini

Die URL des Shops (z.B. https://shop.example.de/) wird automatisch aus der hinterlegten config.ini ([SHOP]url) ausgelesen und im Interface angezeigt.

Beispiel: Mehrere Shops
[ACTIVE]
default = local

[SHOPS]
local = conf\config.ini
mostwanted = C:\Program Files\energy shop-sync\config.ini

Weitere Kategorien sind für die Funktionsweise der Syncs notwendig und können angepasst werden.

[TIMER]

Parameter Defaultwert Beschreibung
wakeup 1300 Timer zum Abchecken der Sync-Warteschlange in Sekunden-Intervall
overtimekill 85500 Maximale Laufzeit eines Syncs in Sekunden bevor er abgebrochen wird

Synceinstellungen sind Shop-abhängig, d.h. für jeden Shop ist eine Config-Kategorie notwendig bei der der Sektionsname dem Shopnamen in Großbuchstaben entspricht.

Vom obigen Beispiel also:

[MOSTWANTED]

Parameter Defaultwert /Wert wenn Aktiv Beschreibung
debuglvl -d Debug-Level (-d=ERROR, -dd=WARNING, -ddd=INFO, -dddd=DEBUG)
-wc -wc Sync ohne Kategorien. Value frei lassen falls mit Kategorien.
-wa -wa Sync ohne Attribute. Value frei lassen falls mit Attributen.
-to -to wl Target-Option für den Sync
-we -we Sync ohne Eigenschaften. Value frei lassen falls mit Eigenschaften.
Beispiel: Shop-Einstellungen
[LOCAL]
debuglvl = -d
-wc = -wc
-wa = -wa
-we = -we
-m =
-ai =
-to = -to wl

[MOSTWANTED]
debuglvl = -dddd
-wc = -wc
-wa = -wa
-we = -we
-m =
-ai =
-to = -to wl

Zusätzlich ist es möglich einzelne Synchronisationsarten auszublenden. Der Defaultwert, wenn der Sync aktiv sein soll: Key = Value. Falls diese ausgeblendet werden sollen, muss der jeweilige Value einer Syncart freigelassen werden.

[SYNCRENAME]

Steuert, welche Sync-Kacheln auf dem Dashboard angezeigt werden und wie sie beschriftet sind. Die Reihenfolge der Zeilen bestimmt zugleich die Default-Reihenfolge der Kacheln, sofern keine [DASHBOARD]-Sektion (siehe unten) definiert ist.

Parameter Defaultwert Beschreibung
syncProductsAndPrices Artikel & Preise Combo-Sync: Artikel und anschließend Preise
syncCustomersAndOrders Kunden & Bestellungen Combo-Sync: Kunden und anschließend Bestellungen
syncProducts Artikel Der Artikel-Sync
syncProductsAll Artikel[–all] Artikel-Sync mit –all Flag
syncPrices Preise Synchronisiert die Preise
syncOrders Bestellungen Der Bestellungen-Sync
syncCustomers Kunden Synchronisiert die Kunden-Daten
syncCategories Kategorien Der Kategorien-Sync
syncAttr Eigenschaften Synchronisiert die Eigenschaften
syncCross Cross-Artikel Synchronisiert die Cross-Selling-Artikel
syncBestand Bestand Synchronisiert die Bestände
syncProperties Properties Synchronisiert die Properties
syncImages Bilder Synchronisiert die Bilder
syncDownloads Downloads Synchronisiert die Downloads
syncTranslations Übersetzungen Synchronisiert die Übersetzungen
syncFilteredCustomers Kunden SW-WL Synchronisiert gefilterte Kundendaten
syncOrderStatus Bestellstatus Synchronisiert den Bestellstatus
syncShipmenttype Versandart Synchronisiert die Versandart
syncAll Alles Synchronisiert alles
Beispiel: Sync-Bezeichnungen
[SYNCRENAME]
# "" = inaktiv. Reihenfolge dieser Zeilen = Default-Reihenfolge der Kacheln.
syncProductsAndPrices = Artikel & Preise
syncCustomersAndOrders = Kunden & Bestellungen
syncProducts = Artikel
syncProductsAll = Artikel[--all]
syncPrices = Preise
syncOrders = Bestellungen
syncCustomers = Kunden
syncCategories = Kategorien
syncAttr = Eigenschaften
syncCross = Cross-Artikel
syncBestand = Bestand
syncProperties = Properties
syncImages = Bilder
syncDownloads = Downloads
syncTranslations = Übersetzungen
syncFilteredCustomers = Kunden SW-WL
syncOrderStatus = Bestellstatus
syncShipmenttype = Versandart
syncAll = Alles

[DASHBOARD] und [DASHBOARDGROUP:*]

Optional. Erlaubt es, die Kacheln auf dem Dashboard in mehrere Bereiche zu gruppieren und die Reihenfolge frei festzulegen. Die erste Gruppe wird als Featured gerendert (größere Kacheln, dezent hervorgehoben). Fehlt die Sektion, werden alle aktiven Kacheln aus [SYNCRENAME] als eine flache Liste in INI-Reihenfolge angezeigt.

Sektion / Parameter Beschreibung
[DASHBOARD] groups Komma-getrennte Liste der Gruppen-IDs in Anzeigereihenfolge. Jede ID verweist auf eine Sektion [DASHBOARDGROUP:<id>].
[DASHBOARDGROUP:<id>] title Überschrift über der Gruppe. Leer = keine Überschrift (z. B. für die Featured-Zeile). Nur Gruppen mit Titel sind aufklappbar.
[DASHBOARDGROUP:<id>] keys Komma-getrennte Liste der Sync-Keys in der gewünschten Reihenfolge. * als alleiniger oder zusätzlicher Eintrag steht für „alle übrigen aktiven Keys aus [SYNCRENAME], die nicht von einer anderen Gruppe explizit beansprucht werden”. Unbekannte oder inaktive Keys werden ignoriert. Bei mehreren *-Gruppen gewinnt die erste in groups-Reihenfolge.
[DASHBOARDGROUP:<id>] collapsed Optional, Default false. Bei true wird die Gruppe initial zugeklappt dargestellt; ein Klick auf den Gruppen-Header klappt sie auf.
[DASHBOARD]
groups = featured, weitere

[DASHBOARDGROUP:featured]
title =
keys = syncProductsAndPrices, syncOrders

[DASHBOARDGROUP:weitere]
title = Weitere Synchronisationen
keys = *
collapsed = false

Mit dieser Konfiguration erscheinen oben in größeren Kacheln “Artikel & Preise” und “Bestellungen”, darunter durch eine horizontale Linie abgegrenzt alle übrigen Sync-Kacheln in [SYNCRENAME]-Reihenfolge. Mit collapsed = true lässt sich die Restgruppe initial zuklappen.

Beispiel: Drei Gruppen mit Wildcard in der Mitte
[DASHBOARD]
groups = featured, weitere, footer

[DASHBOARDGROUP:featured]
title =
keys = syncProductsAndPrices, syncOrders

[DASHBOARDGROUP:weitere]
title = Weitere Synchronisationen
keys = *

[DASHBOARDGROUP:footer]
title = Bestand & Bilder
keys = syncBestand, syncImages

syncBestand und syncImages landen verlässlich im Footer-Block, weil die Wildcard erst danach ausgewertet wird und nur Tiles aufnimmt, die nirgendwo explizit beansprucht sind.


Vollständige Beispiel management.ini
[ACTIVE]
default = local

[SHOPS]
local = conf\config.ini
mostwanted = C:\Program Files\energy shop-sync\config.ini

[TIMER]
# in Sekunden
wakeup = 1300
overtimekill = 85500

[LOCAL]
debuglvl = -d
-wc = -wc
-wa = -wa
-we = -we
-m =
-ai =
-to = -to wl

[MOSTWANTED]
debuglvl = -dddd
-wc = -wc
-wa = -wa
-we = -we
-m =
-ai =
-to = -to wl

[SYNCRENAME]
# "" = inaktiv. Reihenfolge dieser Zeilen = Default-Reihenfolge der Kacheln.
syncProductsAndPrices = Artikel & Preise
syncCustomersAndOrders = Kunden & Bestellungen
syncProducts = Artikel
syncProductsAll = Artikel[--all]
syncPrices = Preise
syncOrders = Bestellungen
syncCustomers = Kunden
syncCategories = Kategorien
syncAttr = Eigenschaften
syncCross = Cross-Artikel
syncBestand = Bestand
syncProperties = Properties
syncImages = Bilder
syncDownloads = Downloads
syncTranslations = Übersetzungen
syncFilteredCustomers = Kunden SW-WL
syncOrderStatus = Bestellstatus
syncShipmenttype = Versandart
syncAll = Alles

[DASHBOARD]
groups = featured, weitere

[DASHBOARDGROUP:featured]
title =
keys = syncProductsAndPrices, syncOrders

[DASHBOARDGROUP:weitere]
title = Weitere Synchronisationen
keys = *
collapsed = false

## Installation

Die management.ini wird beim Ausführen von ess.exe --init automatisch mit Standardwerten erstellt. Anschließend müssen die Shops manuell hinzugefügt werden. Dies erfolgt dadurch, dass jeder Shop in der Kategorie [SHOPS] mit seinem Namen als Key und dem Pfad zur config.ini als Value aufgenommen wird. Die Shop-URL und der Launcher-Pfad werden automatisch bestimmt.

Ist die Management.ini entsprechend erstellt worden, reicht die Ausführung von ess.exe manage runserver aus. Die Web-Applikation läuft standardmäßig auf dem Hostnamen mit dem Port 8000 und kann über jeden beliebigen Web-Browser erreicht werden. Der Port kann beim Start angepasst werden (z.B. ess.exe manage runserver 0.0.0.0:9000).

Bspw. : nerdpool:8000


## Ausführung von Synchronisationen

Das Management-Interface bietet 2 verschiedene Möglichkeiten Synchronisationen auszführen bzw. 3, letzteres ist aber über die erweiterte Ansicht erreichbar.

### 1. Live-Sync image

Live-Syncs sind über die Startseite des Interfaces erreichbar. Mit einem Klick auf die Schaltflächen lassen sich einzelne Syncs startet. Wird eine Sync gestartet erscheint dazu ein Live-Log der solange bleibt bis man eine andere Seite lädt. Zusätzlich kann der Sync über den Progressbar oberhalb der Seite verfolgt werden. Der Progressbar wird auf jeder Seite neugeladen.

2. Geplante Syncs (Scheduler)

Über den Scheduler im erweiterten Bereich können Synchronisationen zeitlich geplant werden. Die geplanten Jobs werden über APScheduler in einer separaten SQLite-Datenbank (apevents.db) persistiert.

Scheduler verwalten

Job erstellen:

  1. Im Menü auf “Scheduler” klicken
  2. Bezeichnung für den Job vergeben
  3. Sync-Art auswählen (z.B. Artikel, Bestellungen)
  4. Frequenz wählen:
    • Einmalig: Einmaliger Sync zu einem bestimmten Zeitpunkt
    • Minütlich/Stündlich/Täglich: Wiederkehrender Sync im gewählten Intervall
    • Wöchentlich: Sync an bestimmten Wochentagen
  5. Optional: Parameter als freie CLI-Argumente angeben (z. B. -a für Vollsync, -wc ohne Kategorien). Mehrere Argumente werden per Leerzeichen getrennt, Quoting wird unterstützt. Eine Übersicht aller Flags liefert ess.exe --help.
  6. Startzeit festlegen und Job speichern
  7. Optional: Verpasste Aufgaben nachholen ankreuzen, wenn die Aufgabe auch dann noch laufen soll, wenn ihr planmäßiger Zeitpunkt während einer Down-Zeit (z. B. Wochenend-Reboot) verpasst wurde. Mehrfach verpasste Ausführungen werden zu einer einzelnen zusammengefasst (coalesce). Ohne diese Option verwirft APScheduler Ausführungen, die mehr als 15 Minuten zu spät dran sind.

Job verwalten:

  • Pausieren: Einen laufenden Job vorübergehend anhalten
  • Fortsetzen: Einen pausierten Job wieder aktivieren
  • Bearbeiten: Bezeichnung, Zeitplan, Parameter oder die Catchup-Option eines Jobs ändern. Im Bearbeiten-Dialog stehen die Intervalle Einmal / Minütlich / Stündlich / Täglich zur Auswahl; wöchentliche Cron-Jobs werden grundsätzlich neu angelegt statt editiert.
  • Löschen: Einen Job dauerhaft entfernen

Alle geplanten Jobs werden persistent gespeichert und überleben einen Neustart des Management Interfaces.

Standard-Zeitplan laden

Über den Button “Standard-Zeitplan laden” im Kopfbereich der Aufgabenplan-Tabelle lassen sich drei typische Hintergrundaufgaben für den aktuellen Shop mit einem Klick anlegen:

Aufgabe Sync-Art Parameter Zeitplan Catchup
Artikel & Preise Mo-Fr 01:00 syncProductsAndPrices Mo–Fr um 01:00
Artikel & Preise So 01:00 syncProductsAndPrices -a Sonntag um 01:00 ja
Bestellungen Mo-Fr 06-18 Uhr alle 15 Min syncOrders Mo–Fr zwischen 06:00 und 18:00 alle 15 Minuten

Unter der Woche läuft ein kombinierter Artikel- und Preissync inkrementell (nur Änderungen). Der Sonntags-Vollsync läuft mit -a (Artikel & Preise ohne Berücksichtigung des Änderungsdatums), damit übers Wochenende alle Daten garantiert synchron sind. Bei einem Wochenend-Reboot wird der Vollsync dank Catchup beim nächsten Start des Dienstes nachgeholt.

Bereits vorhandene Aufgaben mit identischem Namen bleiben unangetastet – das erneute Laden des Presets fügt lediglich fehlende Jobs hinzu. Soll ein bestehender Sonntags-Job auf -a umgestellt werden, muss er manuell gelöscht und das Preset erneut geladen werden.

3. Einzelsync

Über die erweiterte Ansicht kann ein einzelner Artikel per Artikelnummer synchronisiert werden.

Warteschlange

Wird ein Sync gestartet während bereits ein anderer Sync für denselben Shop läuft, wird der neue Sync automatisch in eine Warteschlange eingereiht. Sobald der laufende Sync abgeschlossen ist, wird der nächste Sync aus der Warteschlange automatisch gestartet.

Ausnahme: Bestellungen

Der Bestellungssync (syncOrders) kann unabhängig von anderen Syncs parallel laufen, da er keine Artikeldaten verändert.


Sync-Fortschritt

Der Fortschritt einer laufenden Synchronisation wird in Echtzeit über einen Progressbar angezeigt. Der ProcessManager parst die Stdout-Ausgabe des Sync-Prozesses im Format:

PROGRESS: {process}: {step} von {max} - {nachricht}

Der Fortschritt wird in zwei Phasen unterteilt:

  • Vorbereitung (0-50%): Daten werden aus der WinLine gelesen
  • Übertragung (50-100%): Daten werden an den Shop übermittelt

Der Status wird über AJAX-Polling (/api/sync-progress/{shop}) abgefragt und auf jeder Seite im Progressbar angezeigt.

Mögliche Status: runningfinished / error / overtime

Ein Overtime-Schutz beendet Syncs automatisch nach der in [TIMER] konfigurierten overtimekill-Zeit (Standard: 85500 Sekunden).


Sync-Fehler-Management

Unter /{shop}/errors können Sync-Fehler eingesehen und verwaltet werden.

Jeder Fehler enthält folgende Informationen:

Feld Beschreibung
Shop-URL Betroffener Shop
Sync-Typ Art der Synchronisation
Entity-Typ Betroffener Datentyp
Entity-ID ID des betroffenen Datensatzes
Fehlermeldung Beschreibung des Fehlers
Status Aufgelöst / Offen

Funktionen:

  • Filtern nach Shop-URL, Entity-Typ und Auflösungsstatus
  • Bulk-Aktionen: Fehler auflösen oder wieder öffnen
  • Automatische Auflösung bei Full-Sync (nicht bei Differential-Sync)

Scheduler-Events-Dashboard

Unter /advanced/apdashboard kann der Status aller geplanten Scheduler-Events eingesehen werden.

Angezeigte Events:

  • Hinzugefügt
  • Entfernt
  • Geändert
  • Erfolgreich ausgeführt
  • Fehlgeschlagen
  • Verpasst

Die Events werden in einer separaten SQLite-Datenbank (apevents.db) gespeichert.


Konfigurationseditor

Über den erweiterten Bereich können Konfigurationsdateien direkt im Browser bearbeitet werden:

Route Beschreibung
/advanced/management/ management.ini bearbeiten
/advanced/settings/{shop} config.ini eines Shops bearbeiten
/advanced/mappings/{shop} Mapping-Dateien eines Shops bearbeiten

Zusätzlich können Debug-Level und Sync-Timestamps pro Shop eingestellt werden.


Log-Ansicht

Logdateien können direkt im Browser eingesehen und heruntergeladen werden:

Route Beschreibung
/logs Liste aller verfügbaren Logdateien
/logs/view/{file} Logdatei im Browser anzeigen
/logs/download/{file} Logdatei herunterladen