Zum Hauptinhalt springen

Listings

Ein Listing wird erst öffentlich sichtbar, wenn das Item beim Bot liegt.

Listing-Erstellung

Beim Erstellen eines Marketplace-Listings synchronisiert das Backend das Steam-Inventar des Verkäufers direkt vor dem Persistieren des Listings erneut und lädt die angefragten itemIds danach frisch aus der Datenbank.

So werden veraltete Steam-assetIds abgefangen, bevor der Bot eine ungültige Trade-Offer sendet.

Wenn sich das Inventar zwischen Anzeige und Listing-Erstellung geändert hat und die angefragte Inventory-Zeile keine aktuelle assetId mehr besitzt, bricht das Backend mit 409 ab. Das Frontend zeigt dann eine verständliche Meldung an, dass das Inventar aktualisiert werden muss.

Lifecycle

  • Seller listet ein Item.
  • Seller überträgt das Item zunächst an den Bot.
  • Erst wenn das Item beim Bot liegt, wird das Listing öffentlich sichtbar.
  • Wenn auf dem Bot noch eine Steam-Handelssperre aktiv ist, bleibt das Listing sichtbar und zeigt die verbleibende Verfügbarkeit an.
  • Offer- und Counteroffer-Logik laufen weiter über den Chat.
  • Nach Deal-Akzept sendet der Bot das Item an den Buyer, sobald Steam es erlaubt.

Bot-Zuordnung

Listings speichern den zugewiesenen botId dauerhaft. Ein bereits laufendes Listing bleibt also an seinem Bot hängen, auch wenn STEAM_DEFAULT_BOT_ID später geändert wird.

Alte Inventory-Zeilen

Wenn Steam für dasselbe sichtbare Item später eine neue assetId vergibt, behandelt der Sync diese neue assetId als neue konkrete Steam-Instanz.

Alte UserInventory-Zeilen mit Listing- oder Trade-Historie werden nicht gelöscht, sondern assetlos und nicht handelbar geparkt. Das schützt Historie und verhindert Cascading Deletes.

Pending-Intake-Listings ohne bereits erzeugte Steam-Offer werden automatisch storniert, wenn der Sync das referenzierte Steam-Asset nicht mehr im Verkäufer-Inventar findet. Die alte Inventory-Zeile wird dann wieder selectedForSale = false, sofern kein anderes aktives Listing auf ihr bleiben muss.