feat: 迁移自定义功能至 1.5.9.9 版本

包含音乐源限制、CI 防 OOM 优化、数据库连接池优化、管理端权限及 UI 细节定制等功能
This commit is contained in:
2026-09-12 19:26:42 +08:00
parent 34f0679117
commit 1106aeea6c
161 changed files with 18963 additions and 27900 deletions
+18 -21
View File
@@ -4,23 +4,23 @@
<Transition name="entry" appear>
<div v-show="active" class="content">
<div class="label">{{ yearReview.musicJourney }}</div>
<div class="label">音乐足迹</div>
<p class="text-intro">{{ yearReview.totalRequestsIntro }}</p>
<p class="text-intro">这一年,你一共发起了</p>
<div class="number-container">
<span class="big-number">{{ data.totalRequests.toLocaleString() }}</span>
<span class="suffix">{{ yearReview.requestCount }}</span>
<span class="suffix">次点歌</span>
</div>
<div class="sub-stats">
<div v-if="data.playedRequests > 0" class="sub-content">
<p class="text-base">
{{ yearReview.playedSummary(data.playedRequests) }}
其中,<span class="highlight-green">{{ data.playedRequests }}</span> 首
</p>
<p class="text-sub">{{ yearReview.playedDesc }}</p>
<p class="text-sub">在广播站被播出,传递给了更多人</p>
</div>
<p v-else class="text-sub">{{ yearReview.pendingPlayedDesc }}</p>
<p v-else class="text-sub">期待你的歌曲早日被播出</p>
</div>
</div>
</Transition>
@@ -28,13 +28,10 @@
</template>
<script setup>
import { useLocale } from '~/utils/locale'
defineProps({
data: Object,
active: Boolean
})
const { yearReview } = useLocale()
</script>
<style scoped>
@@ -46,7 +43,7 @@ const { yearReview } = useLocale()
align-items: center;
justify-content: center;
overflow: hidden;
background-color: var(--panel-bg-darkest); /* gray-950 */
background-color: var(--surface-primary, var(--bg-primary, #030712));
}
.bg-gradient {
@@ -54,7 +51,7 @@ const { yearReview } = useLocale()
inset: 0;
background: radial-gradient(
ellipse at top right,
var(--year-review-stats-bg-gradient),
rgba(30, 58, 138, 0.4),
transparent,
transparent
);
@@ -69,7 +66,7 @@ const { yearReview } = useLocale()
.label {
margin-bottom: 1rem;
color: var(--color-accent-light); /* brand-blue */
color: #3b82f6; /* brand-blue */
font-weight: 700;
letter-spacing: 0.05em;
font-size: 1.125rem;
@@ -77,7 +74,7 @@ const { yearReview } = useLocale()
.text-intro {
font-size: 1.5rem;
color: var(--text-muted);
color: #9ca3af;
margin-bottom: 0.5rem;
}
@@ -94,16 +91,16 @@ const { yearReview } = useLocale()
font-size: 10rem;
font-weight: 900;
line-height: 1;
background-image: linear-gradient(to bottom, var(--color-accent-light), var(--color-accent-light-hover));
background-image: linear-gradient(to bottom, #60a5fa, #1d4ed8);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 0 30px var(--year-review-stat-number-shadow));
filter: drop-shadow(0 0 30px rgba(37, 99, 235, 0.5));
}
.suffix {
font-size: 1.5rem;
color: var(--year-review-text-tertiary);
color: #6b7280;
font-weight: 500;
margin-left: 0.5rem;
}
@@ -112,8 +109,8 @@ const { yearReview } = useLocale()
margin-top: 3rem;
padding: 1.5rem;
border-radius: 1rem;
background: var(--overlay-5);
border: 1px solid var(--overlay-10);
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(4px);
}
@@ -125,19 +122,19 @@ const { yearReview } = useLocale()
.text-base {
font-size: 1.125rem;
color: var(--text-primary-lighter);
color: #d1d5db;
}
.highlight-green {
font-size: 1.875rem;
font-weight: 700;
color: var(--color-success-light);
color: #4ade80;
margin: 0 0.25rem;
}
.text-sub {
font-size: 1rem;
color: var(--text-muted);
color: #9ca3af;
}
@media (max-width: 768px) {