/* Search Hub — 管理面板 */ (function () { 'use strict'; let currentEditSource = null; loadSources(); loadStatus(); loadApiDocs(); loadUsage(); // ===== 搜索源 ===== function loadSources() { fetch('/api/sources') .then(function (r) { return r.json(); }) .then(function (data) { var sources = data.sources || []; var html = ''; sources.forEach(function (s) { var badge = s.available ? '可用' : '不可用'; var keyInfo = s.needs_api_key ? (s.available ? ' | 密钥已配置' : ' | 需配置密钥') : ' | 无需密钥'; var editBtn = s.needs_api_key ? '' : ''; html += '