...
Skip to content Skip to sidebar Skip to footer

Magento 2 XML Feeds: Αυτοματοποίηση Προϊόντων

Magento 2 και πολλαπλά XML feeds: από ένα ασύνδετο product catalog σε ελεγχόμενο σύστημα εισαγωγών

Η διασύνδεση ενός Magento 2 e-shop με πολλαπλά XML feeds δεν είναι απλώς μια διαδικασία εισαγωγής προϊόντων. Όταν κάθε προμηθευτής χρησιμοποιεί διαφορετικά SKU, κατηγορίες, εικόνες, αποθέματα και δομή δεδομένων, το πραγματικό ζητούμενο είναι να δημιουργηθεί ένα ασφαλές και επαναλήψιμο σύστημα που αποφασίζει ποιο προϊόν θα εισαχθεί, πού θα κατηγοριοποιηθεί και πότε μπορεί να εμφανιστεί στο κατάστημα.

Σε αυτό το project, η 8vision ανέλαβε τον τεχνικό έλεγχο και την αναδιοργάνωση της υποδομής supplier feeds ενός μεγάλου Magento 2 e-shop επίπλων. Το έργο κάλυψε επτά διαφορετικές πηγές προμηθευτών, εκατοντάδες αντιστοιχίσεις κατηγοριών και χιλιάδες προϊόντα, με στόχο ένα catalog που ενημερώνεται αυτόματα χωρίς να θυσιάζει την ποιότητα των δεδομένων ή τη σταθερότητα του καταστήματος.

Η αρχική κατάσταση

Το e-shop διέθετε ήδη custom μηχανισμό εισαγωγής προϊόντων, όμως η καθημερινή λειτουργία του αποκάλυπτε προβλήματα σε διαφορετικά επίπεδα:

– Προϊόντα από supplier feeds δεν αντιστοιχίζονταν πάντα στις σωστές κατηγορίες Magento.
– Κατηγορίες όπως τραπέζια κουζίνας, τραπέζια σαλονιού και πολυθρόνες μπορούσαν να περιλαμβάνουν λανθασμένα προϊόντα.
– Νέα προϊόντα υπήρχαν στα feeds αλλά δεν δημιουργούνταν συστηματικά στο Magento.
– Ορισμένα προϊόντα είχαν εγγραφές εικόνων στη βάση, αλλά τα πραγματικά αρχεία έλειπαν από το media storage.
– Εξωτερικοί image servers επέστρεφαν σε ορισμένες περιπτώσεις `403 Forbidden`, με αποτέλεσμα αποτυχημένα downloads.
– Η ύπαρξη προϊόντος στο feed δεν σήμαινε ότι ήταν έτοιμο να ενεργοποιηθεί: έπρεπε να ελεγχθούν εικόνες, απόθεμα και ειδικοί κανόνες συγχρονισμού.
– Παράλληλα cron jobs μπορούσαν να ανταγωνιστούν για τους ίδιους πόρους και να επιβαρύνουν το Magento.
– Η αναζήτηση και τα storefront caches έπρεπε να ενημερώνονται μετά από μαζικές αλλαγές.

Το πρόβλημα, επομένως, δεν ήταν ένα μεμονωμένο bug. Ήταν η απουσία μιας ενιαίας ροής ελέγχου από το supplier feed μέχρι την τελική εμφάνιση του προϊόντος.

Πρώτο βήμα: αποτύπωση των feeds και του Magento catalog

Πριν γίνει οποιαδήποτε μαζική αλλαγή, καταγράψαμε τον τρόπο με τον οποίο κάθε integration μεταφράζει τα δεδομένα του προμηθευτή σε Magento products.

Ελέγξαμε τα modules και τις ροές για:

– Artelibre
– B2Bmarkt
– Megapap
– Optimal Strom
– Pakoworld
– Woodwell
– συμπληρωματικές CSV/XML πηγές

Η ανάλυση δεν περιορίστηκε στις διευθύνσεις των feeds. Για κάθε πηγή εξετάστηκαν τα identifiers, τα supplier product IDs, τα category paths, οι τιμές, οι ειδικές τιμές, το stock, οι εικόνες και ο τρόπος με τον οποίο αναγνωρίζεται ένα υπάρχον προϊόν.

Αυτό το στάδιο ήταν απαραίτητο επειδή δύο φαινομενικά ίδια SKU μπορούν να διαφέρουν σε encoding, κενά ή χαρακτήρες. Σε πραγματικό feed εντοπίστηκε, για παράδειγμα, ελληνικός χαρακτήρας μέσα σε SKU που οπτικά έμοιαζε λατινικός. Χωρίς έλεγχο σε επίπεδο bytes και canonical normalization, ένα τέτοιο SKU μπορεί να θεωρηθεί λανθασμένα νέο προϊόν.

