23ac8bc7f1
Phase 9F: Tarif-Seite mit Stripe-Checkout und Billing Portal
...
- Buchungs-Seite zeigt das echte 4-Tier-Raster aus plans (Monat/Jahr-
Toggle, Jahrespreis als "2 Monate gratis") mit Checkout-Buttons,
Einzel-PM als separaten No-Abo-Block und Enterprise-Hinweis;
Credit-Konzept-Mock entfernt (Credits folgen mit 9I bzw. Phase 2)
- Aktueller-Tarif-Panel real: Abo (Preis, Kontingent, Kündigungsstatus),
Bestandstarif (unbegrenzt, nächste MAN-Rechnung), offene Einzelkäufe;
Kontingent-Kachel zeigt "Unbegrenzt" bei Bestandsschutz
- "Abo verwalten" über das Stripe Billing Portal
(me.checkout.billing-portal; Zahlungsmethode, Rechnungen, Kündigung)
- Aktive Buchungen + Verlauf aus echten Daten (Abo, Legacy-Vereinbarung,
offene/eingelöste Einzelkäufe mit PM-Verknüpfung)
- Tests: BookingsPageTest (9 Tests), PanelConsolidationTest angepasst;
Suite 519 passed / 4 skipped
- Doku: PHASE-9-Plan 9F ✅ , Billing-Doku (Routen, Stripe Tax aktiviert),
STATUS-ABGLEICH, Checkliste, PROGRESS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:39:39 +00:00
c8dc99c3c8
Phase 9E (Abschluss): Checkout-Flows und Plan-Kontingent statt Quota-Stub
...
- Checkout-Backend: me.checkout.subscription (Tarif-Abo monatlich/jährlich)
und me.checkout.single-pm (Einzel-PM 19 € netto, pending-Kauf mit
Webhook-Erfüllung); StripeCheckoutService als mockbarer Stripe-Wrapper;
Stripe Tax via Cashier::calculateTaxes() (Netto-Preise, USt-ID-Abfrage)
- Slot-Logik: Kontingent aus dem Tarif (plans.press_release_quota) plus
bezahlte Einmalkäufe; Verbrauch bei Veröffentlichung zuerst aus dem
Plan-Zähler, danach Einlösung des ältesten Einmalkaufs (consumed +
PM-Verknüpfung); Grandfathered = unbegrenzt (Entscheidung 12.06.2026,
Bestandsschutz); Stub-Spalte users.press_release_quota entfernt
- billing:sync-stripe-plans legt zusätzlich das Einzel-PM-Produkt an
(STRIPE_PRICE_SINGLE_PM); Test-Mode-Sync gelaufen
- Buchungs-Seite: Rückmeldung nach Checkout (erfolg/abbruch/Guard-Hinweis)
- Tests: PressReleaseQuotaTest auf Plan-Semantik neu geschrieben,
CheckoutFlowTest (8 Tests), Modal-/API-Tests angepasst; Suite 510 passed
- Doku: Billing-und-Rechnungskreise (Kontingent-Tabelle, Checkout-Routen,
Webhook-Events, Stripe-CLI-Hinweis), PHASE-9-Plan 9E ✅ , Checkliste,
STATUS-ABGLEICH, PROGRESS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:10:32 +00:00
62e6b7e70f
Doku: zentrale Billing-Referenz und Status-Sync Phase 9D
...
- Neues Dokument docs/user-admin/Billing-und-Rechnungskreise.md:
hybride Rechnungskreise (STR-/MAN-/Archiv), Tarif-Datenmodell,
MAN-Faelligkeitslauf, USt-Regeln, Befehle/Scheduler, Konfiguration
(billing.php + Cashier-ENV) und offene Punkte
- README-Index + STATUS-ABGLEICH (Finanzen-Sektion) aktualisiert
- PROGRESS-Eintrag Phase 9D (Datenmodell, Rechnungskreise,
Grandfather-Migration, USt)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 11:02:45 +00:00
4419d9ff43
Phase 9 Block 1: Gelb-Routing Direkt-Live, Slot-Verbrauch bei Veroeffentlichung, Submit-Gate
...
9A — Gelb geht direkt live (Entscheidung 12.06.2026):
- routeByClassification(): Gelb durchlaeuft denselben Auto-Publish-Pfad
wie Gruen (autoPublishApproved); nur Rot wird abgelehnt
- Scheduler publiziert faellige gelbe + gruene PMs; unklassifizierte
bleiben als Fallback in der manuellen Queue
9B — Slot-Verbrauch bei Veroeffentlichung (Decision-Update 3.2):
- Increment aus submitForReview() entfernt; publish() und
changeStatusFromAdmin() zaehlen idempotent beim ersten
published-Uebergang (Pruefung ueber Status-Logs); Rot kostet nichts
- Submit-Guard: Einreichen erfordert freien Slot
(QuotaExceededException, API 422)
9C — Submit-Gate vorbereitet (Decision-Update 5.1):
- User::hasActiveBooking()-Stub hinter config/billing.php
(enforce_booking, Default aus); Tarif-Modul ersetzt nur den Rumpf
- Einreichungs-Modal zeigt ohne Buchung einen Buchungs-Hinweis;
Server-Guard (BookingRequiredException), API antwortet 402
- Fix: Customer-Create legte PMs bei "Zur Pruefung senden" direkt mit
Status review an (vorbei an Blacklist/Quota/KI/Status-Log) — laeuft
jetzt immer ueber submitForReview()
Suite: 451 passed, 4 skipped (9 neue Tests). Pint clean.
Plan: docs/PHASE-9-FLOW-UND-TARIFE-PLAN.md (Block 2 nach Review-Stopp).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 09:47:06 +00:00
8d8d957884
Doku: Status-Sync 11./12.06., Decision-Update Preisstruktur und Phase-9-Plan
...
- Decision-Update Preisstruktur & Veroeffentlichungs-Flow aufgenommen
(Launch-Tarife, Slot-Verbrauch bei Veroeffentlichung, Submit-Gate,
Launch-Credits) inkl. Klarstellung 12.06.: Gelb geht direkt live,
keine manuelle Pruef-Queue, nur Rot wird abgelehnt
- Alle Status-Dokumente auf den Code-Stand gezogen: README-Index,
STATUS-ABGLEICH (KI-Pipeline, Bilder/Lizenzen, Pricing), Checkliste
(KI- und Titelbild-Bloecke, Launch-To-dos), Admin-User,
user-zusammenhaenge (Datenmodell-Delta), Entwicklungsplan KI-Pruefung
(Phase 0 abgehakt, Decision-Abgleich)
- Ueberschriebene Tarif-Abschnitte in Konzept-Update 1/2 und
Relaunch-Konzept mit Superseded-/IST-Hinweisen markiert
- Neues Plan-Dokument PHASE-9-FLOW-UND-TARIFE-PLAN.md (9A-9J)
- Phase-8-Roadmap-Doku (20-PHASE-8-USER-PANEL.md) + PROGRESS-Eintraege
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 09:20:22 +00:00
4bb9094207
29-05-2026 Optimierungen Fixes am Code
2026-05-29 12:42:05 +00:00
e8c47b7553
22-05-2026 Optimierung der User und Admin Panels
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
2026-05-22 11:18:59 +02:00
d2ba22c0cf
create PM v0.5
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
2026-05-20 19:14:39 +02:00
9b47296cea
Rebrand Hub+Flux
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
2026-05-20 15:44:15 +02:00
0a3e52d603
19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration
...
Umbenennung presseportale → pressekonto in Domains, Themes und Dokumentation.
Design-Tokens, Portal-Shell, Customer-Dashboard, Auth- und Admin-PM-Views.
Artisan-Befehl migrate:legacy-media mit Tests und Hub-Flux-Entwicklungsdocs.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 16:36:13 +00:00
092ee0e918
13-05-2026 Frontend DEV + HUB
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
2026-05-13 18:11:03 +02:00
5b8bdf4182
12-05-2026 Frontend dev
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
2026-05-12 18:32:33 +02:00