Feature #1145
openFeature #1133: Implémenter une page de profil utilisateur avec gestion des crédits et des tiers d'abonnement
Fullstack — Page admin (liste filtrable, édition tier, ajustement crédits, historique)
0%
issue:1133 — spec in epic + ticket description
Description
## Objectif
Interface d'administration OmDev : lister/filtrer les clients, modifier leur tier, ajuster leurs crédits, et consulter l'historique des modifications. Couvre les endpoints admin backend et la page admin frontend.
## Dépendances
Dépend du backend modèle/permissions/historique (#1141) et des notifications email (#1142, pour l'email de changement de tier).
## Portée — Backend (`api/`)
- Endpoints admin (sous garde permission « admin OmDev », 403 sinon) : liste paginée + filtrable des clients (nom, email, tier, crédits restants), modification du tier, ajustement manuel des crédits (+/-), lecture de l'historique.
- Toute mutation écrit une entrée d'historique et émet l'événement correspondant (tier changé → email via #1142).
## Portée — Frontend (`src/`)
- Page admin App Router (visible uniquement pour les admins OmDev) : tableau filtrable des clients, menu déroulant d'édition du tier, contrôle d'ajustement des crédits (optionnel), vue de l'historique des modifications.
- TanStack Query (queries + mutations); i18n `en.ts` ET `fr.ts`.
## Acceptance criteria
- [ ] La page admin liste et filtre les clients (nom, email, tier, crédits).
- [ ] Le tier d'un client est modifiable via un menu déroulant; le changement est persisté.
- [ ] Les crédits d'un client peuvent être ajustés (+/-) depuis l'admin.
- [ ] Chaque modification tier/crédits apparaît dans un historique consultable.
- [ ] Un changement de tier déclenche l'email au client (via #1142).
- [ ] Un utilisateur non-admin OmDev ne peut pas accéder à la page ni aux endpoints (403 / non rendu).
- [ ] Clés i18n cohérentes `en.ts`/`fr.ts`.
- [ ] Backend : pytest verts, `ruff check .`, `mypy src` propres. Frontend : `vitest`, `tsc`, `eslint`, `build` verts.
Files