feat(ui): KI-Weg wird fuer beide Wege gekennzeichnet

Bisher zeigte nur der EU-Weg ein Kennzeichen, Lagen auf dem Anthropic-Weg
blieben unbeschriftet und waren dadurch nicht von der Standardvorgabe zu
unterscheiden. Jetzt tragen beide ausdruecklich gesetzten Wege ein Kennzeichen
(gruen 'EU', grau 'Anthropic'), sowohl in der Lagen-Kopfzeile als auch in der
Seitenleiste. Ohne ausdrueckliche Wahl bleibt es unbeschriftet, dort gilt die
Vorgabe der Organisation.

Cache-Stempel von app.js UND components.js hochgezaehlt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-07-30 22:04:57 +00:00
Ursprung cd50cd8430
Commit b7a2a120cd
4 geänderte Dateien mit 33 neuen und 13 gelöschten Zeilen

Datei anzeigen

@@ -6181,8 +6181,8 @@ body.tutorial-active .tutorial-cursor {
.pipeline-stage.is-looping .pipeline-loop { animation: none !important; opacity: 1; } .pipeline-stage.is-looping .pipeline-loop { animation: none !important; opacity: 1; }
} }
/* EU-Kennzeichen in der Lagen-Kopfzeile (EU-Umbau) */ /* Kennzeichen des KI-Wegs (EU-Umbau). Kopfzeile und Seitenleiste. */
.incident-eu-badge { .incident-ai-badge {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
padding: 2px 8px; padding: 2px 8px;
@@ -6190,8 +6190,12 @@ body.tutorial-active .tutorial-cursor {
font-size: 11px; font-size: 11px;
font-weight: 700; font-weight: 700;
letter-spacing: 0.5px; letter-spacing: 0.5px;
background: rgba(16, 185, 129, 0.16);
color: #10B981;
flex-shrink: 0; flex-shrink: 0;
} }
.incident-eu-badge[hidden] { display: none; } .incident-ai-badge.ai-eu { background: rgba(16, 185, 129, 0.16); color: #10B981; }
.incident-ai-badge.ai-anthropic { background: rgba(148, 163, 184, 0.18); color: var(--text-secondary); }
.incident-ai-badge[hidden] { display: none; }
.sidebar-ai-tag { font-weight: 700; }
.sidebar-ai-tag.ai-eu { color: #10B981; }
.sidebar-ai-tag.ai-anthropic { color: var(--text-disabled); }

Datei anzeigen

@@ -164,7 +164,7 @@
<div class="incident-header-row1"> <div class="incident-header-row1">
<div class="incident-header-left"> <div class="incident-header-left">
<h2 class="incident-header-title" id="incident-title"></h2> <h2 class="incident-header-title" id="incident-title"></h2>
<span class="incident-eu-badge" id="incident-eu-badge" hidden>EU</span> <span class="incident-ai-badge" id="incident-ai-badge" hidden></span>
</div> </div>
<div class="incident-header-actions"> <div class="incident-header-actions">
<button class="btn btn-primary btn-small" id="refresh-btn" data-i18n="action.refresh">Aktualisieren</button> <button class="btn btn-primary btn-small" id="refresh-btn" data-i18n="action.refresh">Aktualisieren</button>
@@ -818,11 +818,11 @@
<script src="/static/js/i18n.js?v=20260513a"></script> <script src="/static/js/i18n.js?v=20260513a"></script>
<script src="/static/js/api.js?v=20260725b"></script> <script src="/static/js/api.js?v=20260725b"></script>
<script src="/static/js/ws.js?v=20260316b"></script> <script src="/static/js/ws.js?v=20260316b"></script>
<script src="/static/js/components.js?v=20260723a"></script> <script src="/static/js/components.js?v=20260731a"></script>
<script src="/static/js/layout.js?v=20260513f"></script> <script src="/static/js/layout.js?v=20260513f"></script>
<script src="/static/js/pipeline.js?v=20260513d"></script> <script src="/static/js/pipeline.js?v=20260513d"></script>
<script src="/static/js/a11y.js?v=20260725a"></script> <script src="/static/js/a11y.js?v=20260725a"></script>
<script src="/static/js/app.js?v=20260730a"></script> <script src="/static/js/app.js?v=20260731a"></script>
<script src="/static/js/cluster-data.js?v=20260322f"></script> <script src="/static/js/cluster-data.js?v=20260322f"></script>
<script src="/static/js/tutorial.js?v=20260316z"></script> <script src="/static/js/tutorial.js?v=20260316z"></script>
<script src="/static/js/chat.js?v=20260514e"></script> <script src="/static/js/chat.js?v=20260514e"></script>

Datei anzeigen

@@ -926,10 +926,26 @@ const App = {
typeBadge.className = 'incident-type-badge ' + (incident.type === 'research' ? 'type-research' : 'type-adhoc'); typeBadge.className = 'incident-type-badge ' + (incident.type === 'research' ? 'type-research' : 'type-adhoc');
typeBadge.textContent = incident.type === 'research' ? 'Analyse' : 'Live'; typeBadge.textContent = incident.type === 'research' ? 'Analyse' : 'Live';
// EU-Kennzeichen: nur bei ausdruecklich auf den EU-Weg gestellten Lagen // KI-Weg-Kennzeichen. Wird nur angezeigt, wenn die Lage ausdruecklich
{ const _eu = document.getElementById('incident-eu-badge'); // auf einen Weg gestellt ist. Ohne Angabe gilt die Vorgabe der
if (_eu) { _eu.hidden = incident.ai_backend !== 'bedrock'; // Organisation, dann bleibt die Kopfzeile bewusst unbeschriftet.
_eu.title = 'KI-Verarbeitung in der EU (AWS Bedrock Frankfurt), Recherche ueber den europaeischen Suchindex staan'; } } { const _ai = document.getElementById('incident-ai-badge');
if (_ai) {
const _b = incident.ai_backend;
if (_b === 'bedrock') {
_ai.hidden = false;
_ai.className = 'incident-ai-badge ai-eu';
_ai.textContent = 'EU';
_ai.title = 'KI-Verarbeitung in der EU (AWS Bedrock, Frankfurt), Recherche ueber den europaeischen Suchindex staan';
} else if (_b === 'cli') {
_ai.hidden = false;
_ai.className = 'incident-ai-badge ai-anthropic';
_ai.textContent = 'Anthropic';
_ai.title = 'KI-Verarbeitung ueber Anthropic mit eingebauter Websuche (heutiger Weg)';
} else {
_ai.hidden = true;
}
} }
// Kachel-Label: 'Recherchebericht' fuer Recherche-Lagen, 'Lagebild' fuer Live-Monitoring // Kachel-Label: 'Recherchebericht' fuer Recherche-Lagen, 'Lagebild' fuer Live-Monitoring
const _tI18n = (k, fb) => (typeof T === 'function') ? T(k, fb) : fb; const _tI18n = (k, fb) => (typeof T === 'function') ? T(k, fb) : fb;

Datei anzeigen

@@ -64,7 +64,7 @@ const UI = {
<span class="incident-dot ${dotClass}" id="dot-${incident.id}" aria-hidden="true"></span> <span class="incident-dot ${dotClass}" id="dot-${incident.id}" aria-hidden="true"></span>
<div style="flex:1;min-width:0;"> <div style="flex:1;min-width:0;">
<div class="incident-name">${this.escape(incident.title)}</div> <div class="incident-name">${this.escape(incident.title)}</div>
<div class="incident-meta">${incident.article_count} Artikel &middot; ${this.escape(creator)}</div> <div class="incident-meta">${incident.article_count} Artikel &middot; ${this.escape(creator)}${incident.ai_backend === 'bedrock' ? ' &middot; <span class="sidebar-ai-tag ai-eu">EU</span>' : (incident.ai_backend === 'cli' ? ' &middot; <span class="sidebar-ai-tag ai-anthropic">Anthropic</span>' : '')}</div>
${refreshStatusHtml} ${refreshStatusHtml}
</div> </div>
${incident.visibility === 'private' ? '<span class="badge badge-private" style="font-size:9px;" aria-label="Private Lage">PRIVAT</span>' : ''} ${incident.visibility === 'private' ? '<span class="badge badge-private" style="font-size:9px;" aria-label="Private Lage">PRIVAT</span>' : ''}