Bestehende Technical Debt
Dokumentierte Technical Debt, deaktivierte Features, bekannte Einschränkungen und bewusste Architektur-Entscheidungen.
Deprecated Code
| Item | Datei | Priorität |
|---|---|---|
Flux Sidebar stashable Property | resources/views/flux/sidebar/index.blade.php | Niedrig |
Auto-Approval Contact Links (Deaktiviert)
| Item | Datei | Priorität |
|---|---|---|
autoLinkExistingProfiles() deaktiviert | app/Services/Social/SocialProfileLinkSyncer.php:72 | Mittel |
autoApproveMatchingLinks() deaktiviert | app/Jobs/ImportContactLinkProfile.php:125 | Mittel |
| Back-Reference Auto-Approval entfernt | app/Jobs/ImportContactLinkProfile.php:274 | Mittel |
Problem: Die automatische Freigabe von Kontaktlinks produzierte zu viele Falsch-Positive. Handle-Matching allein (ohne Bidirektionalitäts-Check oder Uniqueness-Scoring) führte zu falschen Cross-Platform-Verknüpfungen.
Lösung für Reaktivierung:
- Confidence-Score implementieren (z.B. Handle-Uniqueness-Check, bidirektionale Link-Verifizierung)
- Nur Links mit Score > Schwellenwert automatisch freigeben
- Links unter Schwellenwert zur manuellen Prüfung markieren
Migration: 2026_02_22_100001_reset_auto_approved_contact_links.php setzt alle auto-genehmigten Links zurück.
Sentry ViewEngineDecorator – Laravel 12 Inkompatibilität
ViewEngineDecorator – Laravel 12 InkompatibilitätERLEDIGT (2026-03-06): Sentry wurde vollständig entfernt und durch Flare (spatie/laravel-flare) + Nightwatch (laravel/nightwatch) ersetzt. Der ViewEngineDecorator-Workaround ist nicht mehr relevant.
ScoreChart: ApexCharts statt Flux UI Chart (Revert)
| Eigenschaft | Wert |
|---|---|
| Priorität | Mittel |
| Aufwand | ~2-4 Stunden (wenn Flux Charts die Features unterstützen) |
| Status | Bewusster Revert, ApexCharts funktioniert stabil |
Kernprobleme mit Flux UI Charts für ScoreChart:
- Zwei Serien (solid + dashed): Flux
<flux:chart>unterstützt keine unterschiedlichen Linien-Stile - Gap-Interpolation: Kein Konzept für Serien-Überlappung bei Lücken-Interpolation
- Custom Tooltips: Nur Standard-Tooltip, kein Custom-HTML
- Feste Y-Achse 0-100: Flux Charts skalieren automatisch, keine feste Range
domainProp Bug: Typ-Konvertierung zwischen PHP-Array und String scheiterte
Voraussetzungen für erneute Migration: Flux Charts muss mehrere Serien mit unterschiedlichen dashArray-Werten, feste domain/range und Custom-Tooltip-Templates unterstützen.
Location: app/Livewire/Watchers/ScoreChart.php, resources/views/livewire/watchers/score-chart.blade.php
Watchers\Show: defensive $range Property nach Plan-70 Revert
| Eigenschaft | Wert |
|---|---|
| Priorität | Niedrig |
| Aufwand | ~5 Minuten (Property + Doc-Block entfernen) |
| Status | Übergangs-Workaround, ab 2026-05-13 entfernen |
Kontext: Plan 70 (Charts-Migration) hat in Commit 00a07d8 (29.04.2026 20:46 UTC) den HasTimeRange-Trait zu App\Livewire\Watchers\Show hinzugefügt — und damit eine public string $range = '30d'; Property. Etwa eine Stunde später (b5cd205, 21:48 UTC) wurde der Trait wieder entfernt, weil der page-level Range-Selector mit den Sub-Component-Charts kollidierte.
Folge: Browser-Tabs, die in dem 1-Stunden-Fenster geladen wurden, halten Snapshots mit der alten $range-Property. Bei jeder Livewire-Action senden sie das Feld mit, der Server kennt es nicht mehr → PublicPropertyNotFoundException → 500. Tritt auch nach Hard-Refresh auf, weil mehrere Sub-Components (ScoreChart, VideoScoreChart, AggregatedVideoChart, VideoStatsChart) selbst wire:click="$set('range', ...)"-Buttons haben — bei Race-Conditions im Frontend kann das Update fälschlich an den Parent geroutet werden.
Workaround:
app/Livewire/Watchers/Show.php:public ?string $range = null;(nicht im Template gebunden, absorbiert nur das alte Feld)resources/js/app.js: 500-Error-Hook erkenntPublicPropertyNotFoundExceptionim Response-Body und triggert genau einen Page-Reload pro Session (sessionStorage-Guard gegen Endless-Loops)
Entfernen ab 2026-05-13 (14 Tage nach Deploy = Browser-Caches sind durch). Property löschen, Tech-Debt-Eintrag entfernen. JS-Hook bleibt als generelle Sicherheit gegen ähnliche Refactoring-Bugs.
Location: app/Livewire/Watchers/Show.php (Zeilen 70–80), resources/js/app.js (handleStaleSnapshot-Funktion)
Bekannte Einschränkungen
| Item | Bereich | Priorität |
|---|---|---|
| SQLite-Kompatibilität in Tests | Test-Suite (5 Tests übersprungen) | Mittel |
YouTube is_verified nicht via API | Datenqualität | Niedrig |
Architektur-Entscheidungen
| Item | Bereich | Priorität |
|---|---|---|
Queue Driver: database statt redis | Infrastruktur | Mittel |
Cache Driver: database statt redis | Infrastruktur — Redis-Migration geplant (siehe PLAN.md) | Niedrig |