feat(sources): vereinte Quellenliste (Grund- + Kundenquellen in einer Tabelle)
- GET /api/sources mit scope=all|global|tenant ersetzt GET /global und
GET /tenant. Liefert org_name (LEFT JOIN organizations) und wie bisher
health_status + Artikel-Aktivitaet fuer ALLE Quellen.
- GET /global/stats wird GET /stats (zaehlt jetzt beide Herkuenfte,
neu by_origin und last_check), GET /global/languages wird GET /languages.
- PUT /global/{id} akzeptiert jetzt auch Kundenquellen (Guard ohne
tenant_id-Filter), damit der Deaktivieren-Knopf fuer beide funktioniert.
DELETE bleibt bewusst global-only.
- Neu GET /{source_id}/health fuer die Ausklapp-Details je Quelle.
- Frontend: EIN Render-/Filter-/Sortier-Pfad statt zwei (Tenant-Kette
komplett entfernt, ~200 Zeilen). Herkunfts-Filter, Organisations-Spalte,
Checkbox-Spalte + Bulk-Promote nur bei Herkunft Kundenquellen.
- Health-Badge ist klickbar und klappt eine gemeinsame Detailzeile aus
(Notizen + Checks mit Meldung und Zeitpunkt) mit Deaktivieren-Knopf.
Klickweg kaputte Quelle finden und deaktivieren: 3 statt 8 bis 10 Klicks.
- Unterreiter Kundenquellen entfaellt, erster Reiter heisst Quellenliste.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -40,12 +40,13 @@ AUTH_PROTECTED = [
|
||||
("DELETE", "/api/users/1"),
|
||||
("GET", "/api/dashboard/stats"),
|
||||
("GET", "/api/sources/meta"),
|
||||
("GET", "/api/sources/global"),
|
||||
("GET", "/api/sources"),
|
||||
("POST", "/api/sources/global"),
|
||||
("PUT", "/api/sources/global/1"),
|
||||
("DELETE", "/api/sources/global/1"),
|
||||
("GET", "/api/sources/global/stats"),
|
||||
("GET", "/api/sources/tenant"),
|
||||
("GET", "/api/sources/stats"),
|
||||
("GET", "/api/sources/languages"),
|
||||
("GET", "/api/sources/1/health"),
|
||||
("POST", "/api/sources/tenant/1/promote"),
|
||||
("POST", "/api/sources/tenant/bulk-promote"),
|
||||
("POST", "/api/sources/discover"),
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren