Files
nk 0efba7c691 feat(enrich): обогащение треков через Discogs + самохостинг обложек (WebP)
При первом появлении трека подтягиваем жанр/стиль/лейбл/год из Discogs
и сохраняем обложку в едином формате WebP 500x500 у себя (/covers). Дальше
пользователю отдаём только из своей БД — внешние сервисы в рантайме не дёргаем.

- Track: +genre/styles/label/year/discogsId/enrichStatus (миграция)
- EnrichModule: DiscogsService (поиск), CoverStorageService (sharp->webp),
  EnrichmentService (очередь с троттлингом + бэкафилл-крон каждые 10 мин)
- charts: фильтр чартов по жанру (?genre=), GET /charts/genres,
  жанр/стиль/лейбл/год в выдаче чарта и детальной странице
- main: раздача /covers статикой; docker: volume covers_data + env
  DISCOGS_TOKEN/PUBLIC_BASE_URL/COVERS_DIR
- убран MusicBrainz-фолбэк (заменён Discogs)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 13:28:22 +03:00

13 lines
790 B
SQL
Raw Permalink 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.

-- Обогащение треков (Discogs): жанр/стили/лейбл/год + состояние обогащения
ALTER TABLE "tracks" ADD COLUMN "genre" TEXT;
ALTER TABLE "tracks" ADD COLUMN "styles" TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[];
ALTER TABLE "tracks" ADD COLUMN "label" TEXT;
ALTER TABLE "tracks" ADD COLUMN "year" INTEGER;
ALTER TABLE "tracks" ADD COLUMN "discogs_id" INTEGER;
-- Все треки стартуют как pending: бэкафилл добавит жанр/стиль/лейбл из Discogs
-- и сохранит обложку в WebP (в т.ч. накопленным ранее трекам)
ALTER TABLE "tracks" ADD COLUMN "enrich_status" TEXT NOT NULL DEFAULT 'pending';
-- CreateIndex
CREATE INDEX "tracks_genre_idx" ON "tracks"("genre");