====== MyClassico Category Sorting ====== Special project: A list of products needs to be sorted by various criteria ===== Project Description ===== From the contract (to be translated): **Set Up**: * Konzeption & Risikoanalyse * Umsetzung der Initialvorgaben & Logiken (Kosten-/Fitness-Funktionen) * Relevanz (hauptsächlich Business-Logik) * Farbcode (Farbübergänge und Anordnung beachten) * Outfit (Farbübergänge und Warengruppen beachten) * Farbextraktion (für Übergänge zwischen den Produkten) * Implementierung und Evaluierung verschiedener Algorithmen: * genetischer Algorithmus * simulated annealing * Schnittstellen-Design * Aufsetzen einer Infrastruktur für bis zu 1.000 Sortierungsgruppen (Rubriken & Lieferanten) * Aufsetzen einer Infrastruktur für bis zu 3.000 Sortierungsanfragen pro Tag (jede Rubrik und Lieferanten Kategorie etwa 4-mal am Tag) **Lizenz/Hosting/Hardware für Picalike-Sortierung von Rubriken- und Lieferanten-Listings**: * Change Requests an der API oder Logik * Bis zu 1.000 Sortierungsgruppen * Bis zu 100.000 API Anfragen an die Sortierungs-API * Serverarchitektur/-infrastruktur * Update des Systems, Service & Wartung * Support & Betreuung myClassico.com (“myClassico”) ist ein Onlineshop für Designer-Mode. Neben dem Fokus auf hochwertige Bekleidung, ist auch der ästhetische Aufbau der Webseite ein Differenzierungsfaktor. Dazu werden die Anzeige von Artikeln auf allen Kategorieseiten (Warengruppen-, Inspirations- und Designerseiten) nach farblich passenden Mustern oder nach Outfitkombination sortiert. Dies geschieht derzeit manuell und bedarf einen großen zeitlichen Aufwand. Um zukünftig sowohl Zeit und Kosten zu sparen und dennoch denselben Anspruch wahren zu können, haben myClassico und Picalike gemeinsam ein Konzept entworfen, um diese Sortierung zu automatisieren. Im folgenden sind die Details der Absprache noch einmal dargestellt: **Rahmenbedingungen**: * Über 300 verschieden Kategorieseiten * 10 bis max. 500 Artikel je Kategorie (idR 100-200 Artikel je Kategorie) **Sortierung**: **Performance** * Priorisierung nach * set by the customer through an API * Anwendung * Kleine Kategorien (Designer) * Visuell ähnliche Artikel (Jeans) **Farbcode** * Priorisierung nach * set by the customer through an API * Anwendung * Größere Kategorien mit vielen verschiedenfarbigen Artikeln (Kleider) * Warengruppen-Kategorien * Details zur Sortierung * Der Farbcode soll immer so weit wie möglich der diagonalen Farbsortierung folgen (andere Sortierung auf Mobile) * Der Bestand ist bei der Sortierung weniger wichtig, da Topseller bis zum Ausverkauf gefördert werden sollen * Der Farbcode wird dabei durch den Picalike Color Export bestimmt * Hauptfarbe entscheidend * Musterung weniger wichtig **Outfit** * Priorisierung nach * set by the customer through an API * Anwendung * Inspirationsseiten * Designerseiten mit Outfitgedanken (Closed) * Details zur Sortierung * Outfits werden nur auf Desktop pro Reihe (3 Artikel) gelesen. Auf Grund der zusätzlichen Bedeutung des Farbcodes, wird also so weit wie möglich horizontal pro Reihe das Outfit sortiert, welches in das Diagonale Farb-Raster passt * Ein Outfit besteht aus Oberteil / Unterteil / Accessoire (Oberteil) * Ausschließende Kriterien * Die gleichen Farbvarianten * Zwei Artikel aus der gleichen Warengruppe (z.B. Mantel & Mantel) * Hose & Jeans * Kleid & Jeans (wir zählen Kleider als Unterteil) * Rock & Kleid * Mehrere Accessoires nebeneinander **Warengruppen-Farbcode** * Priorisierung nach * set by the customer through an API * Anwendung * Standard für Warengruppenseiten * Details zur Sortierung * Markenvielfalt ist wichtig. Marken und Preis-Strukturen sollen durchgemixt werden * Auch hier sollen gleiche Artikel mit unterschiedlichen Farbvarianten (gleicher Artikelnummer-Stamm / gleiche Form) nicht nebeneinander auftauchen * Die Sortierung der Seite folgt auch hier nach dem diagonalen Raster **Grundsätzliches** * Seitentiefe * Die Sortierung der ersten sechs Seiten (mit 45 Produkten) je Kategorie ist am wichtigsten, da diese regelmäßig von Kunden aufgerufen werden * Auf den anschließenden Seiten ist die Sortierung fehlertoleranter * Die Frequenz der Sortierung soll zunächst einmal täglich stattfinden * Der genaue Zeitpunkt ist noch zu definieren * entweder nach 17:30 nachdem alle neuen Produkte eingepflegt worden sind * oder in der Nacht (02:00) * Sobald alles einwandfrei funktioniert, kann die Frequenz auf bis zu viermal täglich erhöht werden * Der erste bzw. die ersten drei Artikel pro Kategorie werden jeweils manuell von myClassico zur Orientierung vorgegeben werden * “Manueller Boost” * Es soll ein Option geben, mit der myClassico manuell einzelne Artikel “boosten” kann * Dadurch können Artikel in Einzelfällen außerhalb der Sortierregeln auf den ersten Seiten positioniert werden * Übergangsartikel/Farben * Schwarz, Weiß und Dunkelbau sind Farben die sich gut mit anderen Farben kombinieren lassen in den Sortierungen. Daher sollen diese sich nicht gegenseitig „auskombinieren“ * Diese “Übergangsfarben” schließen sich gegenseitig aus * Schwarz → Weiß * Schwarz → Dunkelblau * Übergangsartikel ermöglichen den Übergang zu anderen Farben * meist Accessoires * zwei-/mehrfarbig (Picalike Listing-Page Sort * API für die Sortierung von Rubriken und Lieferanten * Flexible Logik für die Sortierung von Rubriken und Lieferanten * Mehrfaches Update der Sortierung * Support und Monitoring * Keine technische Umsetzung der Einbindung von picalike im Kundensystem * Keine zu installierende Software) ===== Implementation Remarks ===== ==== Available Attributes ==== These attributes are currently supported per product: age boost brand color new price return_quote returns revenue sales stock type ==== Adding Attributes ==== In order to support new attributes, you have to change the following files in https://git.picalike.corpex-kunden.de/picalike/genetic-sort:
    * app/feed_import.py - in ''%%update_data%%'' * app/models.py - in ''%%class SortSettings%%'' and ''%%DEFAULT_ATTRIBUTES%%''
Also do not forget to update the above section! ===== Outlook ===== The implementation is very specific for the MyClassico case (especially the input and output layers). The algorithm was implemented with flexibility in mind and should be quickly adaptable to other shop requirements. ===== Accociated Gits ===== * https://git.picalike.corpex-kunden.de/picalike/genetic-sort