CluPilotCloud/app/Actions
nexxo af05ed6694 Kapazitaetspruefung hinter den Idempotenz-Kurzschluss verschoben
Durchsicht (R22): die Pruefung stand in __invoke(), vor book()s Kurzschluss
fuer einen wiederholt zugestellten Webhook ("Idempotent against a retried
webhook"). Damit fragte jede Wiederholung erneut "passt NOCH ein Block
drauf" - obwohl keiner hinzukommt - und ein laengst bezahlter, laengst
gebuchter Vorgang quittierte die Wiederholung mit einem Fehler, sobald der
Host zwischenzeitlich eng geworden war. Genau das Szenario, fuer das diese
Aufgabe gebaut wurde, nur gegen den eigenen Kunden gerichtet.

Jetzt sitzt die Pruefung in book(), hinter dem order_id+addon_key-Kurzschluss:
eine Wiederholung bekommt ihre bestehende Buchung zurueck, ohne die Frage
erneut zu stellen. Eine echte neue Buchung durchlaeuft die Pruefung wie
zuvor. Deckel (quantityRefusal) und Domain-Ausschluss bleiben unangetastet -
sie haben dasselbe Muster im Kleinen, sind aber nicht Gegenstand dieses
Befundes.

Neuer Test: derselbe Auftrag wird zweimal gebucht, der Host wird zwischen
den beiden Aufrufen eng - der zweite Aufruf gibt die vorhandene Buchung
zurueck statt zu werfen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 14:18:01 +02:00
..
Fortify Passwortrichtlinie einstellbar, doppelte Anmelde-Mail behoben 2026-07-31 20:53:19 +02:00
ApplyPlanChange.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
ApplyStorageAllowance.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
ApplyStripeBillingEvent.php Mahnwesen: Sperre und Freigabe, zusammen gebaut 2026-07-31 22:19:42 +02:00
BookAddon.php Kapazitaetspruefung hinter den Idempotenz-Kurzschluss verschoben 2026-08-01 14:18:01 +02:00
EndInstanceService.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
GrantAddon.php Decide who may have their own domain, and decide it in one place 2026-07-29 15:59:04 +02:00
GrantSubscription.php Let a subscription or add-on be opened for free, with who and why on the row 2026-07-29 12:41:06 +02:00
IssueStripeInvoice.php Charge the price the website shows, and hand a withdrawal back in full 2026-07-29 22:42:02 +02:00
MoveStripeSubscriptionPrice.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
OpenDunningCase.php Zweite Fix-Runde: Regressionen der ersten (Trockenlauf, Doppelmail, Bestand, Isolierung) 2026-07-31 23:02:13 +02:00
OpenSubscription.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
ReapplyInstanceAddress.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
RecordCommercialEvent.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
RestartInstance.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
ResumeInstance.php Mahnwesen: Sperre und Freigabe, zusammen gebaut 2026-07-31 22:19:42 +02:00
SettleDunningCase.php Fix-Runde: Reichweite der Sperre, keine doppelte Gebuehr, verlorene Nachricht 2026-07-31 22:57:56 +02:00
StartCustomerProvisioning.php Say the same thing to the customer, the register and the bank 2026-07-30 01:30:24 +02:00
StartHostOnboarding.php Hostnamen vergibt CluPilot: ein Name statt zweier, und der Zaehler ueberlebt das Loeschen 2026-08-01 13:45:43 +02:00
SuspendInstance.php Mahnwesen: Sperre und Freigabe, zusammen gebaut 2026-07-31 22:19:42 +02:00
SyncStripeAddonItems.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
VerifyCustomerVatId.php Ask the EU register whether a VAT number is real 2026-07-29 22:42:29 +02:00
WithdrawContract.php Stop charging for a service that has ended 2026-07-30 00:52:19 +02:00