Skip to content

🐛 [BUG] - Création de rôle admin : le crash client e.roles.filter suit la réponse NestJS (entité seule) au lieu de la liste legacy #2833

Closed

Description

@shikanime

Description

L'ouverture de la page Administration > Rôles et la création d'un rôle via POST /api/v1/admin/roles servie par server-nestjs (bascule nginx-strangler) provoquent un crash client : TypeError: e.roles.filter is not a function.

Déclencheur : le handler NestJS renvoie l'entité créée seule, alors que le legacy apps/server (createRole, apps/server/src/resources/admin-role/business.ts) renvoie la liste complète rafraîchie (return listRoles()) avec un statut 201. Le client (apps/client/src/stores/admin-role.ts, createRole) affecte la réponse à roles.value via extractData(res, 201) : l'objet unique atterrit dans le store et le prochain .filter échoue.

Impact : toute création de rôle casse l'écran Rôles jusqu'à un rechargement complet, tant que la route est servie par NestJS. Le contrat ts-rest déclare 200: AdminRoleSchema (entité seule), en désaccord avec le client et le legacy — le contrat est la source de l'écart.

Etapes de reproduction

  1. Se placer sur une instance où /api/v1/admin/roles est servie par server-nestjs (stack preview PR feat(nginx-strangler): route /api/v1/admin/roles to server-nestjs #2782)
  2. Ouvrir Administration > Rôles et créer un rôle
  3. Observer TypeError: e.roles.filter is not a function et l'écran cassé

Comportement attendu

Selon le comportement legacy de référence et le consommateur client, POST /api/v1/admin/roles devrait répondre 201 avec la liste complète des rôles (AdminRole[]), comme le fait apps/server : roles.value reçoit un tableau et l'écran reste fonctionnel.

Logs

TypeError: e.roles.filter is not a function
    at createRole (apps/client/src/stores/admin-role.ts:33)

Observé également : réponse NestJS {"id":"…","name":"Nouveau rôle",…} (objet unique) vs réponse legacy : tableau complet incluant le rôle créé.

Environnement

Stack preview PR #2782 (routage nginx-strangler vers server-nestjs).

Définition du fini

  • Le contrat createAdminRole (packages/shared/src/contracts/admin-role.ts) déclare 201: AdminRoleSchema.array()
  • AdminRoleService.create (apps/server-nestjs) renvoie la liste rafraîchie des rôles après création
  • Des specs verrouillent la forme de réponse (liste complète, pas l'entité seule)
  • La création d'un rôle depuis l'écran Rôles ne provoque plus d'erreur client
  • La communication avec les autres équipes impliquées par ce correctif a été faite

Références

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions