AIClient-2-API/static/components/section-dashboard.html
hex2077 05df61df74 feat: 添加 TLS Sidecar 支持并重构前端提供商配置系统
- 新增 TLS Sidecar 功能文档,支持绕过 Grok 等服务的 Cloudflare 403 封锁
- 重构前端提供商配置管理,实现动态配置缓存和统一数据源
- 升级配置文件管理界面 UI,优化信息展示和交互体验
- 改进 Claude Kiro 工具调用流式响应,实时推送 content_block 事件
- 修复 Codex 配额重置时间格式问题

主要变更:
- README 文档新增 TLS Sidecar 配置说明和使用指南
- 新增 tutorial-manager.js 模块,动态渲染 OAuth 授权路径
- routing-examples.js 支持动态生成路径路由示例卡片
- upload-config-manager.js 重构列表项布局,支持节点关联信息展示
- config-manager、models-manager、usage-manager 统一使用提供商配置缓存
- i18n 新增多语言翻译键,更新 Gemini 模型版本信息
2026-03-03 20:05:51 +08:00

168 lines
No EOL
8.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<link rel="stylesheet" href="components/section-dashboard.css">
<!-- Dashboard Section -->
<section id="dashboard" class="section active" aria-labelledby="dashboard-title">
<h2 id="dashboard-title" data-i18n="dashboard.title">系统概览</h2>
<div class="dashboard-top-row">
<div class="stats-grid">
<div class="stat-card">
<div class="stat-icon">
<i class="fas fa-clock"></i>
</div>
<div class="stat-info">
<h3 id="uptime">--</h3>
<p data-i18n="dashboard.uptime">运行时间</p>
</div>
</div>
</div>
<!-- Contact and Sponsor Section -->
<div class="contact-section dashboard-contact">
<div class="contact-grid">
<div class="contact-card">
<h3><i id="wechat-icon" class="fab fa-weixin"></i> <span id="wechat-title" data-i18n="dashboard.contact.wechat">扫码进群,注明来意</span></h3>
<div class="qr-container">
<img src="static/wechat.png" id="wechat-img" alt="微信二维码" class="qr-code clickable-qr">
</div>
<p class="qr-description" id="wechat-desc" data-i18n="dashboard.contact.wechatDesc">添加微信获取更多技术支持和交流</p>
</div>
<div class="contact-card" id="sponsor-card">
<h3><i class="fas fa-heart"></i> <span id="sponsor-title" data-i18n="dashboard.contact.sponsor">扫码赞助</span></h3>
<div class="qr-container">
<img src="static/sponsor.png" id="sponsor-img" alt="赞助二维码" class="qr-code clickable-qr">
</div>
<p class="qr-description" id="sponsor-desc" data-i18n="dashboard.contact.sponsorDesc">您的赞助是项目持续发展的动力</p>
</div>
</div>
</div>
</div>
<!-- System Information Panel -->
<div class="system-info-panel">
<div class="system-info-header">
<h3 data-i18n="dashboard.systemInfo">系统信息</h3>
<div class="update-controls">
<button id="checkUpdateBtn" class="btn btn-outline btn-sm" data-i18n-title="dashboard.update.checkTitle" title="检查更新">
<i class="fas fa-sync-alt"></i> <span data-i18n="dashboard.update.check">检查更新</span>
</button>
<button id="performUpdateBtn" class="btn btn-primary btn-sm" style="display: none;" data-i18n-title="dashboard.update.performTitle" title="执行更新">
<i class="fas fa-download"></i> <span data-i18n="dashboard.update.perform">立即更新</span>
</button>
</div>
</div>
<div class="info-grid">
<div class="info-item">
<span class="info-label">
<i class="fas fa-tag"></i> <span data-i18n="dashboard.version">版本号</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="appVersion">--</span>
<span class="update-badge" id="updateBadge" style="display: none;">
<i class="fas fa-arrow-up"></i> <span id="latestVersionText">--</span>
</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-code"></i> <span data-i18n="dashboard.nodeVersion">Node.js版本</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="nodeVersion">--</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-clock"></i> <span data-i18n="dashboard.serverTime">服务器时间</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="serverTime">--</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-desktop"></i> <span data-i18n="dashboard.platform">操作系统</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="platformInfo">--</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-memory"></i> <span data-i18n="dashboard.memoryUsage">内存使用</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="memoryUsage">--</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-microchip"></i> <span data-i18n="dashboard.cpuUsage">CPU 使用</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="cpuUsage">--</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-cogs"></i> <span data-i18n="dashboard.serviceMode">运行模式</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="serviceMode">--</span>
</div>
</div>
<div class="info-item">
<span class="info-label">
<i class="fas fa-microchip"></i> <span data-i18n="dashboard.processPid">进程 PID</span>
</span>
<div class="version-display-wrapper">
<span class="info-value" id="processPid">--</span>
</div>
</div>
</div>
</div>
<!-- Path Routing Examples Panel -->
<div class="routing-examples-panel">
<h3><i class="fas fa-route"></i> <span data-i18n="dashboard.routing.title">路径路由调用示例</span></h3>
<p class="routing-description" data-i18n="dashboard.routing.description">通过不同路径路由访问不同的AI模型提供商支持灵活的模型切换</p>
<div class="routing-examples-grid">
<!-- 路径路由示例将由 routing-examples.js 动态渲染 -->
<div class="routing-examples-loading">
<i class="fas fa-spinner fa-spin"></i>
<span data-i18n="common.loading">加载中...</span>
</div>
</div>
<div class="routing-tips">
<h4><i class="fas fa-lightbulb"></i> <span data-i18n="dashboard.routing.tips">使用提示</span></h4>
<ul>
<li data-i18n="dashboard.routing.tip1"><strong>即时切换:</strong> 通过修改URL路径即可切换不同的AI模型提供商</li>
<li data-i18n="dashboard.routing.tip2"><strong>客户端配置:</strong> 在Cherry-Studio、NextChat、Cline等客户端中设置API端点为对应路径</li>
<li data-i18n="dashboard.routing.tip3"><strong>跨协议调用:</strong> 支持OpenAI协议调用Claude模型或Claude协议调用OpenAI模型</li>
</ul>
</div>
<!-- 可用模型列表 -->
<div class="models-section">
<h4 class="models-section-title"><i class="fas fa-cube"></i> <span data-i18n="models.title">可用模型列表</span></h4>
<div class="models-description">
<div class="highlight-note">
<i class="fas fa-info-circle"></i>
<span data-i18n="models.note">点击模型名称可直接复制到剪贴板</span>
</div>
</div>
<!-- Models Container -->
<div class="models-container">
<div id="modelsList" class="models-list">
<!-- Models will be loaded here -->
<div class="models-loading">
<i class="fas fa-spinner fa-spin"></i>
<span data-i18n="common.loading">加载中...</span>
</div>
</div>
</div>
</div>
</div>
</section>