Nein. Auswertungen werden mit demselben Versions-Hash-Muster gecacht wie die Unternehmensseiten: Der Schlüssel kombiniert die Listing-ID, einen Hash des aktiven Regelsatzes und einen Hash des Marktkontexts, sodass jede Änderung einen neuen Schlüssel erzeugt. Normaler Traffic sind Cache-Hits; eine Regeländerung verursacht einen kurzen Schub von Misses, jeder in deutlich unter einer Millisekunde neu berechnet.
Die Preis-Engine, die die Montags-Tabelle abgelöst hat
Jeden Montagmorgen öffnete ein Entwickler bei einem B2B-Marktplatz eine geteilte Tabelle, kopierte die Preis-Multiplikatoren der Woche in ein Management Command und ließ es gegen die Produktion laufen. Zweihundert Listing-Kategorien hingen an diesem Ritual. Es hielt Preise drei bis sieben Tage veraltet, und einmal stellte es Premium-Listings zum zehnfachen Preis online.
Leistungen
Backend Engineering, Produkt
Branche
B2B-Marktplatz
Jahr
2023-2024
DIE HERAUSFORDERUNG
Sechs Stunden zum zehnfachen Preis
Die Tabelle war das Preissystem. Account Manager trugen unter der Woche Multiplikatoren ein, der Entwickler importierte sie am Montag. Niemand konnte sehen, was eine Änderung bewirkt, bevor sie live war, und Tippfehler landeten direkt bei den Käufern. Der schlimmste Fall war ein saisonaler Multiplikator, der als 12,5 statt 1,25 eingetragen wurde: Premium-Listings standen sechs Stunden lang zum zehnfachen Preis online, bis es jemand bemerkte. Zwischen den Vorfällen war der Prozess schlicht langsam: Ein Markt, der sich am Dienstag bewegte, bekam am folgenden Montag seinen Preis.
DIE LÖSUNG
Regeln als Daten, in Reihenfolge ausgewertet
Die Engine behandelt Preisregeln als Daten. Jede Regel ist ein Datenbankeintrag mit einer Priorität und einer Handler-Klasse, deren apply() den aktuellen Preis und den Marktkontext erhält und einen neuen Preis zurückgibt. Account Manager bearbeiten sie im Django Admin: einen Nachfrage-Schwellenwert, eine Angebotsuntergrenze, einen saisonalen Modifikator. Eine veröffentlichte Änderung ist sofort live, ohne Deployment. Diese Freiheit ist zugleich das Risiko: Ein Regelsatz, den niemand prüft, richtet denselben Schaden an wie die Tabelle, nur schneller. Deshalb bringt die Engine einen Vorschaumodus, Preisgrenzen pro Kategorie und ein Auswertungsprotokoll mit. Ein Pricing-Produkt von einem Drittanbieter wurde verworfen: Diese Tools sind für Millionen SKUs und das Auslesen von Wettbewerberpreisen gebaut, während dieser Marktplatz 200 Kategorien nach regionalen Nachfragemustern, Zustandsklassen der Geräte und saisonalen Branchenzyklen bepreist, die kein Standardprodukt abbildet.
Die Pipeline. Jede Regel sieht die Ausgabe der vorherigen; Begrenzung und Protokoll kommen zuletzt:
Python
class PricingEngine:
def evaluate(self, listing, context):
"""Evaluate all active rules in priority order."""
price = listing.base_price
log = []
rules = PricingRule.objects.filter(
is_active=True,
category=listing.category,
).order_by('priority')
for rule in rules:
handler = rule.get_handler()
old_price = price
price = handler.apply(price, context)
log.append({
'rule': rule.name,
'input': old_price,
'output': price,
'delta': price - old_price,
})
# Clamp to category bounds
price = max(listing.category.price_floor, price)
price = min(listing.category.price_ceiling, price)
PriceEvaluation.objects.create(
listing=listing,
base_price=listing.base_price,
final_price=price,
rules_applied=log,
context=context,
)
return priceEine Regeländerung in der Vorschau
Der Entwurf startet mit einem Peak-Aufschlag von 40 % statt 25 %. Vergleiche die Spalten, dann veröffentliche oder verwirf ihn. Schiebe die Nachfrage hoch und das Angebot runter, bis die Obergrenze den Entwurf begrenzt, und beobachte, wie die komponierte Anpassung über die größte Einzelregel hinauswächst.
Regel-EngineUnveröffentlichte Änderungen
Marktkontext
Auswertungs-Pipeline
| Regel | Veröffentlicht | Entwurf |
|---|---|---|
| Basispreis | € 120,00 | € 120,00 |
| Nachfrage-Aufschlag+1 % pro Nachfragepunkt über dem Schwellenwert | ×1,15€ 138,00 | ×1,15€ 138,00 |
| Knappes Angebot+1 % pro Angebotspunkt unter der Untergrenze | ×1,00€ 138,00 | ×1,00€ 138,00 |
| Saison-ModifikatorNur in der Hochsaison. Nebensaison ist fix bei -15 % | ×1,25€ 172,50 | ×1,40€ 193,20 |
| Begrenzung€ 60,00 - € 300,00 | ×1,00€ 172,50 | ×1,00€ 193,20 |
| Endpreis | € 172,50 | +12 %€ 193,20 |
Preis über den Nachfragebereich
+61 %Komponierte Anpassung
+40 %Größte Einzelregel
2Auswertungen protokolliert
0Regelsätze veröffentlicht
Ein Regel-Handler. Schwellenwert und Rate sind Konfiguration, die Rechnung ist Code:
Python
class DemandSurgeRule(BasePricingRule):
"""Increase price when demand exceeds threshold."""
def apply(self, price, context):
demand = context.get('demand_percentile', 50)
if demand > self.config['threshold']:
surplus = demand - self.config['threshold']
multiplier = 1 + (surplus * self.config['rate'])
return round(price * multiplier, 2)
return priceAbsicherung
Wenn eine Regel falsch ist
Vorschaumodus. Eine Regel in der Vorschau wird bei jeder Berechnung ausgewertet und protokolliert, der Live-Preis bleibt unverändert; der Admin zeigt pro Listing Live-Preis und projizierten Preis nebeneinander. 'Was macht diese Regel wirklich?' ist vor dem Veröffentlichen beantwortet.
Grenzen. Jede Kategorie hat eine Unter- und eine Obergrenze, einmal angewendet nach der letzten Regel, sodass keine Kombination von Regeln einen Preis darüber hinaus treiben kann. Drei Regeln, die sich zu 200 % Aufschlag verstärken, enden trotzdem an der Obergrenze; ein Nebensaison-Rabatt fällt nie unter die Untergrenze in die negative Marge.
Das Protokoll. Jede Berechnung wird als PriceEvaluation-Datensatz gespeichert: Listing, Basispreis, jede ausgelöste Regel mit ihrem eigenen Delta, Endpreis. Wenn ein Käufer einen Preis hinterfragt, liest der Support diesen Datensatz, statt die Regeln der Woche zu rekonstruieren.
DAS ERGEBNIS
Was sich am Montagmorgen geändert hat
Am Montagmorgen passiert jetzt nichts mehr. Account Manager ändern Regeln, wenn sich der Markt bewegt, prüfen sie in der Vorschau gegen Live-Preise und veröffentlichen am selben Tag. In den ersten sechs Monaten hat der Vorschaumodus 14 fehlkonfigurierte Regeln gestoppt, bevor sie Käufer erreichten. Die Tabellen-Ära brachte etwa einen Preis-Vorfall pro Monat; seit dem Launch gab es keinen. Der Support klärt einen strittigen Preis aus dem Auswertungsprotokoll in rund drei Minuten statt 45. Der Umsatz pro Listing stieg im ersten Quartal nach dem Launch, und die Engine bepreist heute 200 Kategorien, ohne dass jemand eine Zahl kopiert.
WICHTIGE KENNZAHLEN
+18%Umsatz pro Listing, erstes Quartal nach Launch
0Preis-Vorfälle seit Launch
50kPreisauswertungen pro Tag
KUNDENSTIMME
"Ich ändere eine Regel im Admin, sehe mir die Vorschau neben dem Live-Preis an und veröffentliche. Niemand wartet mehr auf den Montag, und seit dem Launch habe ich keinen Entwickler mehr gebeten, einen Import zu starten."
Head of Sales
B2B-Marktplatz · Vertrieb
FÜR DEIN PROJEKT
- Wann es passt
Preise ändern sich nach Zeitplan oder von Hand, und die Verantwortlichen können keine Änderung ohne Entwickler ausliefern. Dieselbe Form passt auf Gebühren, Provisionen und Rabatte.
- Was du prüfen solltest
Wie ein Preis heute berechnet wird. Wenn zwei Anpassungen gleichzeitig greifen können, entscheide, ob sie sich stapeln oder überschreiben, und halte das fest, bevor es Code gibt.
- Was es braucht
Eine Regeltabelle mit Prioritätsfeld, einen Admin zum Bearbeiten, einen Vorschaupfad und ein Auswertungsprotokoll. Hier waren das Django und PostgreSQL, keine neue Infrastruktur, als Backend- und Produkt-Engagement über 2023-2024.
FAQ
TECHNOLOGIE-STACK
Django
Python
PostgreSQL
Manuel Kasbarian - Geschäftsführer, SophistiXSeit mittlerweile 10 Jahren arbeiten wir immer wieder gerne mit Daniel zusammen. Wir schätzen dabei sehr seine schnellen Reaktionszeiten rund um die Uhr und sein Allroundwissen. Egal ob Serverkonfigurationen oder Programmierungen, er hat immer die passende Lösung.
Schließe dich Manuel an und starte dein nächstes Projekt mit Zuversicht.
Frei für neue ProjekteSchreibe mir