Quellen-Health UI: Tab, API-Endpunkte, Vorschläge

- Neuer Sub-Tab "Quellen-Health" mit Vorschlägen + Check-Ergebnissen
- API: GET /health, GET /suggestions, PUT /suggestions/{id}, POST /health/run
- Vorschläge annehmen/ablehnen mit Auto-Ausführung
- Badge-Styles für Health-Status und Prioritäten
- Umlaute in Source-Modal und Dashboard korrigiert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-03-08 15:26:31 +01:00
Ursprung dbd5568296
Commit 7045a5c657
6 geänderte Dateien mit 541 neuen und 11 gelöschten Zeilen

Datei anzeigen

@@ -43,7 +43,7 @@
<div class="card">
<div class="card-header">
<h2>Letzte Aktivitaet</h2>
<h2>Letzte Aktivität</h2>
</div>
<div class="card-body" id="recentActivity">
<div class="text-muted">Laden...</div>
@@ -81,7 +81,7 @@
<!-- Org Detail -->
<div class="detail-panel" id="orgDetail">
<button class="detail-back" id="orgBackBtn">&larr; Zurueck</button>
<button class="detail-back" id="orgBackBtn">&larr; Zurück</button>
<div id="orgDetailHeader"></div>
<div class="nav-tabs mt-16" id="orgDetailTabs">
@@ -126,8 +126,8 @@
<tr>
<th>Typ</th>
<th>Max Nutzer</th>
<th>Gueltig ab</th>
<th>Gueltig bis</th>
<th>Gültig ab</th>
<th>Gültig bis</th>
<th>Status</th>
<th>Aktionen</th>
</tr>
@@ -156,7 +156,7 @@
</div>
<div style="display: flex; gap: 8px; margin-top: 16px;">
<button type="submit" class="btn btn-primary">Speichern</button>
<button type="button" class="btn btn-danger" id="deleteOrgBtn">Organisation loeschen</button>
<button type="button" class="btn btn-danger" id="deleteOrgBtn">Organisation löschen</button>
</div>
</form>
</div>
@@ -200,6 +200,7 @@
<div class="nav-tabs" id="sourceSubTabs">
<button class="nav-tab active" data-subtab="global-sources">Grundquellen</button>
<button class="nav-tab" data-subtab="tenant-sources">Kundenquellen</button>
<button class="nav-tab" data-subtab="source-health">Quellen-Health</button>
</div>
<!-- Grundquellen -->
@@ -283,6 +284,17 @@
</div>
</div>
</div>
<!-- Quellen-Health -->
<div class="section" id="sub-source-health">
<div class="action-bar">
<h2 style="font-size:16px;font-weight:600;">Quellen-Health & Vorschläge</h2>
<button class="btn btn-primary" id="runHealthCheckBtn" onclick="runHealthCheck()">Jetzt prüfen</button>
</div>
<div id="healthContent">
<div class="text-muted" style="padding:20px;">Tab auswählen um Health-Daten zu laden...</div>
</div>
</div>
</div>
<!-- Modal: New Organization -->
@@ -406,16 +418,16 @@
<select id="sourceType">
<option value="rss_feed">RSS-Feed</option>
<option value="web_source">Webquelle</option>
<option value="excluded">Gesperrt</option>
<option value="excluded">Ausgeschlossen</option>
</select>
</div>
<div class="form-group">
<label for="sourceCategory">Kategorie</label>
<select id="sourceCategory">
<option value="nachrichtenagentur">Nachrichtenagentur</option>
<option value="oeffentlich-rechtlich">Oeffentlich-Rechtlich</option>
<option value="qualitaetszeitung">Qualitaetszeitung</option>
<option value="behoerde">Behoerde</option>
<option value="oeffentlich-rechtlich">Öffentlich-Rechtlich</option>
<option value="qualitaetszeitung">Qualitätszeitung</option>
<option value="behoerde">Behörde</option>
<option value="fachmedien">Fachmedien</option>
<option value="think-tank">Think-Tank</option>
<option value="international">International</option>
@@ -477,7 +489,7 @@
<div class="modal-overlay" id="modalConfirm">
<div class="modal" style="max-width: 400px;">
<div class="modal-header">
<h3 id="confirmTitle">Bestaetigung</h3>
<h3 id="confirmTitle">Bestätigung</h3>
<button class="modal-close" onclick="closeModal('modalConfirm')">&times;</button>
</div>
<div class="modal-body">
@@ -485,12 +497,13 @@
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('modalConfirm')">Abbrechen</button>
<button class="btn btn-danger" id="confirmOkBtn">Bestaetigen</button>
<button class="btn btn-danger" id="confirmOkBtn">Bestätigen</button>
</div>
</div>
</div>
<script src="/static/js/app.js"></script>
<script src="/static/js/sources.js"></script>
<script src="/static/js/source-health.js"></script>
</body>
</html>