Category mapping με πραγματικά δεδομένα

Η σωστή κατηγοριοποίηση ήταν ένας από τους μεγαλύτερους άξονες του έργου. Οι κατηγορίες των προμηθευτών δεν ακολουθούσαν κοινή ονοματολογία και δεν αντιστοιχούσαν μία προς μία στη δομή του Magento.

Δημιουργήσαμε ελεγχόμενα mapping workbooks και scripts εφαρμογής, ώστε κάθε supplier category ID ή category path να συνδέεται με την κατάλληλη Magento category. Συνολικά ελέγχθηκαν **353 γραμμές mapping** από διαφορετικές πηγές. Η διαδικασία επαλήθευε ότι:

– το Magento category ID υπάρχει,
– η κατηγορία είναι ενεργή,
– βρίσκεται κάτω από το σωστό catalog root,
– τα aliases δεν αντικαθιστούν προηγούμενες έγκυρες αντιστοιχίσεις,
– οι αμφίβολες ή ελλιπείς γραμμές εξαιρούνται για χειροκίνητη απόφαση.

Για το Megapap δημιουργήθηκε reference mapping με **48 Magento categories και 690 supplier aliases**, ενώ μία ατελής αντιστοίχιση απομονώθηκε αντί να εφαρμοστεί αυθαίρετα. Αυτή η επιλογή είναι σημαντική: σε ένα production catalog, μια μη επιβεβαιωμένη κατηγορία είναι προτιμότερο να παραμένει σε εκκρεμότητα παρά να τοποθετεί εκατοντάδες προϊόντα σε λάθος σημείο.

Ασφαλής εισαγωγή και ενημέρωση προϊόντων

Ο import μηχανισμός οργανώθηκε ώστε να διαχωρίζει καθαρά τρεις καταστάσεις:

1. Το προϊόν υπάρχει και χρειάζεται ενημέρωση.
2. Το προϊόν δεν υπάρχει και πρέπει να δημιουργηθεί.
3. Το προϊόν υπάρχει στο feed, αλλά δεν πληροί ακόμη τις προϋποθέσεις δημοσίευσης.

Πριν από production imports δημιουργήθηκε και επαληθεύτηκε συμπιεσμένο database backup. Οι εισαγωγές εκτελέστηκαν με κοινό filesystem lock, ώστε supplier syncs και άλλες βαριές εργασίες να μη γράφουν ταυτόχρονα στο catalog.

Σε μία ελεγχόμενη παραγωγική εκτέλεση για το Megapap:

– διαβάστηκαν **3.326 μοναδικά SKU**,
– δημιουργήθηκαν **219 νέα προϊόντα**,
– ολοκληρώθηκε η εισαγωγή με **0 errors**,
– μετά το import, και τα **3.326 SKU** του feed υπήρχαν στο Magento,
– ενεργοποιήθηκαν **163 προϊόντα**,
– **56 προϊόντα** παρέμειναν απενεργοποιημένα επειδή είχαν μηδενικό απόθεμα.

Το αποτέλεσμα δείχνει γιατί η δημιουργία και η ενεργοποίηση δεν πρέπει να είναι μία ενιαία, ανεξέλεγκτη ενέργεια.

Κανόνες ενεργοποίησης προϊόντων

Ένα προϊόν ενεργοποιείται μόνο όταν πληροί συγκεκριμένους κανόνες ποιότητας και διαθεσιμότητας. Στη ροή που εφαρμόστηκε, ο μηχανισμός ελέγχει ότι:

– υπάρχει τουλάχιστον μία πραγματική, μη κενή εικόνα στο Magento media storage,
– η διαθέσιμη ποσότητα είναι μεγαλύτερη από μηδέν,
– το προϊόν βρίσκεται σε κατάσταση disabled πριν από την αλλαγή,
– δεν έχει ενεργοποιημένο ειδικό `bypass_sync` flag.

Με αυτόν τον τρόπο, ένα XML record δεν μετατρέπεται αυτομάτως σε ορατό storefront product. Πρώτα περνά από έναν σαφή quality gate.

Για feeds ή κανάλια πώλησης με αυστηρότερο εμπορικό κανόνα, όπως εμφάνιση μόνο από τέσσερα τεμάχια και πάνω, το stock threshold αντιμετωπίζεται ως ανεξάρτητη business rule και όχι ως υπόθεση μέσα στον parser.

Εικόνες προϊόντων: database record δεν σημαίνει πραγματικό αρχείο

