feat: GitHub Key Scanner mit automatischem Intervall und manueller UI
- KeyScannerService als BackgroundService (Timer + manueller Trigger) - GitHub Code Search: sucht nach sk-ant-oat01-* Keys in Dotenv-Dateien - AnthropicKeyChecker: shared Key-Check-Logik (ersetzt Duplikat in ApiKeysEndpoint) - ScannedKeyRecord Model mit Soft-Delete und Adopt-Verknüpfung - Scan-Endpoints: trigger, status, list, recheck, adopt, delete - API-Keys-Page: Scanner-UI mit Status-Indikator und Scanned-Keys-Liste - GitHub-URL pro gefundenem Key (html_url aus Search API) - Server-Settings: GitHubToken + ScanIntervalHours konfigurierbar - DB-Migration: scanned_keys Tabelle + api_keys Meta-Spalten (status, plan, usage) - ApiKeyRecord erweitert um Status/Plan/Usage-Felder mit UpdateApiKeyMeta()
This commit is contained in:
1 parent
db1a7c7f64
commit
006ef223bf
15 files changed
+996
-107
No files matched your search
@@ -569,6 +569,20 @@
|
||||
<button id="apiKeysFormSaveBtn">Erstellen</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form">
|
||||
<div class="section-header">
|
||||
<h2>Key Scanner</h2>
|
||||
<div style="display:flex;gap:.5rem;align-items:center">
|
||||
<span id="scanStatus" class="admin-user-meta" style="font-size:.85em"></span>
|
||||
<button id="scanTriggerBtn" class="section-add-btn"><i class="fa fa-search"></i> Jetzt scannen</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="scannedKeysList" class="admin-user-list"></div>
|
||||
<div id="scannedKeysActions" style="padding:.5rem 0;display:none">
|
||||
<button id="scannedDeleteAllBtn" class="icon-btn" title="Alle gescannten Keys löschen" style="font-size:.85em;color:var(--danger)"><i class="fa fa-trash"></i> Alle löschen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in new issue
Block a user