Release-Doku: Commit-Session vermerkt + Wiedereinstieg fuer morgen

7-Commit-WIP-Aufraeumung + R5.3/Buchungsdaten im Stand-Block, R6.5-WIP-Punkt
abgehakt, neuer Block 'Wo es morgen weitergeht'.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-09 15:54:16 +00:00
parent d1939f6f2a
commit 60d0d9b103

View file

@ -25,12 +25,27 @@ R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-G
**07.07. — QA-Abschnitt A abgenommen + Billing/USt-Haerten + Tarifwechsel/Downgrades:** QA-Checkliste Abschnitt A (Login & Konto) komplett manuell abgenommen; dabei 3 2FA-Befunde gefixt: 2FA-Einrichtung verlangt jetzt Code-Bestaetigung (vorher keine Login-Challenge), Recovery-Codes nur noch einmalig sichtbar, falscher Challenge-Code crasht nicht mehr (fehlende Route `two-factor.login`); E-Mail-Wechsel jetzt als Pending-Flow mit Bestaetigungslink an die neue Adresse. **Stripe-USt vervollstaendigt:** `automatic_tax` in der Checkout-Session aktiviert (USt fehlte vorher in der Session), STR-Rechnungsspiegelung liest USt aus `total_taxes` (Stripe-API liefert kein `tax`-Feld), Profil-Rechnungsadresse als Stripe-Rechnungsempfaenger (Wallet-Daten ueberschreiben sie nicht mehr); Rechnungsseite listet neue STR/MAN-Rechnungen (STR verlinkt ins Stripe-Portal), Archiv-Filter entfernt, Altsystem-Archiv nur noch fuer Bestandskunden. **Tarifwechsel im Buchungs-Modal:** Abo-Swap mit anteiliger Verrechnung; Downgrades ohne Gutschrift erst zum Periodenende, Kontingent-Sperre beim Wechsel. **UX-Runde:** Volltext-Suchindex (+ Fix doppelte Alpine-Instanz), PM-Vorschau im echten Portal-Design mit Portal-Switch, Ablehnungsbegruendung direkt im Editor, Einreichen-Modal-Panelstruktur + fixierter Kontingent-Badge, Add-ons-Modal statt Toast bei fehlendem Guthaben, Depublikations-Sektion ans PM-Seitenende + Direktlinks je Portal, `single_purchases`-ENUM um `depublication` erweitert, abgebrochener Depublikations-Checkout blockiert nicht mehr.
**08.07. — Agentur-Attribution + Depublikations-Kauf + eVatR-USt-ID-Pruefung:** Agentur-Attribution neu geloest — Uebermittler kommt aus neuem Profilfeld `users.agency_name` statt eigener Agentur-Firma; PM-Detailseite zeigt Urheber/Uebermittler-Zeile; `legacy:migrate-agency-names` uebertraegt die Alt-Agenturnamen; `companies:retire-agency-type` schafft den Firmen-Typ „Agentur" ab; Firmen-Typ-Auswahl aus der Profil-UI entfernt (Plan abgehakt, Abnahme 08.07. dokumentiert). **Depublikation end-to-end:** Kauf wird als eingeloest markiert, erzeugt Rechnung + Bestaetigungs-Mail; Buchungsseiten-Verlauf zeigt den Kauftyp, Erfolgsmeldungen gruen. **USt-ID-Pruefung (neu):** vor jeder Buchung per eVatR (EU-VIES) gegengeprueft, Stripe-Tax-IDs abgeglichen; eigene USt-IdNr. aus `BILLING_OWN_VAT_ID`. Deploy-Runbook §3a ergaenzt: FULLTEXT-Migrations-Wartungsfenster fuer `press_releases` (bei importiertem Bestand faellt jede Spaltenaenderung auf ALGORITHM=COPY = Stunden; Ablauf Indizes droppen -> migrieren -> nacheinander neu bauen = ~6 Min).
**09.07. — KI-Kennzeichnung (Art. 50 KI-VO) + PM-Editor-UX + Tages-Fixes (Suite: 1142 gruen):** KI-Kennzeichnung als **Pflicht-Deklaration fuer Text und Bilder** umgesetzt (Enums `AiTextDeclaration`/`AiImageDeclaration`, Model `PressReleaseAiDeclaration` + Migrations, Concern `InteractsWithAiDeclaration`, `AiDeclarationRequiredException`, oeffentliches Label `portal/ai-public-label`, Test `PressReleaseAiDeclarationTest`) — EU-KI-VO Art. 50 Transparenzpflicht. PM-Editor-UX: Kategorie in die Schreibflaeche, Bild-Upload als Modal-Flow. **Tages-Fixes:** OpenAPI-Route `/docs/api/v1` auf `public/api/v1.yml` umgebogen (der `docs/`-Ordner ist ein nicht mitgekommener Mount; Route lief sonst 500) + 404-Guard; `depublish`-Credits `25 -> 35` (Entscheidung O6) in config bestaetigt und die zwei stehen gebliebenen Preis-Tests nachgezogen. Suite wieder komplett gruen (1142).
**Noch uncommittet im Arbeitsbaum (WIP, jeweils mit Tests) — vor R6.5 in fokussierte Commits zerlegen:** Kontakt-Nachrichten-Feature (`ContactMessage`-Model/Enums/Factory/Migration + Admin-Queue-Livewire, `ContactMessagesAdminTest`), Validierungs-Feedback (`PressReleaseValidationFeedbackTest` + `pr-error-summary`), Page-Data-Cache (`PageDataCacheTest`), Company-Portal-Restriction (`CompanyPortalRestrictionTest`), Lang-Auslagerungen (`lang/{de,en}/auth|passwords|validation|static`), `contact-launcher`/`legal-language-notice`-Komponenten. Ausserdem ist der komplette `docs/`-Ordner im Arbeitsbaum geloescht (Mount nicht mitgekommen) — **bewusst ignoriert (User 09.07.)**, die einzige code-relevante Datei `docs/api/v1.yml` liegt jetzt als `public/api/v1.yml` vor.
**09.07. abends — R5.3 Monitoring + Buchungsdaten + kompletter WIP in 7 Commits committet (Suite: 1149 gruen):** (a) **R5.3 Monitoring** umgesetzt (Details in R5.3): `OperationalAlert` (immer `Log::critical` + Best-Effort-Mail an `MONITORING_ALERT_EMAIL`), alle 6 Scheduler-Tasks mit `->onFailure()`, Queue-`failing`-Listener, `LOG_STACK=daily` als Prod-Soll. (b) **Buchungs-/Verlaengerungsdatum** des Abos auf der Buchungsseite (`SubscriptionPeriodResolver` holt `start_date` + `current_period_end` gecacht aus Stripe, da Cashier die Periode nicht lokal spiegelt). (c) Den kompletten bis dahin uncommitteten Arbeitsbaum in **7 fokussierte Commits** zerlegt (Branch jetzt **~187 vor `main`**): OpenAPI-Route auf `public/api/v1.yml` (500-Fix) · Depublish-Credit 35 · Buchungs-/Verlaengerungsdatum · R5.3 Monitoring · Release-Doku · Backend-WIP (Kontakt-Queue, Page-Cache, Validierungs-Feedback, Company-Portal-Restriction, i18n-Auslagerung) · Web-Frontend-Umbau (separat, User-Bereich; Kontakt-Modal durch `contact-launcher` ersetzt). **Bewusst uncommittet belassen:** `sidebar.blade.php` (User-Regel, aus allen Commits ausgeschlossen), der geloeschte `docs/`-Mount + `config/pressekonto.code-workspace` (Mount nicht mitgekommen — die einzige code-relevante Datei `docs/api/v1.yml` liegt jetzt als `public/api/v1.yml` vor), zwei Dev-Screenshots in `dev/frontend/booking/`.
**Wiedereinstieg / naechste Schritte:**
1. ~~Klaerungsliste Rechtstexte~~ **erledigt 06.07.**; ~~R3.1-Restbacklog~~ **erledigt 06.07.** (siehe oben).
2. **[EXTERN]:** Postfach `info@pressekonto.com` anlegen (Haupt-Rechts-Mail, 06.07.); CONTACT_EMAIL_*-Support-Postfaecher je Brand; REPORT_EMAIL_* optional · R1.2 Stripe-Live · R1.4 Preisfreigabe · R5.4 Favicons · anwaltliche Freigabe AGB v0.6/Datenschutz v0.3. (~~Depublikations-Preis~~ entschieden: 35 EUR netto.)
3. **Phase-2-Rest (bewusst nach Launch):** T11-Ausbau DSA-Queue (Basis existiert) · englische Rechtstexte (O-C, nach Sprachvarianten-Entscheidung) · oeffentliche Versionshistorie der Rechtstexte (O-D) · Ablehnungs-Mails mit Kategorie-Link (rejection_categories im Reject-Flow verdrahten).
4. **Dann:** R6.1 manuelle QA-Durchgaenge (User, per qa-checkliste.md), R6.3 Staging-Rehearsal [EXTERN], R6.4 Go-Live-Kette, R6.5 Git-Hygiene-Rest: Branch (~180 Commits vor main, Stand 09.07.) pushen + mergen + Release-Tag, sobald freigegeben — **vorher den uncommitteten WIP (s. Stand-Block oben) in fokussierte Commits zerlegen**; optional die drei user_filter_presets-Migrations zusammenfuehren. (~~SQL-Dump-Entscheidung~~ erledigt 06.07.: enttrackt + ignoriert.)
4. **Dann:** R6.1 manuelle QA-Durchgaenge (User, per qa-checkliste.md), R6.3 Staging-Rehearsal [EXTERN], R6.4 Go-Live-Kette, R6.5 Git-Hygiene-Rest: Branch (~187 Commits vor main, Stand 09.07.) pushen + mergen + Release-Tag, sobald freigegeben (~~vorher WIP zerlegen~~ **erledigt 09.07., 7 Commits**); optional die drei user_filter_presets-Migrations zusammenfuehren. (~~SQL-Dump-Entscheidung~~ erledigt 06.07.: enttrackt + ignoriert.)
---
## ▶ Wo es morgen weitergeht (Stand 09.07.2026 abends)
**Ausgangslage:** Arbeitsbaum ist aufgeraeumt — der gesamte WIP ist in 7 Commits auf `fix/zeitzone-europe-berlin` (~187 vor `main`), Suite gruen (1149). Uncommittet bleiben nur bewusst: `sidebar.blade.php` (User), der `docs/`-Mount + `config/pressekonto.code-workspace`, zwei Dev-Screenshots.
**Als Naechstes in meiner Hand (kein externer Input noetig), Empfehlung in dieser Reihenfolge:**
1. **QA-Checkliste B–G vertiefen** (`qa-checkliste.md`) — Abschnitte Admin-Backend, Customer-Panel, Billing, API, Frontend, Betrieb gegen den aktuellen Code durchgehen und konkretisieren, was wirklich nur noch manuell/Staging bleibt. Reine Pruef-/Doku-Arbeit, gut fuer den Einstieg.
2. **R4.3 Dedup** (optional, „nur wenn Zeit") — Release-Card vereinheitlichen, Industrie-Icon-Map → Config, Inline-SVGs → Icon-Set. Kein Blocker.
3. **R6.5 optional:** die drei `user_filter_presets`-Migrations zusammenfuehren (Hygiene vor Go-Live).
**Wartet auf Dich / extern (nicht durch mich abschliessbar):** R6.5 Branch push + merge + Release-Tag (Dein Go) · R1.2 Stripe-Live · R1.4 Preisfreigabe · R1.5 Refund-Entscheidung · R2.5 legal-request-Texte · R5.4 Favicons · R6.3 Staging-Rehearsal · R6.4 Go-Live-Kette · Postfach `info@pressekonto.com` · anwaltliche Freigabe.
**Bewusst nachgelagert (nicht Teil dieses Release):** Sentry/APM · User-Panel-Vollflow · Newsletter-DOI · EN-Rechtstexte · T11-DSA-Queue-Ausbau.
---