API-Keys: Source-URL, einheitliches Status-Schema, passive Usage-Erfassung, Usage-Bars

- SourceUrl-Feld in api_keys: GitHub-URL bei adoptierten Scan-Keys gespeichert
- HandleAdopt: Name = user/repo (aus URL extrahiert), SourceUrl = vollständige URL
- Status-Schema vereinheitlicht: überall 'valid' statt 'ok'/'usage_limited'
- AnthropicKeyChecker.ExtractMetaFromHeaders(): passive Header-Auswertung
- AnthropicService: TryUpdateKeyMeta() nach jedem Chat-Request (fire-and-forget)
- DatabaseService: UpdateApiKeyMetaByToken() für passive Updates per Token
- Frontend: formatKeyStatus() zentrale Status-Labels für API-Keys + Scanned-Keys
- Frontend: createUsageBadge() zweizeiliger Balken (Sitzung/Woche) mit Farbstufen
- CSS: Usage-Badge mit Track/Fill, warn (>=70%) und danger (>=90%) Klassen
This commit is contained in:
Meleki committed 2026-03-12 18:33:37 +01:00
1 parent 608118a823
commit de388806cb
8 files changed
+226 -32

No files matched your search

+61
View File
@@ -597,6 +597,13 @@ label.skill-item {
opacity: var(--semi-transparent);
}
a.admin-user-meta {
opacity: unset;
font-size: var(--font-size);
overflow: hidden;
text-overflow: ellipsis;
}
.admin-user-actions {
display: flex;
gap: var(--badge-spacing);
@@ -665,3 +672,57 @@ label.skill-item {
font-size: 0.85em;
padding: 0.4em 0.8em;
}
/* ── Usage Bars (API Keys) ── */
.usage-badge {
display: inline-flex;
flex-direction: column;
padding: var(--badge-padding);
background: var(--f3-bg);
border: var(--border-width) solid var(--f2-border);
border-radius: var(--border-radius);
font-size: var(--font-size);
width: 20em;
margin-top: var(--badge-spacing);
}
.usage-row {
display: flex;
align-items: center;
}
.usage-label {
width: 5em;
opacity: var(--semi-transparent);
flex-shrink: 0;
}
.usage-track {
flex: 1;
height: 6px;
background: var(--f1-bg);
border-radius: 3px;
overflow: hidden;
}
.usage-fill {
height: 100%;
border-radius: 3px;
background: var(--secondary);
transition: width .3s;
}
.usage-fill.warn {
background: var(--warning);
}
.usage-fill.danger {
background: var(--dangerous);
}
.usage-pct {
width: 3em;
text-align: right;
flex-shrink: 0;
}