test(17-03): Tests fuer beide Seiten, Backlog-Punkt abgeschlossen
- RssFeedListForm.test.tsx auf scope umgestellt: personal zeigt eigene Feeds editierbar + plattformweite als schlichte, nicht bedienbare Liste darunter; platform zeigt nur plattformweite Feeds, eigene Feeds tauchen dort gar nicht auf; beide Faelle pruefen den scope-Parameter von createRssFeed - settings-roles.test.tsx (neu): USER sieht Hinweis+Verweis statt Bedienelemente, ADMIN/SUPER_ADMIN sehen Abrufintervall+RSS-Feeds, unbekannte Rolle zeigt weder-noch, entfernte Abschnittsueberschriften kommen nirgends mehr vor - my-sources.test.tsx (neu): alle drei Abschnittsueberschriften vorhanden, Verweis auf die Administrationsseite nur bei ADMIN/SUPER_ADMIN - Erwartete Texte in allen drei Testdateien von Hand geschrieben, nicht aus der gleichen next-intl-Zuordnung abgeleitet, die die Komponenten benutzen - Backlog-Punkt 2026-08-11-tender-radar-einstellungen-mischen-rollen.md nach todos/completed/ verschoben, mit Resolution-Abschnitt: beide Nutzer- Entscheidungen (eigene Quellen je Nutzer, Trefferliste bleibt plattform-global) und die Antwort auf offenen Punkt 4 (eigene nutzerseitige Modulseite als Vorbild fuer kuenftige Module) dokumentiert Verifikation: Web 205/205, API src/tenders 362/362, beide Typpruefungen fehlerfrei.
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
---
|
||||
created: 2026-08-11
|
||||
title: Ausschreibungs-Radar — Einstellungsseite mischt Administration und persoenliche Einstellung
|
||||
area: tender-radar
|
||||
severity: minor
|
||||
trigger: wenn das Modul das erste Mal von normalen Nutzern verwendet wird, nicht nur von Admins
|
||||
files:
|
||||
- apps/web/src/app/(portal)/modules/tender-radar/settings/page.tsx
|
||||
- apps/web/src/app/(portal)/settings/general/account
|
||||
- apps/api/src/tenders/tenders.controller.ts
|
||||
---
|
||||
|
||||
## Problem
|
||||
|
||||
`/modules/tender-radar/settings` traegt vier Abschnitte, die drei verschiedenen
|
||||
Zustaendigkeiten gehoeren:
|
||||
|
||||
| Abschnitt | Gehoert |
|
||||
|---|---|
|
||||
| Quelle (Abrufintervall, Aktiv) | Plattform-Administration |
|
||||
| RSS-Feeds | Plattform-Administration (ausdruecklich fuer alle Mandanten gleich) |
|
||||
| E-Mail-Alerts (Postfach) | Mandanten-Administration |
|
||||
| **Benachrichtigungen (Digest-Intervall)** | **dem einzelnen Nutzer** |
|
||||
|
||||
Das Digest-Intervall ist die einzige persoenliche Einstellung auf der Seite —
|
||||
`TenderNotificationPref` haengt an `userId`, nicht am Mandanten (NOTIFY-01/D-03).
|
||||
Sie steht als letzter Abschnitt unter drei Bloecken, die ein normaler Nutzer
|
||||
weder aendern darf noch braucht. Wer nur seinen Digest auf woechentlich stellen
|
||||
will, scrollt an Abrufintervallen, Feed-URLs und Postfach-Zugangsdaten vorbei.
|
||||
|
||||
**Kein Berechtigungsloch:** die zugehoerigen API-Endpunkte (`source-config`,
|
||||
`rss-feeds`, Postfach) sind serverseitig mit `@Roles(ADMIN, SUPER_ADMIN)`
|
||||
abgesichert (`tenders.controller.ts`). Ein normaler Nutzer kann dort also
|
||||
nichts verstellen — er sieht die Bedienelemente aber und laeuft beim Speichern
|
||||
in eine Fehlermeldung, weil die Seite selbst keine Rollenpruefung hat.
|
||||
|
||||
Aufgefallen am 2026-08-11 beim Erklaeren des Moduls: der User fragte, wo man
|
||||
die Benachrichtigungsfrequenz einstellt, und die ehrliche Antwort war "ganz
|
||||
unten auf der Admin-Seite".
|
||||
|
||||
## Solution
|
||||
|
||||
Richtung, nicht beschlossen — der zweite Punkt ist eine Produktfrage:
|
||||
|
||||
1. **Die Admin-Abschnitte hinter eine Rollenpruefung legen**, damit ein
|
||||
normaler Nutzer sie gar nicht erst sieht. Kleinster sinnvoller Schritt,
|
||||
loest den Fehlermeldungs-Fall und den groessten Teil der Verwirrung.
|
||||
2. **Wohin gehoert die persoenliche Einstellung?** Es gibt bereits
|
||||
`/settings/general/account` fuer nutzereigene Einstellungen. Drei Varianten:
|
||||
- Digest-Intervall dorthin verschieben — konsequent, aber modulfremde
|
||||
Einstellungen in einer allgemeinen Seite sammeln sich mit jedem weiteren
|
||||
Modul an.
|
||||
- Im Modul lassen, aber sichtbar abgetrennt und oberhalb der Admin-Bloecke.
|
||||
- Eine eigene, nutzerseitige Modulseite ("Meine Benachrichtigungen")
|
||||
getrennt von der Admin-Seite.
|
||||
|
||||
Die Antwort betrifft nicht nur dieses Modul: DKV-Fleet hat dieselbe Bauform
|
||||
(`modules/dkv-fleet/settings`), und jedes kuenftige Modul mit persoenlichen
|
||||
Einstellungen wird die Frage erneut stellen. Sinnvollerweise einmal
|
||||
grundsaetzlich entscheiden statt pro Modul.
|
||||
Reference in New Issue
Block a user