06 – Feature-Scope (IN / OUT / ANGEPASST)
Diese Matrix ist die fachliche Scope-Grundlage. Stand: 2026-04-23 – Entscheidungen vom Auftraggeber bestätigt.
Legende: IN = wird migriert · NEU = wird neu gebaut (nicht aus Legacy portiert) · OUT = entfällt · ANGEPASST = kommt rein, aber in veränderter Form · ARCHIV = nur lesbar für Nachschau.
1. Authentifizierung
| Feature |
Legacy |
Scope |
Anmerkung |
| Login/Logout |
✓ |
IN |
Fortify |
| Registrierung (neue User) |
✓ |
IN |
Fortify-View anpassen; User-Typ bei Anmeldung wählen |
| Passwort zurücksetzen |
✓ |
IN |
Fortify |
| E-Mail-Verifizierung |
✓ |
IN |
Fortify |
| 2FA (TOTP) |
– |
IN (neu) |
Fortify 2FA-Spalten liegen bereits in users |
| Remember-me |
✓ |
IN |
Laravel Standard |
| Magic-Link Login (Login per E-Mail-Link) |
– |
NEU ⭐ |
Für Companies ohne Passwort + als Alternative für alle; kurzlebige signed URLs |
| Legacy-Passwort-Hashes weiter gültig |
sha1 |
OUT |
Go-Live-Mailing mit Reset-Link + Sicherheitshinweis |
| Legacy-API-Key-Kompatibilität |
✓ |
OUT |
Sauberer Cut-over auf Sanctum; Kunden werden über neue Tokens informiert |
| Captcha beim Login |
sfCaptchaGDPlugin |
OUT |
Ersetzt durch Rate-Limiting + Honeypot |
2. Benutzer / Profile
| Feature |
Legacy |
Scope |
| User-CRUD im Admin |
✓ |
IN |
| User-Rollen (Groups) |
sfGuardGroup |
IN (Spatie): admin, editor, customer, api-only |
| User-Permissions |
sfGuardPermission |
IN (Spatie) |
| User-Profile (Adresse, Tel, Tax-ID …) |
✓ |
IN |
| Sanctum-Tokens verwalten (Self-Service) |
– |
NEU |
User-Profile backlink_url |
✓ |
IN |
User-Profile show_stats |
✓ |
IN |
User-Profile disable_footer_code |
✓ |
IN |
User-Profile contract_date |
✓ |
IN |
| ApiUser als eigener Typ |
✓ |
ANGEPASST |
3. Firmen & Kontakte
| Feature |
Legacy |
Scope |
| Company-CRUD |
✓ |
IN |
| Agency als Subtyp |
Inheritance |
IN |
| Mehrere verantwortliche User pro Company |
ResponsibleCompanyUser |
IN |
| Company-Login (eigenes Passwort) |
✓ |
OUT |
| Company-Logo-Upload (verbessert) |
✓ (minimal) |
ANGEPASST ⭐ |
| Footer-Code deaktivieren pro Company |
✓ |
IN |
| Contact-CRUD |
✓ |
IN |
| Contact-Autocomplete in PM-Formular |
✓ |
IN |
4. Pressemitteilungen
| Feature |
Legacy |
Scope |
| CRUD (Admin) |
✓ |
IN |
| CRUD (Customer-Self-Service) |
✓ |
IN ⭐ |
| Multi-Kategorie? |
Nein (1 Kategorie) |
IN (1:1, N:M optional später) |
| Slugging per Titel+Sprache |
✓ |
IN |
Teaser-Range teaser_begin/teaser_end |
✓ |
IN |
Status (draft, published, rejected, archived) |
lose Strings |
IN |
| Publish/Reject-Workflow |
✓ |
IN |
| Automatische Blacklist-Prüfung |
✓ |
IN |
| Image-Upload mehrere pro PM (verbessert) |
✓ |
ANGEPASST ⭐ |
| Preview-Bild |
✓ |
IN |
| Hits-Zähler |
✓ |
IN |
no_export-Flag |
✓ |
IN |
portal-Spalte (portal_type) |
– |
IN ⭐ |
| SEO-Felder (Meta Title, Description) |
teilw. |
ANGEPASST |
| Kontakte zu PMs zuordnen |
✓ |
IN |
| Öffentlicher Magic-Link zum Teilen / Vorschau |
– |
NEU |
5. Kategorien
| Feature |
Legacy |
Scope |
| CRUD mit Slug |
✓ |
IN |
| Mehrsprachigkeit (DE + EN) |
✓ |
IN |
| Hierarchie (Parent/Child) |
✗ |
IN (neu, optional) |
| Footer-Code pro Kategorie |
✓ |
IN |
6. Newsletter
| Feature |
Legacy |
Scope |
| Subscribe mit Double-Opt-In |
✓ |
NEU |
| Unsubscribe-Link |
✓ |
NEU |
| Admin: Subscriber-Liste |
✓ |
NEU |
| Admin: Kampagnen (manuell versenden) |
✗ |
NEU |
| CSV-Export / -Import |
✗ |
NEU |
| Bestandssubscriber (aus Legacy) |
✓ |
IN (Datenimport) |
7. Billing / Payment / Invoicing
Großer Umbau (D-03, D-12, D-13): Komplett neuer Billing-Lauf, nur Stripe, alte Rechnungen → Archiv.
| Feature |
Legacy |
Scope |
| PaymentOption-Verwaltung (neu definiert) |
✓ |
NEU |
| Grandfathering (aktive Alt-User behalten Konditionen) |
– |
NEU ⭐ |
| Recurring via Stripe Subscription |
– |
NEU |
| Onetime / Single-Purchase |
✓ |
NEU |
| Coupons |
✓ |
OUT (vertagt, D-16) |
| Mehrfach-Buchung pro Company |
✓ |
IN (neu modelliert) |
| Zahlungsart: SPK Berlin / Cortal Consors / Bar / Post / PayPal |
✓ |
OUT |
| Zahlungsart: Rechnung |
✓ |
OUT ⭐ |
| Zahlungsart: Stripe (Karte, SEPA, Klarna optional) |
✗ |
NEU |
| Invoice-Generation (neu) |
✓ |
NEU |
| Invoice-PDF |
✓ (TCPDF) |
ANGEPASST |
| Mahnwesen |
✓ (3 Stufen) |
NEU |
| Abweichende Rechnungs-Adresse |
✓ |
IN |
| Tax-Exempt / Reverse-Charge |
✓ |
IN |
| VAT-Berechnung |
✓ |
IN (aktuelle Sätze) |
| Legacy-Rechnungen (PDFs) |
✓ |
ARCHIV ⭐ |
8. REST-API
Details: 07-API-MIGRATION.md
| Endpoint |
Legacy |
Scope |
| POST Pressrelease |
✓ |
IN (neu implementiert, Sanctum-Auth) |
| GET Pressrelease-List |
✓ |
IN |
| GET/PATCH Pressrelease |
✓ |
IN |
| POST Image-Upload |
✓ |
IN |
| GET Companies |
✓ |
IN |
| GET Categories |
✓ |
IN |
| POST Newsletter subscribe |
✓ |
IN |
Auth: Legacy api_key-Query-Param |
✓ |
OUT ⭐ |
| (alles andere Undokumentierte) |
? |
❓ |
9. Marketing / Redaktion
| Feature |
Legacy |
Scope |
| Promotion-Links |
✓ |
OUT ⭐ |
| Footer-Code pro Kategorie/Sprache |
✓ |
IN |
| „page"-Modul (statische Seiten) |
✓ |
OUT |
10. Cron / Scheduler
| Job |
Legacy |
Scope |
sfp:user-payment-create |
✓ |
OUT |
sfp:invoice-create |
✓ |
NEU |
sfp:invoice-reminder |
✓ |
NEU |
sfp:user-paymentoption-expire |
deaktiviert |
NEU |
| Magic-Link-Cleanup |
– |
NEU |
| Newsletter-Versand-Queue |
– |
NEU |
| Log-Rotation / Prune Failed Jobs |
– |
NEU |
11. Bilder / Media
| Feature |
Legacy |
Scope |
| Thumbnail-Generierung |
sfImageTransformPlugin |
ANGEPASST |
| Varianten (thumb_200, thumb_500, etc.) |
✓ |
IN |
| Storage lokal |
✓ |
IN (Dev + Prod initial) |
| Storage S3-kompatibel |
✗ |
IN (optional später) |
Alte Image-URLs (/thumbnails/...) |
✓ |
ANGEPASST |
| Company-Logo größer & mehrere Varianten |
✓ (minimal) |
NEU ⭐ |
| Press-Release mehrere Bilder |
teils |
NEU ⭐ |
12. Kundenbereich / Customer-Portal ⭐ NEU AUFGEWERTET
Entscheidung D-11: Das Backend ist nicht nur Admin-UI, sondern bedient auch Endkunden.
| Feature |
Scope |
Anmerkung |
| Customer-Login (Passwort oder Magic-Link) |
NEU |
Eigene Route-Gruppe customer.* |
| Eigenes Dashboard (Übersicht aktive Abos, letzte PMs, Rechnungen) |
NEU |
|
| Eigene Pressemitteilungen: Liste / Erstellen / Bearbeiten |
NEU |
|
| Eigene Rechnungen einsehen + PDF |
NEU |
Inkl. Legacy-Archivrechnungen |
| API-Tokens verwalten (Sanctum-PATs) |
NEU |
|
| Company-/Contact-Profile pflegen |
NEU |
|
| Zwei-Faktor-Auth aktivieren |
NEU |
|
| Passwort ändern / Mail ändern |
NEU |
|
13. Frontend-Integration
| Feature |
Legacy |
Scope |
| Altes Symfony-Frontend (presseecho/businessportal24.com) |
✓ |
OUT |
| Neue Frontends (presseecho.test / businessportal24.test) |
vorhanden |
IN |
14. Offene Scope-Entscheidungen (Restliste)
| ID |
Thema |
Vorschlag / Status |
| S-01 |
Multi-Kategorie pro PM |
Bei 1:1 belassen; N:M-Ausbau nur auf Anfrage |
| S-02 |
Coupons-Wiedereinführung |
Vertagt (siehe D-16) |
| S-03 |
E-Mail-Duplikate zwischen Portalen |
Merge wenn gleiche E-Mail (siehe 05-DATABASE-MERGE §3.1) |
| S-04 |
S3 für Medien in Prod |
Optional, erst wenn Volumen es erfordert |
| S-05 |
Definition der neuen Stripe-Produkte |
Preisliste + Laufzeiten vom Auftraggeber noch zu liefern |
15. QA-Checkliste (manuell, vor Go-Live)