Bug 1 — Filtre content_type inopérant :
Les méthodes de AnimeReleasesFetcher (get_seasonal_anime, get_scheduled_anime, get_top_anime, search_anime) et _get_fallback_recommendations construisaient des dicts sans inclure le champ type provenant de l'API Jikan. Le filtre content_type dans router_recommendations.py faisait r.get("content_type", r.get("type", "")) qui retournait toujours "".
→ Ajout de 'type': item.get('type', '') dans chaque construction de dict.
Bug 2 — Doublons dans /api/releases/seasonal : get_seasonal_anime() faisait un simple slice [:20] sans déduplication. Jikan pouvant retourner des doublons, ceux-ci se retrouvaient dans la réponse.
→ Ajout d'un ensemble seen_mal_ids pour filtrer les doublons avant de limiter à 20 résultats.
Bug 3 — /api/auth/me ne retourne pas is_admin :
get_current_user_from_token() et get_optional_user() construisaient un objet User sans passer is_admin
Le endpoint /me construisait la réponse manuellement sans inclure is_admin
→ Ajout de is_admin=user.is_admin dans les constructeurs User et de "is_admin": current_user.is_admin dans la réponse /me.
Fichiers modifiés :
app/recommendations.py
app/recommendation_engine.py
app/routers/router_auth.py
Corrige 3 bugs :
**Bug 1 — Filtre content_type inopérant :**
Les méthodes de `AnimeReleasesFetcher` (`get_seasonal_anime`, `get_scheduled_anime`, `get_top_anime`, `search_anime`) et `_get_fallback_recommendations` construisaient des dicts sans inclure le champ `type` provenant de l'API Jikan. Le filtre `content_type` dans `router_recommendations.py` faisait `r.get("content_type", r.get("type", ""))` qui retournait toujours `""`.
→ Ajout de `'type': item.get('type', '')` dans chaque construction de dict.
**Bug 2 — Doublons dans /api/releases/seasonal :**
`get_seasonal_anime()` faisait un simple slice `[:20]` sans déduplication. Jikan pouvant retourner des doublons, ceux-ci se retrouvaient dans la réponse.
→ Ajout d'un ensemble `seen_mal_ids` pour filtrer les doublons avant de limiter à 20 résultats.
**Bug 3 — /api/auth/me ne retourne pas is_admin :**
- `get_current_user_from_token()` et `get_optional_user()` construisaient un objet `User` sans passer `is_admin`
- Le endpoint `/me` construisait la réponse manuellement sans inclure `is_admin`
→ Ajout de `is_admin=user.is_admin` dans les constructeurs `User` et de `"is_admin": current_user.is_admin` dans la réponse `/me`.
Fichiers modifiés :
- `app/recommendations.py`
- `app/recommendation_engine.py`
- `app/routers/router_auth.py`
- Bug 1: Ajout du champ 'type' dans les dict de AnimeReleasesFetcher
(get_seasonal_anime, get_scheduled_anime, get_top_anime, search_anime)
et dans _get_fallback_recommendations pour que le filtre content_type
fonctionne correctement
- Bug 2: Déduplication par mal_id dans get_seasonal_anime() pour
éviter les doublons retournés par l'API Jikan
- Bug 3: Ajout de is_admin dans get_current_user_from_token(),
get_optional_user(), le constructeur User du register, et la
réponse /me
Some required checks failed
CI / Test (Python 3.11) (pull_request) Has been cancelled
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Corrige 3 bugs :
Bug 1 — Filtre content_type inopérant :
Les méthodes de
AnimeReleasesFetcher(get_seasonal_anime,get_scheduled_anime,get_top_anime,search_anime) et_get_fallback_recommendationsconstruisaient des dicts sans inclure le champtypeprovenant de l'API Jikan. Le filtrecontent_typedansrouter_recommendations.pyfaisaitr.get("content_type", r.get("type", ""))qui retournait toujours"".→ Ajout de
'type': item.get('type', '')dans chaque construction de dict.Bug 2 — Doublons dans /api/releases/seasonal :
get_seasonal_anime()faisait un simple slice[:20]sans déduplication. Jikan pouvant retourner des doublons, ceux-ci se retrouvaient dans la réponse.→ Ajout d'un ensemble
seen_mal_idspour filtrer les doublons avant de limiter à 20 résultats.Bug 3 — /api/auth/me ne retourne pas is_admin :
get_current_user_from_token()etget_optional_user()construisaient un objetUsersans passeris_admin/meconstruisait la réponse manuellement sans inclureis_admin→ Ajout de
is_admin=user.is_admindans les constructeursUseret de"is_admin": current_user.is_admindans la réponse/me.Fichiers modifiés :
app/recommendations.pyapp/recommendation_engine.pyapp/routers/router_auth.pyView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.