Préférence de contenus par compte : animés / séries / les deux

- Colonne users.content_preference (anime|serie|both, défaut both) avec
  migration automatique des bases existantes.
- GET /auth/me expose la préférence ; PUT /auth/preferences la met à
  jour (422 si valeur invalide).
- /api/search : filtre les résultats par media_type ET ignore les
  sources hors périmètre (une source anime-only n'est pas interrogée
  en mode séries). Les films restent associés aux animés.
- /api/discover : nouveautés filtrées selon la même règle.
- Sélecteur compact dans la topbar (⛩/📺/✨), persisté serveur.
- 7 tests dédiés (roundtrip, rejet invalide, filtrage search/discover,
  skip de sources) — 114 au total, ruff clean.

Prête pour la première source de séries : il ne reste qu'un module
SourceScraper avec media_types=("serie",) à écrire.
This commit is contained in:
Roman
2026-09-23 15:02:59 +00:00
parent 65761885ba
commit 28f1bbde31
9 changed files with 237 additions and 15 deletions
+8
View File
@@ -89,6 +89,14 @@ button { font-family: inherit; }
}
.icon-btn:hover { color: var(--text); background: var(--surface-2); }
.pref-select {
background: var(--surface); color: var(--text-dim);
border: 1px solid var(--border); border-radius: 8px;
font: inherit; font-size: 0.85rem;
padding: 0.35rem 0.5rem; cursor: pointer;
}
.pref-select:hover { color: var(--text); border-color: var(--accent); }
/* ------------------------------------------------------------ layout */
.main { padding: 2rem clamp(1rem, 3.5vw, 4rem) 4rem; }