feat(wave): implement Phase 1 Smart Wave recommendations and buffer rotation
This commit is contained in:
1 parent
aa6c605d14
commit
9fbe372fab
10 files changed
+879
No files matched your search
@@ -70,6 +70,59 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Smart Wave Card -->
|
||||
<section class="card wave-card">
|
||||
<div class="wave-header">
|
||||
<div class="wave-header-title">
|
||||
<h2>🌊 Моя Волна <span class="badge badge-wave">Smart Wave V1</span></h2>
|
||||
<p class="wave-subtitle">
|
||||
Персональный поток рекомендаций на основе ваших звёздочек и скробблов. Автоматическая ротация буфера в Navidrome.
|
||||
</p>
|
||||
</div>
|
||||
<div class="wave-controls">
|
||||
<button id="waveGenerateBtn" class="btn btn-primary">⚡ Обновить Волну</button>
|
||||
<button id="waveRotateBtn" class="btn btn-outline" title="Перенести лайкнутые треки в постоянную библиотеку и очистить старые">🔄 Ротация</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wave-stats-row">
|
||||
<div class="wave-stat">
|
||||
<span class="wave-stat-label">Буфер ротации:</span>
|
||||
<strong id="waveCountLabel">0 / 25 треков</strong>
|
||||
</div>
|
||||
<div class="wave-stat">
|
||||
<span class="wave-stat-label">Объём на диске:</span>
|
||||
<strong id="waveSizeLabel">0 МБ</strong>
|
||||
</div>
|
||||
<div class="wave-stat">
|
||||
<span class="wave-stat-label">Срок хранения:</span>
|
||||
<strong>7 дней</strong>
|
||||
</div>
|
||||
<div class="wave-stat">
|
||||
<span class="wave-stat-label">Умный плейлист:</span>
|
||||
<strong><a href="https://music.qpid.pro" target="_blank">Моя Волна.nsp ↗</a></strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="waveAnchorsContainer" class="wave-anchors" style="margin-top: 0.8rem; display: none;">
|
||||
<span style="font-size: 0.8rem; color: var(--text-secondary);">Якорные исполнители вкуса:</span>
|
||||
<div id="waveAnchorsList" class="wave-anchors-tags"></div>
|
||||
</div>
|
||||
|
||||
<!-- Wave Tracks List -->
|
||||
<div class="wave-tracks-container" style="margin-top: 1rem;">
|
||||
<div class="wave-tracks-header">
|
||||
<h3>🎵 Треки сейчас в потоке Волны</h3>
|
||||
<span id="waveLoadingText" style="display: none; color: var(--accent-color); font-size: 0.82rem;">
|
||||
<span class="spinner-sm"></span> Идёт поиск и загрузка рекомендаций...
|
||||
</span>
|
||||
</div>
|
||||
<div id="waveTracksList" class="wave-tracks-list">
|
||||
<p class="empty-state">Волна пуста. Нажмите «Обновить Волну» для генерации первого потока.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Active Tasks -->
|
||||
<section class="card tasks-card">
|
||||
<h2>⚡ Очередь задач</h2>
|
||||
|
||||
Reference in new issue
Block a user