Οι εικόνες αποτέλεσαν ξεχωριστό τεχνικό πρόβλημα. Σε ορισμένα προϊόντα η media gallery περιείχε κανονικά paths, αλλά τα αντίστοιχα αρχεία δεν υπήρχαν στον δίσκο. Σε άλλα feeds, οι εικόνες ήταν διαθέσιμες εξωτερικά αλλά ο supplier server απέρριπτε αυτοματοποιημένα requests.

Η διαδικασία ελέγχου περιλάμβανε:

– σύγκριση των media gallery entries με το filesystem,
– έλεγχο HTTP status και MIME type των supplier images,
– επιβεβαίωση ότι το αρχείο είναι πραγματική εικόνα και όχι HTML error page,
– ασφαλές staging πριν από την εγγραφή στο τελικό media path,
– επανέλεγχο του Magento product μετά την αποκατάσταση.

Σε χαρακτηριστική περίπτωση προϊόντος B2B, εντοπίστηκαν πέντε εγγραφές εικόνων χωρίς τα αντίστοιχα local files. Οι πέντε εικόνες ανακτήθηκαν από το feed, ελέγχθηκαν ως έγκυρα JPEG και επανατοποθετήθηκαν στα ακριβή paths που περίμενε το Magento. Ο τελικός έλεγχος επέστρεψε **5/5 έγκυρες εικόνες**.

Νέα supplier feeds χωρίς πρόχειρες συνδέσεις

Η προσθήκη ενός νέου XML feed δεν αντιμετωπίστηκε ως αντιγραφή ενός υπάρχοντος importer. Για κάθε νέα πηγή χρειάζονται:

– σταθερό μοναδικό identifier,
– κανόνες αντιστοίχισης υπαρχόντων προϊόντων,
– mapping προμηθευτικών κατηγοριών,
– σαφής πολιτική για τιμές, special prices και απόθεμα,
– χειρισμός εικόνων και αποτυχημένων downloads,
– dry run πριν από οποιαδήποτε μαζική εγγραφή,
– logs που διαχωρίζουν created, updated, skipped και errors.

Για το Optimal Strom δημιουργήθηκε ξεχωριστό mapping package και ελεγχόμενη διαδικασία deployment. Αντίστοιχα, η υποδομή οργανώθηκε ώστε επιπλέον προμηθευτές να μπορούν να ενταχθούν χωρίς να αλλοιώνουν τους κανόνες των υπαρχόντων integrations.

Cron orchestration, locking και cache management

Οι αυτοματισμοί προγραμματίστηκαν σε διαφορετικά χρονικά παράθυρα και χρησιμοποιούν κοινό lock. Έτσι αποφεύγεται η ταυτόχρονη εκτέλεση πολλών imports, η οποία μπορεί να προκαλέσει αυξημένη χρήση μνήμης, database contention ή ασυνεπή ενημέρωση του catalog.

Μετά τις εισαγωγές εκτελούνται οι απαραίτητες εργασίες ενεργοποίησης, indexing και στοχευμένου cache cleaning. Για τα storefront caches χρησιμοποιείται `cache:clean` στους σχετικούς cache types αντί για ανεξέλεγκτο καθολικό flush. Αυτό διατηρεί το νέο περιεχόμενο ορατό χωρίς να επιβαρύνει άσκοπα όλο το Magento installation..

Rob Graf | “When deploying AI, whether you focus on top-line growth or bottom-line profitability, start with the customer and work backward.”

Healthy Tips

Η επιχειρηματική αξία της λύσης

Η αξία του project δεν βρίσκεται μόνο στον αριθμό των προϊόντων που εισήχθησαν. Βρίσκεται στη μετάβαση από αποσπασματικά scripts σε μια ελεγχόμενη υποδομή catalog operations.

Το e-shop απέκτησε:

– σαφέστερη αντιστοίχιση supplier και Magento categories,
– επαναλήψιμη διαδικασία εισαγωγής νέων προϊόντων,
– κανόνες που αποτρέπουν την ενεργοποίηση προϊόντων χωρίς απόθεμα ή εικόνα,
– καλύτερη ιχνηλασιμότητα μέσω logs και μετρήσιμων αποτελεσμάτων,
– ασφαλέστερη εκτέλεση με backups, dry runs και locking,
– βάση για την ένταξη νέων προμηθευτών,
– λιγότερη χειροκίνητη εργασία στη διαχείριση χιλιάδων SKU.

Για την 8vision, αυτό είναι το ουσιαστικό νόημα ενός Magento integration: όχι απλώς να «διαβάζει ένα XML», αλλά να μετατρέπει ανομοιογενή supplier data σε αξιόπιστο, εμπορικά αξιοποιήσιμο catalog.

Κλείσε συνάντηση για αξιολόγηση

Στείλε μας ένα μήνυμα — και δώσε νέα πνοή στην online παρουσία σου..

Leave a comment