5.0 KiB
Billing E2E Sandbox-Flow
Stand: 2026-07-05
Dieses Runbook dokumentiert den reproduzierbaren BILL-07-Proof fuer den v1-Billing-Kern. Der Standardlauf nutzt lokale Sandbox-Stubs fuer Lago und Mollie, fuehrt aber dieselbe HiveGrid-Sync-Schicht aus, die auch Provider-Webhooks in den lokalen Billing-State spiegelt.
Ziel
Der Flow beweist:
- Test-Tenant wird als Lago-Customer angelegt.
- Plan + Seat-Subscription wird in Lago angelegt.
- Mollie-Zahlung wird erzeugt und als bezahlt simuliert.
- Provider-Sync aktualisiert
TenantSubscriptionlokal. - Entitlement-/Modul-Gate und Read-only-State reagieren auf den lokalen Billing-State.
- Invoice- und Payment-Referenzen sind sichtbar.
- Sync-Audit und Activity-Eintraege werden geschrieben.
- Negativfaelle
failed,expiredundfrozensetzen den Tenant read-only.
Stub-Proof ausfuehren
Vom Repo-Root:
pnpm exec tsx scripts/billing-e2e-sandbox.ts --run-id=manual-$(date -u +%Y%m%d%H%M%S)
Erwartung:
- JSON-Ausgabe mit
"ok": true. steps[]enthaelt acht erfolgreiche Schritte.activeState.statusistactive.activeState.readOnlyistfalse.gate.activeAllowedisttrue.failedState.statusistpast_dueundfailedState.readOnlyisttrue.pastDueState.statusistpast_dueundpastDueState.readOnlyisttrue.frozenState.statusistfrozenundfrozenState.readOnlyisttrue.referencesVisibleisttrue.audit.auditEventsundaudit.activitiessind groesser/gleich5.
Der Lauf schreibt nicht in die echte Datenbank. Er nutzt deterministische In-Memory-Stubs fuer Provider und DB-Client,
ruft aber applyLagoSubscriptionSync, applyMolliePaymentSync und resolveTenantBillingState aus der echten
HiveGrid-Codebase auf.
Automatischer Test
pnpm --dir packages/billing test -- sandbox-flow.test.ts
Dieser Test ist CI-tauglich, weil keine externen Lago-/Mollie-Credentials gebraucht werden.
Testdaten-Konvention fuer echte Sandbox
Falls der Flow spaeter gegen lago-staging erweitert wird:
- Customer external ID:
hg-stg-bill-07-<short-id> - Plan:
hg-stg-plan-bill-07-<short-id> - Subscription external ID:
subscription-<short-id> - Payment external ID:
payment-<short-id>
Zugang und Tunnel fuer lago-staging stehen in docs/ops/lago-staging.md.
Live-Sandbox-Erweiterung
Der urspruengliche BILL-07-Abschluss war provider-stubbed. Seit 2026-07-04 ist die echte Staging-Verbindung vorbereitet:
lago-stagingist initialisiert.- HiveGrid-Staging erreicht Lago ueber
http://10.42.0.4:3108. - HiveGrid-Staging hat
LAGO_*undMOLLIE_*Runtime-Env auf API/Web/Worker. - Provider-Smoke aus dem laufenden
hivegrid-api-Container: Lago HTTP 200, Mollie HTTP 200. - Synthetischer Lago-Customer und Mollie-Testpayment koennen aus Staging erzeugt werden.
POST /v1/billing/mollie/webhooksist im API-Runtime registriert. Die Route nimmt Molliesidentgegen, refetcht die Zahlung serverseitig bei Mollie und schreibt den lokalen Billing-State ueberapplyMolliePaymentSync. Fuer Self-Service-Checkout-Zahlungen mit Plan-Metadaten schreibt sie zusaetzlich den lokalen Lago-/HiveGrid-Subscription-State ueberapplyLagoSubscriptionSync.
Erledigt fuer den manuellen Staging-E2E:
- Abschluss eines echten Mollie-Test-Checkout-Flows gegen die echte Staging-Tenant
demo-pro-crm. - Mollie-Payment
tr_Nn3WsWmtkTXXYRCenmVTJwurde bezahlt, Webhook kam mit HTTP 200 an, Tenant-Billing-Status steht lokal aufactive. - Staging-Admin fuer interne Billing-Pruefung ist unter
https://staging-admin.hivegrid.de/accounts/billingerreichbar. - Lago-Staging hat echte Demo-Rechnungen fuer
demo-starter-crm,demo-pro-crmunddemo-business-crm. Der HiveGrid-Kundenbereich/:tenant/settings/subscriptionzeigt die Rechnungen fuer alle drei Demo-Tenants an. - Lago-Staging speichert neue Invoice-PDFs im Hetzner-Bucket
hivegrid-staging-lago; der Kunden-Download laeuft ueber HiveGrid als serverseitiger Proxy nach Permission-/Tenant-Pruefung. - Die alten lokalen Demo-Invoices
*-001wurden in Lago voided; aktuelle S3-Demo-Invoices sind*-002. - Billing entity, Logo, German document locale, 14-day payment terms and the neutral Mollie footer are configured in Lago staging.
- Enriched demo invoice
HIV-6711-002-008fordemo-pro-crmverifies the current customer-facing PDF shape through HiveGrid's download route. - Die funktionale Self-Service-Basis ist in HiveGrid verdrahtet:
/:tenant/settings/subscriptionkann oeffentliche Plaene/Seats auswaehlen, erstellt Lago-Customer/Subscription, startet Mollie und verarbeitet Return/Webhook idempotent.
Offen fuer den vollautomatischen Staging-E2E:
- Cleanup-Schritt fuer Lago-/Mollie-Testdaten.
- Wiederholbarer Script-Schritt fuer echte Lago-Plan-/Subscription-/Invoice-Testdaten.
- Browser-Smoke fuer den echten Self-Service-Checkout gegen Staging-Testdaten.
Bis dahin bleibt der Stub-Proof der kanonische, wiederholbare Regressionstest fuer den HiveGrid-Billing-Kern; der Live-Smoke beweist zusaetzlich Provider-Reachability, Checkout-Link-Erzeugung und die API-WebHook-Grenze aus Staging.