Plan: Hub-Inhalts-Audit + Rechtstexte-Einbau dokumentiert (E2 B2B-only)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 15:55:07 +00:00
parent 110f97db6b
commit e2758ffdd3

View file

@ -14,6 +14,7 @@ R2.1 Kontaktformular komplett (Backend + Web-Form, Brand-Empfaenger via CONTACT_
**03.07. nachmittags (User-Vorgaben):** Preise/Limits der Buchungsseite sind die abgestimmte Wahrheit; Pipeline verifiziert: admin/payments/plans pflegt Plan-DB (inkl. Vorteile zeilenweise) -> erscheint auf Buchungsseite, oeffentlicher Preise-Seite, pricing-teaser UND (neu) Hub. **Vorteilstexte selbst sind noch nicht final [EXTERN: User passt sie im Admin-UI an — schlaegt automatisch ueberall durch].** **03.07. nachmittags (User-Vorgaben):** Preise/Limits der Buchungsseite sind die abgestimmte Wahrheit; Pipeline verifiziert: admin/payments/plans pflegt Plan-DB (inkl. Vorteile zeilenweise) -> erscheint auf Buchungsseite, oeffentlicher Preise-Seite, pricing-teaser UND (neu) Hub. **Vorteilstexte selbst sind noch nicht final [EXTERN: User passt sie im Admin-UI an — schlaegt automatisch ueberall durch].**
R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-Grid aus Plan::active() via neuem `HubPageData`, echte Plattform-Kennzahlen statt erfundener, Fake-Kundenliste raus, alle toten Links beseitigt, unhaltbare Claims entschaerft, Footer-Rechtslinks auf /de/*-Seiten der Hub-Domain). Hub-Rechtsseiten sind erreichbar, brauchen aber weiterhin finale Texte (R3.1). R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-Grid aus Plan::active() via neuem `HubPageData`, echte Plattform-Kennzahlen statt erfundener, Fake-Kundenliste raus, alle toten Links beseitigt, unhaltbare Claims entschaerft, Footer-Rechtslinks auf /de/*-Seiten der Hub-Domain). Hub-Rechtsseiten sind erreichbar, brauchen aber weiterhin finale Texte (R3.1).
**Naechste Schritte:** R2.4 (Sitemap/robots/meta) ohne User-Input machbar; R3 Inhalte + R1.2 Stripe-Live [EXTERN]. **Naechste Schritte:** R2.4 (Sitemap/robots/meta) ohne User-Input machbar; R3 Inhalte + R1.2 Stripe-Live [EXTERN].
**03.07. abends — Hub-Inhalts-Audit + Rechtstexte (Entscheidung E2: B2B-only!):** Alle Hub-/Web-Inhalte gegen den echten Funktionsstand geprueft und korrigiert (Startseiten-Claims, FAQ, Hilfe, Veroeffentlichen, API-Doku inkl. OpenAPI); kontakt/ueber-uns zurueckgebaut; Rechtstexte aus docs/legal eingebaut (Impressum echt, AGB v0.6, /richtlinien, /melden); Widerrufs-UI raus (E2), Submit-Modal auf Archiv-Hinweis (T2neu); Preise nach Leistungsbeschreibung v0.2. Details in R3.0–R3.2. **Wichtigste offene Folgepunkte:** T1neu Unternehmer-Checkbox im Checkout, Datenschutz-/Cookie-Texte fehlen noch in docs/legal, legal_documents-Versionierung (E3), anwaltliche Freigabe AGB v0.6 [EXTERN].
--- ---
@ -78,11 +79,11 @@ R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-G
## Phase R3 — Inhalte [EXTERN, früh anstoßen, parallelisierbar] ## Phase R3 — Inhalte [EXTERN, früh anstoßen, parallelisierbar]
- [x] **R3.0 Online-Widerruf (gesetzlicher Widerrufsbutton)** — Erledigt 03.07.: „Vertrag widerrufen"-Button im Hub-Footer → zweistufiges Modal (nur Zuordnungsdaten, kein Grund) → `POST /widerruf` (host-agnostisch) persistiert `withdrawal_requests` + sofortige automatische Eingangsbestätigung per Mail an den Verbraucher + interne Benachrichtigung an die Brand-Adresse. Admin-Queue in Recht & Compliance erledigt. **Offen als Follow-up:** Button ggf. auch auf den Spoke-Footern platzieren (Verträge werden nur über den Hub geschlossen — rechtlich prüfen lassen). - [x] **R3.0 Online-Widerruf (gesetzlicher Widerrufsbutton)** — Umgesetzt 03.07., **danach per Entscheidung E2 (B2B-only, `docs/legal/Entscheidung.md` v2.0) zurückgebaut:** Das Angebot richtet sich ausschließlich an Unternehmer (§ 14 BGB), ein Widerrufsrecht besteht nicht — Button + Modal aus Hub-Footer/Static-Shell entfernt, Widerrufsbelehrung archiviert. Backend (`POST /widerruf`, `withdrawal_requests`, Mails, Admin-Queue) bleibt schlafend erhalten und ist bei B2C-Öffnung reaktivierbar.
- [x] **R3.0b Kündigungsbutton § 312k BGB** — Erledigt 03.07.: „Verträge hier kündigen"-Button im Hub-Footer (ständig verfügbar) → öffentliche Bestätigungsseite `/de/kuendigung` ohne Login (Art der Kündigung ordentlich/außerordentlich mit Grund, Zuordnungsdaten, Beendigungszeitpunkt, Bestätigungsschaltfläche „jetzt kündigen") → persistiert `termination_requests` + sofortige automatische Zugangsbestätigung per Mail (§ 312k Abs. 4) + Betreiber-Mail. Kündigungen laufen in der Recht-&-Compliance-Queue unter den Widerrufen auf (K-Vorgänge, eigener Filter, Erledigt/Wieder-öffnen). - [x] **R3.0b Kündigungsbutton** — Erledigt 03.07.: „Verträge hier kündigen"-Button (Hub-Footer + jetzt auch Spoke-Footer) → öffentliche Bestätigungsseite `/de/kuendigung` ohne Login → persistiert `termination_requests` + sofortige Zugangsbestätigung per Mail + Betreiber-Mail; Admin-Queue mit K-Vorgängen. **Einordnung nach E2:** § 312k ist im B2B keine Pflicht — der Selfservice bleibt bewusst als Anti-Zombie-Standard (T3neu).
- [x] **R3.0c Erlöschens-Checkbox im Publikationsflow** — Erledigt 03.07.: Vierte Bestätigung im Einreichungs-Modal („sofortige Ausführung, Widerrufsrecht erlischt mit vollständiger Vertragserfüllung", § 356 Abs. 4/5 BGB); Zeitpunkt wird beim Submit als `withdrawal_waiver_consented_at` an der PM protokolliert. Index-Schnell-Submit (wire:confirm) durch das gemeinsame Modal ersetzt — der Pfad umging bisher alle rechtlichen Bestätigungen. Formulierung der Klausel vor Go-Live anwaltlich prüfen (O1). - [x] **R3.0c Erlöschens-Checkbox → Archiv-Hinweis (T2neu)** — Die § 356-Erlöschens-Bestätigung entfiel mit E2 (B2B-only); an ihrer Stelle verlangt das Einreichungs-Modal jetzt die von AGB § 13 Abs. 1 geforderte Bestätigung der dauerhaften Archivierung (Depublikation nur als kostenpflichtiger Service, gesetzliche Ansprüche unberührt). Zeitpunkt wird weiter als `withdrawal_waiver_consented_at` protokolliert (Spaltenname historisch — Umbenennung optional). Index-Schnell-Submit (wire:confirm) bleibt durch das gemeinsame Modal ersetzt.
- [ ] **R3.1 Rechtstexte final** — **Architektur beschlossen (03.07., `docs/legal/Rechtstexte-Architektur.md`):** Single-Source-Rechtstexte in der Hub-DB (`legal_documents` + `legal_document_sections`, versioniert, Portal-Flags, Platzhalter-Variablen), auf allen drei Domains nativ gerendert; AGB-Zustimmung mit `agb_version_id` protokollieren; neue Seiten Widerrufsbelehrung+Musterformular (nur Hub), Meldeverfahren (DSA), Redaktionsrichtlinien. Erlöschens-Checkbox (R3.0c) und Kündigungsbutton § 312k (R3.0b) sind bereits umgesetzt. Inhalte formuliert der User gerade aus — Umsetzung des Datenmodells + Admin-Pflege, sobald erste Texte vorliegen. Vorarbeit erledigt: Hub-Gerüst auf den statischen Seiten (Rechtsseiten/API/FAQ rendern host-aware Hub-Header/-Footer). — `agb`, `datenschutz`, `impressum`, `cookies` sind explizit als „Platzhalter — vor Go-Live ersetzen" markiert. Ohne finale Texte **kein Go-Live** (Abmahnrisiko). Cookie-Consent-Setup klären. - [~] **R3.1 Rechtstexte final** — **Inhalte eingebaut 03.07. (Quelle: `docs/legal/*`, untracked):** Impressum (echte Anbieterdaten adametz.media/Bielefeld, DDG, MStV, DSA-Kontaktpunkt via neuer `REPORT_EMAIL_*`-Keys), AGB v0.6 (B2B-Fassung, §§ 1–16, interne Anwalts-Anmerkungen entfernt), neue Seiten `/richtlinien` (Rahmentext + K1–K6 statisch) und `/melden` (DSA/DSGVO/Änderung/Depublikation, verdrahtet mit den bestehenden Melde-Links je PM); Footer + Sitemap ergänzt; Preise-Seite nach Leistungsbeschreibung v0.2 (B2B-Satz, T9-Credit-Anker, Slots/Credits/Boost/Partner-Blöcke, T16-Wording inkl. PlanSeeder). **Noch offen:** (a) `datenschutz` + `cookies` weiter Platzhalter — Datenschutzerklärung v0.3 liegt noch nicht in docs/legal, Cookie-Texte müssen zum echten Setup passen (kein GA/Tracking im Code!); (b) legal_documents-Versionierung + `agb_version_id` an Buchungen (E3) und rejection_categories-DB; (c) Backlog aus Entscheidung v2.0: T1neu Unternehmer-Pflicht-Checkbox im Checkout (protokolliert), T10 DSA-Meldeformulare mit URL-Feld + Vorgangsnummer, T12 Depublikations-Checkout, T13 „Inhalt melden"-Button prominenter an PM; (d) AGB v0.6 ist anwaltsreif, aber noch nicht anwaltlich freigegeben [EXTERN].
- [x] **R3.2 Marketing-Seiten: Inhalt oder Rückbau** — Entschieden + umgesetzt 03.07. (User: Rückbau): `presse`, `team`, `karriere`, `partner` samt Routen entfernt; altes Scaffold (livewire web.burger-menu/header/footer) mit raus. Legacy-Links: team/partner/karriere `.html` → 301 Startseite, presse/* behält die 301-Regel auf /faq. Seiten können später mit echten Inhalten zurückkommen (git-Historie). **Verbleibend:** `hilfe` (dünn) und `ueber-uns` (Platzhalter-Kennzahlen) sind weiter live — Inhalte bei Gelegenheit schärfen [EXTERN]. - [x] **R3.2 Marketing-Seiten: Inhalt oder Rückbau** — Entschieden + umgesetzt 03.07. (User: Rückbau): `presse`, `team`, `karriere`, `partner` und (2. Runde) `kontakt`, `ueber-uns` samt Routen entfernt (erfundene Adresse/Telefon/Anfahrt bzw. Team/Kennzahlen/Timeline); GET-Alt-Pfade → 301 Startseite, `kontakt.store`-POST bleibt fürs Hub-Modal, Spoke-Footer-Kontakt als mailto (Fallback Betreiber-Postfach bis R2.1). `hilfe` und `faq` inhaltlich auf den echten Funktionsstand gebracht (tote #-Links raus, echte Limits/Features), `veroeffentlichen` vom Fantasie-Preismodell („ab 89 €", Credits je PM, Cross-Publishing separat) auf echte Konditionen umgestellt (datengetrieben via `VeroeffentlichenPageData`). `api`-Seite komplett neu als echte Referenz + OpenAPI `docs/api/v1.yml` (Route lief vorher auf nie existierende Datei → 500 aus Hub-Footer/FAQ).
--- ---