P2503-238 Review — Persistente Projekt-Merkliste
Branch feature/p2503-226-projektpartnerportal · Scoped review auf P2503-238-Dateien · Fix-Commit 2ce3fdd · 2026-06-16
VERDICT: CLEAN — P2503-238 review-ready
Der Review bewertet den ticket-spezifischen Diff für die persistente Projekt-Merkliste. Die bestehende Frontend-Merkliste bleibt erhalten; für Projektpartner wird sie serverseitig über
user.data persistiert und lokale Einträge werden beim Login per JSON-API übernommen.
Review Scope
| Spec | P2503-238 — Merkliste / gemerkte Projekte |
|---|---|
| Diff | solcom_project_offer Watchlist-Controller, Storage, Routing, Kernel-Tests und byte_theme/js/watchlist.js |
| Canvas | skipped Keine Canvas- oder SDC-Registry-Dateien im scoped Diff. |
Standards
clean Keine offenen hard violations und keine judgement calls.
- Die Mutationsrouten sind auf eingeloggte Nutzer mit Rolle
projektpartnerund CSRF-Header begrenzt. - Der Controller validiert JSON am Systemrand: invalid JSON, falsche
id-Typen und fehlende oder falscheids-Listen liefern400. - JSON-Antworten sind private und nicht cachebar.
- Neue Kernel-Tests decken Projektpartner-Erfolg, Nicht-Partner, anonymen Zugriff, fehlenden/ungültigen CSRF-Token, Bad-Request-Fälle und den leeren authentifizierten Merkliste-State ab.
Spec
clean Keine fehlenden Anforderungen, kein Scope Creep und keine falsche Implementation.
- Projektpartner nutzen eine backend-persistente Merkliste ohne 5er-Limit.
- Anonyme Nutzer behalten den localStorage-Pfad.
- Beim Login werden lokale Einträge auch auf der leeren Merkliste-Seite per
/projektportal/merkliste/mergeübernommen; nach erfolgreichem Merge wird localStorage geleert und die Seite neu geladen. - Controller und JavaScript wurden erweitert, nicht neu gebaut. Es gibt keine Neos-Bookmark-Migration.
Validation Evidence
| Gate | Result |
|---|---|
| P2503-238 Kernel tests | OK 19 Tests, 120 Assertions; nur bestehende Webform-/Key-Deprecations. |
| PHPCS | OK Watchlist-Controller und Kernel-Tests. |
| JavaScript syntax | OK node --check web/themes/custom/byte_theme/js/watchlist.js. |
| Diff check | OK git diff --check. |
| Jira | OK P2503-238 steht auf Review. |