====== Wissenswertes über den Shop-Update ====== Stellt eine kleine Übersicht der “shopupdate”-Komponente aus dem git dar. In erster Linie geht es um die Schnittstellen zwischen dem Paket und dem DAL, sowie Skripte, die bereitgestellt werden. Eine funktionierende Umgebung setzt lediglich eine Konfiguration voraus, die einen Eintrag für den DAL-Server enthält, sowie ein Verweis auf die Mail-Adresse, die für notify-Mails verwendet werden soll. ====== Funktionsskripte ====== Sämtliche Skripte laufen zur Zeit als cronjob auf der VM “dazzler”. * update.py: Löst die Prozedur zur Prüfung von Updates aus. Shops mit dem Status “new” werden eingehend geprüft und bei Erfolg geht der Shop gemäß seines Lebenszykluses in einen neuen Zustand über. Shops die “ready” sind, werden regulär aktualisiert, falls notwendig. * notify.py: Für Shops die alle Konsistenz-Prüfungen durchlaufen haben, wird eine Admin-Mail versendet, um zu prüfen, ob die Shopseite “responsive” ist. Bei Erfolg wird der Shop freigeschaltet. ====== Ablauf ====== Jeder Shop beginnt sein Zustand nackig “bare”. Sobald eine feedUrl hinzugefügt wird, geht er in den Zustand “new” über und der Update-Prozess beginnt. Als erstes wird geprüft, ob der Feed abgerufen werden kann. Hier geht es um mögliche Rechteprobleme, sowie den Existenzcheck. Die zweite Prüfung besteht aus einem ersten Syntax-Check auf CSV-Ebene. D.h, Trennzeichen richtig, gleiche Anzahl Felder pro Zeile, etc. Die beiden Zustände werden im Back-End festgehalten. Falls der Server es unterstützt, wird der Zeitstempel der Datei gesichert, so dass nur bei Änderungen auch wirklich ein Update angestoßen wird. Ansonsten wird lediglich der Zeitstempel geprüft und ein “no-update” aufgelöst. Ist ein Update notwendig und die Feed-Daten sind korrekt, startet das eigentliche Update. Die einzelnen CSV-Zeilen werden zu Produkten kombiniert und in einer Liste gespeichert. Beim DAL wird angefragt, welche Produkte bereits vorhanden sind. Danach wird einer der drei folgenden Zustände ausgewählt: * new: Produkt ist im Shop noch nicht vorhanden und wird eingefügt * update: Produkt ist vorhanden, aber Infos haben sich geändert (Preis, Farbe, …) * delete: Produkt war vorhanden, ist aber nicht mehr im Feed Hinweis: Feeds stellen immer die komplette Liste aller Produkte dar. Inkrementelle Updates gibt es nicht.