presseportale/dev/roadmap.md
Kevin Adametz 53e3b270e0 dev: Vorgehen bei sensiblen Daten in der Historie dokumentiert, Roadmap 1.1/1.2 erledigt
- git-deploy.md Abschnitt G: Rotieren, Sichern, Umschreiben, Prüfen,
  Hash-Zuordnung, Push, Server, Forgejo/NAS, lokales Aufräumen
- Protokoll: Speicherbereinigung in Forgejo und auf dem NAS erledigt,
  keine weiteren Klone, Live-Schlüssel bereits rotiert
- Agenten-Regel: keine personenbezogenen Daten oder Schlüssel ins Repository
- Roadmap: 1.1 und 1.2 erledigt, Context7 und lokales MySQL-Root unter 1.3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:53:24 +00:00

185 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Roadmap
**Stand:** 09.10.2026 · Release **v1.7.0** · Live seit 20.07.2026 (pressekonto.com, presseecho.de, businessportal24.com)
Diese Datei ist **die einzige laufende Liste offener Punkte**. Sie fasst alle
Pläne, Audits und Protokolle unter `dev/` zusammen (Abgleich gegen Code und
Git am 09.10.2026). Die Einzeldokumente bleiben als Begründung und Historie
erhalten und sind je Punkt verlinkt. Neue offene Punkte kommen hierher, nicht
in die Einzeldokumente; erledigte Punkte werden durchgestrichen und mit Datum
oder Release versehen.
| Aufwand | Bedeutung |
|---|---|
| S | eine Stunde bis ein halber Tag |
| M | ein bis drei Tage |
| L | länger oder abhängig von Dritten |
**[EXTERN]** = liegt beim Betreiber, Anwalt, Steuerberater oder Partner, nicht im Code.
**[LIVE]** = einmaliger Nachweis bzw. Handgriff auf dem Server.
---
## 0. Lage
- **Seit Go-Live erledigt:** Roadmap Nutzergewinnung Block 0–2 und RSS (3.1),
Audit 11.09. mit Blöcken 1–10 (live als v1.1.0), Bildrechte Deploy 1, 1b, 2,
2b (28.09.), Git-Deploy (v1.1.3), Volt entfernt (v1.2.0),
Rechnungsversand, Betriebsüberwachung Phase 1 und externer Monitor,
Sicherheitsaudit 07.10. S-01 bis S-06 (v1.4.0–v1.6.0), Spamschutz (v1.7.0).
- **Was offen ist:** vor allem **Rechtstexte und Freigaben** (ein
Anwaltspaket), einige **Nachweise auf Live**, zwei **Altlasten mit
Personenbezug** (SQL-Dumps in der Git-Historie, nicht rotierte Schlüssel)
und der **Wachstumsteil** (Block 3, Changelog, Monitoring Phase 2/3).
- **Was fehlt, um Wachstum zu bewerten:** Die Abbruchbedingungen der
Roadmap-Blöcke 1–3 tragen weiterhin Platzhalter für Zeitraum und
Schwellwert (Punkt 6.1).
### Releases seit Go-Live
| Release | Datum | Inhalt |
|---|---|---|
| v1.0.0 | 21.07. | Go-Live |
| v1.1.0 | 05.10. | Audit-Blöcke 1–10, Betriebsüberwachung Phase 1 (letzter SFTP-Deploy) |
| v1.1.1–v1.1.3 | 06.10. | GlitchTip-Fixes, Git-Deploy live |
| v1.2.0 | 06.10. | Volt entfernt, Livewire-4-Single-File-Components |
| v1.3.0–v1.3.2 | 06.10. | Rechnungsversand, fehlgeschlagene Anmeldungen, Worker-Prüfung im Deploy |
| v1.4.0/v1.4.1 | 07.10. | Sicherheitsaudit S-01–S-06, Passkeys, Zweitfaktor-Pflicht für Admins |
| v1.5.0 | 08.10. | Proxy-Vertrauen, HSTS, API-Zugang endet mit der Buchung |
| v1.6.0/v1.6.1 | 08.10. | Andere Geräte abmelden, IP-Login-Limit, Passwortregeln, CSP im Melde-Modus, Imagick |
| v1.7.0 | 09.10. | Spamschutz mit Cloudflare Turnstile |
---
## 1. Sofort — Altlasten mit Personenbezug und Zugangsdaten
| # | Punkt | Quelle | Aufwand |
|---|---|---|---|
| ~~1.1~~ | ~~**Produktiv-SQL-Dumps in der Git-Historie.**~~ **Erledigt 09.10.2026:** aus allen Branches und Tags entfernt (Inhalt unverändert, Hashes neu, Zuordnung in [`commit-map-2026-10-09.txt`](archive/commit-map-2026-10-09.txt)), Force-Push auf `origin` und `NAS`, Server abgeglichen, Speicherbereinigung in Forgejo und auf dem NAS, keine weiteren Klone. Vorgehen für künftige Fälle: [git-deploy.md, Abschnitt G](betrieb/git-deploy.md). | [Release-Plan R6.2](archive/release/entwicklungsplan-release.md) | — |
| ~~1.2~~ | ~~**Schlüssel rotieren**~~ — **Live-Schlüssel bereits rotiert** (OpenAI, Google OAuth, Mail-Zugang, Connektar; Betreiber, bestätigt 09.10.2026). Offen bleiben nur die Entwicklungsschlüssel unter 1.3: Context7 (stand in `.mcp.json`, Git-Historie) und das lokale MySQL-Root-Passwort (Git-Historie). | [optimize 14.07. K2](archive/optimize/optimize-14-07-2026.md), [Sicherheitsplan](sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md) | — |
| 1.3 | **Dev-Container neu erstellen.** `docker-compose.yml` ist bereinigt, im laufenden Container sind `DB_CONNECTION` … `DB_PASSWORD` aber weiter als Umgebungsvariablen gesetzt — genau die Ursache des Datenverlusts vom 07.10. Danach lokalen `APP_KEY` reparieren (33 statt 44 Zeichen, ungültig) und Cloudflare-Testkeys in die lokale `.env`. Context7-Schlüssel und lokales MySQL-Root-Passwort rotieren (beide in der Git-Historie). | [Sicherheitsplan](sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md), [Spamschutz](sicherheit/ENTWICKLUNGSPLAN-SPAMSCHUTZ-2026-10-09.md) | S |
| ~~1.4~~ | ~~**Lokale Dateien mit Personenbezug**~~ — **gelöscht 09.10.2026:** `dev/migration/` (7,4 GB), `dev/archive/migration-2026/sql/` (905 MB), `dev/api/`, `dev/newsletter/`, `dev/2026-10/`, `storage/app/private/restore-company-user-auto-2026-10-07.sql`. | [dev/README](README.md) | — |
| 1.5 | **Alte Backups auf dem Server löschen:** `~/deploy-v1.1.0.tgz`, `~/backup-vor-v1.1.0.tgz`, `~/backup-vor-git.tgz`, `~/vor-git/`. | [git-deploy.md](betrieb/git-deploy.md) | S [LIVE] |
---
## 2. Termine und Wiedervorlagen
| Fällig | Punkt | Quelle |
|---|---|---|
| **ab 15.10.2026** | CSP-Meldungen aus `storage/logs/csp-*.log` auswerten, dann scharf schalten (Report-Only seit v1.6.0). Nonce statt `unsafe-inline`/`unsafe-eval` später (L). | [Sicherheitsplan](sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md) |
| **ab 16.10.2026** | Spamschutz auswerten: Spam-Filter der Kontakt-Queue, `storage/logs/spam-*.log`, Missbrauch des Fail-open-Wegs → ggf. `TURNSTILE_FAIL_OPEN=false`. Die rund 130 nicht erkannten Altanliegen per Sammelaktion in die Quarantäne. | [Spamschutz](sicherheit/ENTWICKLUNGSPLAN-SPAMSCHUTZ-2026-10-09.md) |
| nächstes Release | `SessionRevocation::legacyCachedMark()` samt Test entfernen; Liste „Aktive Sessions“ reparieren (liest `sessions`-Tabelle, Live speichert in Redis → immer leer). | [Sicherheitsplan](sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md) |
| Oktober 2026 | connektar: `ai_declaration` wird Pflicht — Stand bei connektar erfragen, Auswirkung auf den Alt-Vertrag prüfen (heute setzt der Legacy-Controller die Bestätigung selbst). | [Roadmap Nutzergewinnung](archive/2026-09-nutzergewinnung/roadmap-2026.md) |
| Ende Oktober | Google News / Publisher Center (2.2): Ergebnis in der Search Console prüfen (4–6 Wochen nach Einrichtung). | [Protokoll Teil 7](archive/2026-09-nutzergewinnung/umsetzung-protokoll.md) |
| frühestens 26.10.2026 | Bildrechte Block I (C2PA) möglich — Bedingung: vier Wochen Deploy 1b ohne Auffälligkeiten **und** Testkorpus echter KI-Dateien. | [Bildrechte-Plan](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) |
| offen | IMKIS: Pilot nach dem Treffen am 01.10. — Ergebnis nachtragen (3.6). | [Roadmap Nutzergewinnung](archive/2026-09-nutzergewinnung/roadmap-2026.md) |
| laufend | 1c.5/E8: Kundenansicht des Google-Index (`GSC_CUSTOMER_VISIBLE`) — tägliche Prüfung seit 17.09.; entscheiden, sobald die Verteilung direkt/API belastbar ist. | [Anhang 1](archive/2026-09-nutzergewinnung/roadmap-anhang1-2026.md) |
| Frühjahr 2027 | Basiswert 0.1 neu erheben (Kohorte 28–55 Tage, Vergleich 122 / 314). | [Basiswerte](archive/2026-09-nutzergewinnung/basiswerte-block0.md) |
---
## 3. Rechtstexte und Freigaben — ein Anwaltspaket [EXTERN]
Mehrere Datenverarbeitungen laufen bereits, ohne dass die Datenschutzerklärung
sie nennt. Das ist der größte offene Block und am besten **ein** Paket an den
Anwalt.
| # | Punkt | Quelle | Aufwand |
|---|---|---|---|
| 3.1 | **DSE-Lücken, Verarbeitung läuft bereits:** Bild-Originale, Bestätigungsprotokoll und IP-HMAC (seit Deploy 1b, 28.09.; laut Decision-Update sollte der Minimalabsatz mitgehen), GlitchTip (Server und Browser), fehlgeschlagene Anmeldungen (90 Tage), Rückläufer-Protokoll `email_bounces` (395 Tage, E27), `activity_events`/`api_usage_logs`. | [Decision-Update Bildrechte](bildrechte/Decision-Update_Bildrechte_Beweisarchiv_2026-09-22.md), [Monitoring-Plan](betrieb/monitoring-plan.md), [Entwicklungsplan Audit, Block 9 E](archive/2026-09-audit/ENTWICKLUNGSPLAN.md) | S + Freigabe |
| 3.2 | DSE 6a (Turnstile) ist als Vorschlag live — juristisch freigeben. | [Spamschutz](sicherheit/ENTWICKLUNGSPLAN-SPAMSCHUTZ-2026-10-09.md) | S |
| 3.3 | **Deploy 3 Bildrechte:** AGB v0.7 (§ 8a, § 9), DSE v0.4 (9a, 9b, 13, Template-Variablen), `img-confirm-v3`, `LEGAL_ACCEPTANCE_GATE=true`. Vorher: Interessenabwägung (DU 4.4) als Dokument ablegen, Restore-Übung (5.1) als Beleg für 9b. | [Bildrechte-Plan](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) | S (2 Tage nach Antwort) |
| 3.4 | Anwaltsagenda A1–A7 (Screenshots Formular und Nachweiszeile), Art. 50 KI-VO, Syndikationsvertrag als Standarddokument (3.5), Boost-Slot-Note. | [Decision-Update Bildrechte](bildrechte/Decision-Update_Bildrechte_Beweisarchiv_2026-09-22.md), [Changelog O8](changelog/Decision-Update_Changelog_Automatisierung_2026-10-04.md) | [EXTERN] |
| 3.5 | AVV mit OpenAI → danach KI-Vorab-Check für Bilder einschalten (`IMAGE_PRECHECK`, Stufe 1, nach einer Woche Stufe 2), Schwellen nachjustieren. | [Bildrechte-Plan K.6](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) | S |
| 3.6 | Nach DSE-Freigabe: `UMAMI_PORTAL_ENABLED`, `UMAMI_IDENTIFY_USERS` einschalten. | [Monitoring-Plan](betrieb/monitoring-plan.md) | S |
| 3.7 | Wortwahl „automatisierte Prüfung“ (D.6/S10) ist nur teilweise umgesetzt: „Qualitätsgeprüft“ steht noch in `lang/de/web.php` (Meta-Beschreibung beider Startseiten), `lang/de/static.php`, Kunden-Dashboard und EN-Pendants; Preisseite sagt „Inhaltsprüfung“. | [Bildrechte-Plan](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) | S |
| 3.8 | Geschäftliche Entscheidungen festschreiben: Refund-Policy (heute faktisch Stripe-Dashboard), Steuerberater-Abnahme Rechnungs-PDF/USt, Pro-Tarif nach Streichung des Prüfversprechens, Preisfreigabe R1.4 formal abhaken. | [Release-Plan](archive/release/entwicklungsplan-release.md) | S [EXTERN] |
---
## 4. Nächstes Release (v1.8) — kleine technische Punkte
| # | Punkt | Quelle | Aufwand |
|---|---|---|---|
| 4.1 | Sessions: `legacyCachedMark()` entfernen, „Aktive Sessions“ für Redis (siehe Abschnitt 2). | Sicherheitsplan | S–M |
| 4.2 | Löschfristen für `activity_events` und `api_usage_logs` (heute keine; `model:prune` nur für Anmeldezähler und Kontaktanliegen). | [Monitoring-Plan Phase 3](betrieb/monitoring-plan.md) | S |
| 4.3 | `POST api/v1/newsletter/subscribe` legt Abos ohne Double-Opt-in an (kein Bestätigungsweg) — abschalten oder mit dem Branchen-Digest (6.4) koppeln. | [QA-Checkliste](archive/release/qa-checkliste.md) | S |
| 4.4 | Turnstile in die übrigen öffentlichen Formulare: Widerruf, Kündigung, Meldeformular, PM-Meldung, Rechtsanfrage, „Newsroom verwalten“ (B5). | [Spamschutz](sicherheit/ENTWICKLUNGSPLAN-SPAMSCHUTZ-2026-10-09.md) | M |
| 4.5 | Login-Härtung entscheiden: `POST /login` nur auf dem Hub oder Turnstile im Login (IP-Limit seit v1.6.0). | [Monitoring-Plan](betrieb/monitoring-plan.md) | S–M |
| 4.6 | Referer-Redirect ohne Whitelist im Portal- und Firmen-Switcher (N2); `url:http,https` für Backlink- und Pressefach-URLs (N3); CORS explizit (N9). | [optimize 14.07.](archive/optimize/optimize-14-07-2026.md) | S |
| 4.7 | Bildrechte aufräumen: Flag `IMAGE_RIGHTS_V2`, alte `press-release-images-manager`-Komponente und Alt-Tests entfernen. | [Bildrechte-Plan B.3](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) | S |
| 4.8 | Strukturierte Daten `ImageObject` mit `creditText`/`copyrightNotice` für Pressebilder (nie eingeplant oder verworfen). | [Bildkennzeichnung 6.3](archive/2026-09-audit/bildkennzeichnung-2026-09-15.md) | S–M |
---
## 5. Betriebsnachweise auf Live [LIVE]
Einmalig abnehmen und hier abhaken. Vieles davon ist vermutlich erledigt,
aber nirgends belegt.
| # | Punkt | Quelle |
|---|---|---|
| 5.1 | **Restore-Übung** in isolierter Umgebung (DB alt/Disk neu, Disk alt/DB neu, beide alt), danach Entscheidung über ein externes Ziel für den Tombstone-Export (E16, Storage Box/S3). Voraussetzung für DSE 9b. | [Runbook §9](betrieb/deploy-runbook.md), [Audit 02.10. §5](archive/2026-09-audit/UMSETZUNGSAUDIT-2026-10-02.md) |
| 5.2 | Upload 13–15 MiB über das Formular, PHP- und nginx-Grenzen ≥ 16 MiB, Laufzeit der Bildprüfung mit großem Bild. | [Bildrechte-Plan E.7](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) |
| 5.3 | Passkey im echten Browser, Smoke-Test der Admin-Bestätigung; `PASSKEYS_USER_HANDLE_SECRET` in der Live-`.env` (fehlt auch in `.env.example`). | [Sicherheitsplan](sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md) |
| 5.4 | Tastatur/Screenreader: Fokusführung Login-Modal (7.6), Bild-Overlay (D.2). | Entwicklungsplan Audit, Bildrechte-Plan |
| 5.5 | Uptime Kuma: Alarmtest mit falschem Token; zweite Ebene (z. B. UptimeRobot auf `/up`). | [Monitoring-Plan](betrieb/monitoring-plan.md) |
| 5.6 | Bounce-Postfach, `MAIL_RETURN_PATH`, `BOUNCE_IMAP_*` bestätigen; optional DMARC-Report-Postfach. | [Bounce-Konzept](archive/2026-09-nutzergewinnung/bounce-mails-2026-09-15.md) |
| 5.7 | Prod-DB-Benutzer mit minimalen Rechten (N10), offene Punkte aus dem Sicherheitsaudit (Firewall, DB/Redis-Erreichbarkeit, Betriebssystem, Backups). | [Sicherheitsaudit](sicherheit/SICHERHEITSAUDIT-2026-10-07.md) |
| 5.8 | Go-Live-Nachlauf vom 20.07., Stand unbekannt: Go-Live-Mails, API-Kunden-Mailing (`/docs/api/v1`, Token-Migration), Stripe-Test-Artefakte bereinigen, `MONITORING_ALERT_EMAIL`, Permission `api:immediate-publication` für connektar. | [Go-Live-Roadmap](archive/release/roadmap-go-live-2026-07-20.md), [API-Parität](betrieb/api-legacy-paritaet.md) |
| 5.9 | MAN-Rechnungen: blockierte Vereinbarungen ohne Rechnungsadresse sichten, ersetzende MAN-Rechnung aus dem Protokoll vom 21.09. auf „offen“ prüfen, Rechnungsadressen von Bestandskunden nachpflegen. | [Legacy-Rechnungen](archive/legacy-rechnungen/entwicklungsplan-2026-09-16.md) |
| 5.10 | Die 6 Slug-Kollisionen aus der Newsroom-Zusammenführung einzeln ansehen. | [Protokoll Teil 3](archive/2026-09-nutzergewinnung/umsetzung-protokoll.md) |
| 5.11 | GlitchTip: behandelte Einträge auflösen (nur Betreiber), Eintrag 10 „[object Object]“ beobachten. | [GlitchTip](glitch-tip/README.md) |
| 5.12 | Slow-Request-Auswertung mit Live-Daten (Command und Report-Seite existieren). | [Migration 11](archive/migration-2026/11-NOCH-ZU-TUN-OPTIMIERUNGEN.md) |
---
## 6. Produkt und Wachstum
| # | Punkt | Quelle | Aufwand |
|---|---|---|---|
| 6.1 | **Abbruchbedingungen festlegen** (Zeitraum, Schwellwert) für Block 1 bis 3 — ohne sie ist keine Wachstumsmaßnahme bewertbar. Block 1 läuft seit 17.09. ohne Vergleichspunkt. | [Roadmap Nutzergewinnung](archive/2026-09-nutzergewinnung/roadmap-2026.md), [Basiswerte](archive/2026-09-nutzergewinnung/basiswerte-block0.md) | S (Entscheidung) |
| 6.2 | 2.6 Zuschriften an Portalübersichten (PR-Gateway-Korrektur, höchstens acht Kontakte). | [Anhang 1 §5](archive/2026-09-nutzergewinnung/roadmap-anhang1-2026.md) | [EXTERN], in Arbeit |
| 6.3 | **3.3 Agenturmodell:** mehrere Firmen unter einem Konto, abgeleitet aus den 1.102 Sammeladressen. Danach 3.4 gezielte Ansprache kleiner Agenturen. | Roadmap Nutzergewinnung | L |
| 6.4 | **3.2 Branchen-Digest** mit Double-Opt-in (löst auch 4.3). | Roadmap Nutzergewinnung | M |
| 6.5 | Newsletter-Kampagnenmodul: U05–U07 umsetzen, bevor `NEWSLETTER_SENDING_ENABLED` eingeschaltet wird. | [Entwicklungsplan Audit E9/E23](archive/2026-09-audit/ENTWICKLUNGSPLAN.md) | M |
| 6.6 | **Changelog-Pipeline** (Stufen 1–5, nicht begonnen). Offene Entscheidungen: O3 Schwelle Monatsrückblick, O5 englische Fassung, O6 Bild-Template, O7 Backfill aus den Tags, O9 Social-Accounts, O10 n8n/Buffer, O11 Opt-in, O12 wer beantwortet Rückfragen, O13 Impressum in Profilen. Andocken in `deploy.sh`, nicht als Ploi-Hook. | [Decision-Update Changelog](changelog/Decision-Update_Changelog_Automatisierung_2026-10-04.md) | L |
| 6.7 | Betriebsüberwachung **Phase 2** (Validierungsfehler, Schritt-Tracking, Umami-Events, „Problem melden“, Geschäftstrichter) und **Phase 3** (Kennzahlen, Alarme bei ausbleibender Aktivität, Seite „Betrieb & Nutzung“, Morgenmail). Entscheidungen M4–M9 bestätigen. | [Monitoring-Plan](betrieb/monitoring-plan.md) | L |
| 6.8 | Bildrechte: Block I C2PA (ab 26.10.), I.5 XMP in Varianten, Block J Bilder im Newsroom (Kontingent-Entscheidung), I.6 Re-Sync-Sperre erst wenn ein API-Partner Bilder liefert. | [Bildrechte-Plan](bildrechte/bildkennzeichnung-entwicklungsplan-2026-09-21.md) | L |
| 6.9 | API v1: Rückkanal bei Ablehnung (Status-Feld oder Webhook, S6). | [API-Parität](betrieb/api-legacy-paritaet.md) | M–L |
| 6.10 | Legacy-Rechnungen Phase 4: `--send`, Erinnerungs-Task, tägliche Überfällig-Notiz (nach einigen Wochen Handbetrieb). | [Legacy-Rechnungen](archive/legacy-rechnungen/entwicklungsplan-2026-09-16.md) | S |
| 6.11 | Kontakterreichbarkeit Stufe 3 (Veröffentlichungssperre ohne zustellbare Adresse) — bewusst zurückgestellt, nach Beobachtung entscheiden. | [Kontakterreichbarkeit](archive/2026-09-audit/kontakterreichbarkeit-mx-bounces-2026-09-15.md) | M–L |
| 6.12 | Spamschutz-Ideen: Limit je /24-Netz, tägliche Sammelmail, Wegwerf-Domains, KI-Klassifizierung. | [Spamschutz §5](sicherheit/ENTWICKLUNGSPLAN-SPAMSCHUTZ-2026-10-09.md) | je S–M |
| 6.13 | Ausbau aus dem Release-Plan, bewusst vertagt: EN-Übersetzung der Langseiten (FAQ, Hilfe, API, Veröffentlichen), EN-Rechtstexte und öffentliche Versionshistorie, DSA-Queue, Coupons, Regionen-Seiten, Blacklist-Admin, Bulk-Publish/-Reject, In-App-Benachrichtigungen, Hero-Slider, Boost als Zeitraum. | [Release-Plan](archive/release/entwicklungsplan-release.md), [Boost](archive/release/boost-platzierung-offen.md) | je M |
---
## 7. Technische Schuld (bei Gelegenheit)
| # | Punkt | Quelle | Aufwand |
|---|---|---|---|
| 7.1 | Sitemap ohne Index/Chunking lädt das Archiv mit `->get()` — noch unter 50k, wächst. | [optimize N7](archive/optimize/optimize-14-07-2026.md) | M |
| 7.2 | `orderByDesc('hits')` ohne Index (durch Cache abgemildert; Online-DDL auf `press_releases`). | optimize N8 | S–M |
| 7.3 | Landingpages `web/presseecho` und `web/businessportal24` zusammenführen (M15), toter Code (`test.css`, kaputtes `@source`, leere Domain-Gruppen, N6). | optimize | S |
| 7.4 | `CompanyType` und `companies.type` entfernen (A6, jetzt machbar). | [Agentur-Attribution](archive/agentur-attribution/entwicklungsplan.md) | M |
| 7.5 | Große Komponenten zerlegen: `admin.users.edit` (1.242 Zeilen), Kontakte-Tab in `companies.show`; `UserManagementTest` (1.312 Zeilen) aufteilen. Larastan erfasst Single-File-Components nicht — große Komponenten ggf. per `livewire:convert` in Klassen. | [Migration 11](archive/migration-2026/11-NOCH-ZU-TUN-OPTIMIERUNGEN.md), [Go-Live-Roadmap](archive/release/roadmap-go-live-2026-07-20.md) | M |
| 7.6 | MySQL-/Worker-Integrationstests als zweite CI-Stufe (6.6), `arch()`-Tests, PHPStan-Baseline (143 Einträge). | [Entwicklungsplan Audit](archive/2026-09-audit/ENTWICKLUNGSPLAN.md) | L |
| 7.7 | API-Autorisierung über Policies (M14), Checkout-Guard (N11), Form Requests (N12), Kleinkram (`session()->flash`, `CurrentPortalContext`, E-Mail-Normalisierung). | optimize, [Migration 12](archive/migration-2026/12-NAECHSTE-SCHRITTE.md) | M |
| 7.8 | Mobil-Feinschliff: Pagination- und Modal-Close-Buttons ~36 px (< 44 px), Stat-Strips, Hero 21/9. | [Frontend-Protokoll](archive/frontend-audits/frontend-optimize-protokoll.md) | S |
| 7.9 | Redis als Cache/Queue erst bei Last — **Achtung E18:** die Idempotenz der Ablaufmail setzt die DB-Queue voraus. Cache-Warmer nur bei Bedarf. `ReleaseDetailPageData` cachen, wenn Newsroom-Traffic steigt. | Go-Live-Roadmap, Entwicklungsplan Audit E18 | M |
| 7.10 | `CLASSIFICATION_GREEN_DELAY` (Wartezeit vor KI-Auto-Publish, Default 0) prüfen — deckt die Score-Logik das inzwischen ab? | Release-Plan | S |
---
## 8. Doku-Pflege
| # | Punkt | Aufwand |
|---|---|---|
| 8.1 | **`betrieb/deploy-runbook.md` überarbeiten** (Stand 09.07.): SFTP-Checkliste, „npm auf dem Server“ und FULLTEXT auf `press_releases` (§3a) sind überholt; `pressekonto.de` statt `.com` (auch Stripe-Webhook-URL); Scheduler-Tabelle ohne `users:prune-bot-registrations`, `monitoring:heartbeat`, `queue:prune-failed`, `model:prune`, `sanctum:prune-expired`; systemd statt Supervisor/Ploi; Chat-Reste und KAS-rsync in §7. Deploy-Ablauf nur noch in `git-deploy.md`. | M |
| 8.2 | `CLAUDE.md` nennt `pressekonto.de` als Live-Domain — live ist `pressekonto.com`. | S |
| 8.3 | Kopfzeilen nachziehen: `monitoring-plan.md` (SFTP, externer Monitor offen), `git-deploy.md`, `glitch-tip/README.md` (Protokoll ohne Einträge 18, 23, 38, 39), Bildrechte-Plan („Deploy offen“, Deploy 1–2b und 1b sind live), Sicherheitsaudit Z. 276. | S |
| 8.4 | `api-legacy-paritaet.md`: S5/S7/Abschnitt 5 schließen, Umami-Snippets am Ende entfernen. | S |
| 8.5 | Changelog-Decision-Update: Antworten aus den rohen `#…`-Zeilen in eine Spalte „Entscheidung“ übertragen. | S |
| 8.6 | `git-deploy-monitoring/` ist ein projektunabhängiger Baukasten und liegt mit jedem Checkout auch auf dem Server — in ein eigenes Repository auslagern. | S |
| 8.7 | Im Archiv liegen ~78 MB getrackte Mockups und Prototypen (`frontend/claude-design/` 57 MB, `frontend/tailwind_v3/` 15 MB, `_old/` 4 MB) — löschen, wenn sie nicht mehr gebraucht werden (verkleinert das Repo erst zusammen mit 1.1). | S |