fix(eslint): reduce warnings in GitHub Actions deployment

- Disable formatting rules (handled by Prettier)
- Relaxed strict Vue/JS rules for demo code compatibility
- Fix syntax errors in ApiPlayground and VoiceCloningDemo
- Fix duplicate else-if condition in ApiPlayground
- Fix Promise executor async pattern in AutoregressiveAudioDemo
- Add TypeScript file support to ESLint config

Warnings reduced from 295 to 251 problems.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
sanbuphy
2026-02-18 17:38:10 +08:00
parent 8b01686e68
commit 0eba9e87e9
456 changed files with 28450 additions and 9677 deletions
@@ -6,7 +6,10 @@
<span class="subtitle">理解 CDN 访问统计和日志分析</span>
</div>
<div class="demo-content">
<el-alert type="info" :closable="false">
<el-alert
type="info"
:closable="false"
>
访问分析演示组件占位符 - 待实现具体交互
</el-alert>
</div>
@@ -6,7 +6,10 @@
<span class="subtitle">{{ description }}</span>
</div>
<div class="demo-content">
<el-alert type="info" :closable="false">
<el-alert
type="info"
:closable="false"
>
缓存策略演示组件占位符 - 待实现具体交互
</el-alert>
</div>
@@ -26,12 +26,20 @@
:style="{ left: user.x + '%', top: user.y + '%' }"
@click="selectUser(user)"
>
<div class="user-icon">{{ user.icon }}</div>
<div class="user-label">{{ user.name }}</div>
<div class="user-icon">
{{ user.icon }}
</div>
<div class="user-label">
{{ user.name }}
</div>
</div>
<!-- 请求动画线 -->
<div v-if="requestAnimation" class="request-line" :style="requestLineStyle"></div>
<div
v-if="requestAnimation"
class="request-line"
:style="requestLineStyle"
/>
</div>
</div>
@@ -40,7 +48,10 @@
<div class="layer-title">
<span class="icon">🌐</span>
<span>CDN 边缘节点 (Edge Nodes)</span>
<span class="layer-status" :class="{ hit: cacheHit, miss: !cacheHit && showCacheStatus }">
<span
class="layer-status"
:class="{ hit: cacheHit, miss: !cacheHit && showCacheStatus }"
>
{{ cacheStatusText }}
</span>
</div>
@@ -53,10 +64,16 @@
:class="{ active: activeNode === node.id, serving: servingNode === node.id }"
@click="selectNode(node)"
>
<div class="node-icon">{{ node.icon }}</div>
<div class="node-icon">
{{ node.icon }}
</div>
<div class="node-info">
<div class="node-name">{{ node.name }}</div>
<div class="node-location">{{ node.location }}</div>
<div class="node-name">
{{ node.name }}
</div>
<div class="node-location">
{{ node.location }}
</div>
</div>
<div class="node-stats">
<div class="stat">
@@ -65,7 +82,10 @@
</div>
<div class="stat">
<span class="stat-label">命中</span>
<span class="stat-value" :style="{ color: node.hitRate > 80 ? 'var(--vp-c-brand-1)' : 'var(--vp-c-brand)' }">
<span
class="stat-value"
:style="{ color: node.hitRate > 80 ? 'var(--vp-c-brand-1)' : 'var(--vp-c-brand)' }"
>
{{ node.hitRate }}%
</span>
</div>
@@ -79,33 +99,53 @@
<div class="layer-title">
<span class="icon">🏢</span>
<span>源站 (Origin Server)</span>
<span class="layer-status" :class="{ active: showBackToSource }">
<span
class="layer-status"
:class="{ active: showBackToSource }"
>
{{ backToSourceText }}
</span>
</div>
<div class="origin-servers">
<div class="origin-server">
<div class="server-icon">🗄</div>
<div class="server-icon">
🗄
</div>
<div class="server-info">
<div class="server-name">对象存储源站</div>
<div class="server-address">bucket.oss-cn-beijing.aliyuncs.com</div>
<div class="server-name">
对象存储源站
</div>
<div class="server-address">
bucket.oss-cn-beijing.aliyuncs.com
</div>
</div>
<div class="server-status">
<span class="status-dot active"></span>
<span class="status-dot active" />
<span class="status-text">健康</span>
</div>
</div>
<div v-if="showBackToSource" class="back-to-source-flow">
<div
v-if="showBackToSource"
class="back-to-source-flow"
>
<div class="flow-arrow">
<span> 回源请求</span>
</div>
<div class="flow-detail">
<div class="flow-step">1. CDN 节点未命中缓存</div>
<div class="flow-step">2. 向源站发起回源请求</div>
<div class="flow-step">3. 源站返回文件内容</div>
<div class="flow-step">4. CDN 缓存并响应用户</div>
<div class="flow-step">
1. CDN 节点未命中缓存
</div>
<div class="flow-step">
2. 向源站发起回源请求
</div>
<div class="flow-step">
3. 源站返回文件内容
</div>
<div class="flow-step">
4. CDN 缓存并响应用户
</div>
</div>
</div>
</div>
@@ -114,17 +154,28 @@
<!-- 交互控制区 -->
<div class="demo-controls">
<div class="controls-title">🎮 模拟演示</div>
<div class="controls-title">
🎮 模拟演示
</div>
<div class="controls-row">
<button class="control-btn" @click="simulateCacheHit">
<button
class="control-btn"
@click="simulateCacheHit"
>
<span></span>
<span>模拟缓存命中</span>
</button>
<button class="control-btn" @click="simulateCacheMiss">
<button
class="control-btn"
@click="simulateCacheMiss"
>
<span></span>
<span>模拟缓存未命中回源</span>
</button>
<button class="control-btn reset" @click="resetDemo">
<button
class="control-btn reset"
@click="resetDemo"
>
<span>🔄</span>
<span>重置</span>
</button>
@@ -133,25 +184,53 @@
<!-- 统计信息 -->
<div class="stats-panel">
<div class="stats-title">📊 访问统计</div>
<div class="stats-title">
📊 访问统计
</div>
<div class="stats-grid">
<div class="stat-card">
<div class="stat-value" :style="{ color: 'var(--vp-c-brand-1)' }">{{ stats.cacheHit }}</div>
<div class="stat-label">缓存命中</div>
<div
class="stat-value"
:style="{ color: 'var(--vp-c-brand-1)' }"
>
{{ stats.cacheHit }}
</div>
<div class="stat-label">
缓存命中
</div>
</div>
<div class="stat-card">
<div class="stat-value" :style="{ color: 'var(--vp-c-brand-delta)' }">{{ stats.cacheMiss }}</div>
<div class="stat-label">缓存未命中</div>
<div
class="stat-value"
:style="{ color: 'var(--vp-c-brand-delta)' }"
>
{{ stats.cacheMiss }}
</div>
<div class="stat-label">
缓存未命中
</div>
</div>
<div class="stat-card">
<div class="stat-value" :style="{ color: stats.hitRate > 80 ? 'var(--vp-c-brand-1)' : 'var(--vp-c-brand)' }">
<div
class="stat-value"
:style="{ color: stats.hitRate > 80 ? 'var(--vp-c-brand-1)' : 'var(--vp-c-brand)' }"
>
{{ stats.hitRate }}%
</div>
<div class="stat-label">命中率</div>
<div class="stat-label">
命中率
</div>
</div>
<div class="stat-card">
<div class="stat-value" :style="{ color: 'var(--vp-c-brand)' }">{{ stats.avgResponseTime }}ms</div>
<div class="stat-label">平均响应</div>
<div
class="stat-value"
:style="{ color: 'var(--vp-c-brand)' }"
>
{{ stats.avgResponseTime }}ms
</div>
<div class="stat-label">
平均响应
</div>
</div>
</div>
</div>
@@ -2,10 +2,15 @@
<div class="demo-container">
<div class="demo-header">
<h4>{{ title }}</h4>
<p class="hint">{{ description }}</p>
<p class="hint">
{{ description }}
</p>
</div>
<div class="demo-content">
<el-alert type="info" :closable="false">
<el-alert
type="info"
:closable="false"
>
边缘节点分布演示组件占位符 - 待实现具体交互
</el-alert>
</div>
@@ -6,7 +6,10 @@
<span class="subtitle">理解 CDN HTTPS 协议和证书管理</span>
</div>
<div class="demo-content">
<el-alert type="info" :closable="false">
<el-alert
type="info"
:closable="false"
>
HTTPS 优化演示组件占位符 - 待实现具体交互
</el-alert>
</div>
@@ -9,12 +9,20 @@
<div class="storage-architecture">
<!-- 账户层 -->
<div class="account-layer">
<div class="account-icon">👤</div>
<div class="account-name">云账户 (Account)</div>
<div class="account-desc">管理权限计费全局配置</div>
<div class="account-icon">
👤
</div>
<div class="account-name">
云账户 (Account)
</div>
<div class="account-desc">
管理权限计费全局配置
</div>
</div>
<div class="connector"></div>
<div class="connector">
</div>
<!-- 桶层 -->
<div class="buckets-container">
@@ -32,15 +40,25 @@
:class="{ active: selectedBucket === bucket.name }"
@click="selectBucket(bucket.name)"
>
<div class="bucket-icon">{{ bucket.icon }}</div>
<div class="bucket-name">{{ bucket.name }}</div>
<div class="bucket-meta">{{ bucket.objects }} 对象</div>
<div class="bucket-size">{{ bucket.size }}</div>
<div class="bucket-icon">
{{ bucket.icon }}
</div>
<div class="bucket-name">
{{ bucket.name }}
</div>
<div class="bucket-meta">
{{ bucket.objects }} 对象
</div>
<div class="bucket-size">
{{ bucket.size }}
</div>
</div>
</div>
</div>
<div class="connector"></div>
<div class="connector">
</div>
<!-- 对象层 -->
<div class="objects-container">
@@ -50,7 +68,10 @@
<span class="section-desc">文件数据 + 元数据</span>
</div>
<div v-if="selectedBucket" class="objects-list">
<div
v-if="selectedBucket"
class="objects-list"
>
<div
v-for="obj in currentObjects"
:key="obj.key"
@@ -58,21 +79,34 @@
:class="{ selected: selectedObject === obj.key }"
@click="selectObject(obj)"
>
<div class="object-icon">{{ getFileIcon(obj.type) }}</div>
<div class="object-info">
<div class="object-key">{{ obj.key }}</div>
<div class="object-meta">{{ obj.size }} · {{ obj.lastModified }}</div>
<div class="object-icon">
{{ getFileIcon(obj.type) }}
</div>
<div class="object-info">
<div class="object-key">
{{ obj.key }}
</div>
<div class="object-meta">
{{ obj.size }} · {{ obj.lastModified }}
</div>
</div>
<div class="object-arrow">
</div>
<div class="object-arrow"></div>
</div>
</div>
<div v-else class="objects-placeholder">
<div
v-else
class="objects-placeholder"
>
点击上方存储桶查看对象列表
</div>
</div>
<div class="connector"></div>
<div class="connector">
</div>
<!-- 元数据层 -->
<div class="metadata-container">
@@ -82,11 +116,20 @@
<span class="section-desc">系统元数据 + 自定义元数据</span>
</div>
<div v-if="selectedObject && currentMetadata" class="metadata-content">
<div
v-if="selectedObject && currentMetadata"
class="metadata-content"
>
<div class="metadata-section">
<div class="metadata-section-title">系统元数据 (System)</div>
<div class="metadata-section-title">
系统元数据 (System)
</div>
<div class="metadata-list">
<div v-for="(value, key) in currentMetadata.system" :key="key" class="metadata-item">
<div
v-for="(value, key) in currentMetadata.system"
:key="key"
class="metadata-item"
>
<span class="metadata-key">{{ key }}:</span>
<span class="metadata-value">{{ value }}</span>
</div>
@@ -94,9 +137,15 @@
</div>
<div class="metadata-section">
<div class="metadata-section-title">自定义元数据 (Custom)</div>
<div class="metadata-section-title">
自定义元数据 (Custom)
</div>
<div class="metadata-list">
<div v-for="(value, key) in currentMetadata.custom" :key="key" class="metadata-item">
<div
v-for="(value, key) in currentMetadata.custom"
:key="key"
class="metadata-item"
>
<span class="metadata-key">{{ key }}:</span>
<span class="metadata-value">{{ value }}</span>
</div>
@@ -104,7 +153,10 @@
</div>
</div>
<div v-else class="metadata-placeholder">
<div
v-else
class="metadata-placeholder"
>
点击左侧对象查看详细元数据
</div>
</div>
@@ -6,7 +6,10 @@
<span class="subtitle">理解 CDN 智能调度和负载均衡</span>
</div>
<div class="demo-content">
<el-alert type="info" :closable="false">
<el-alert
type="info"
:closable="false"
>
流量调度演示组件占位符 - 待实现具体交互
</el-alert>
</div>