Skip to content

refactor(user): retirer les colonnes redondantes de la table user #3118

@Viczei

Description

@Viczei

Contexte

La table user (packages/app/src/server/db/schema.ts:44-63) contient des colonnes redondantes avec la session ProConnect :

Colonne Usage actuel Proposition
name Concaténation firstName + lastName, rempli au login Supprimer — disponible dans le JWT/session
firstName Rempli depuis ProConnect given_name Supprimer — disponible dans le JWT/session
lastName Rempli depuis ProConnect usual_name Supprimer — disponible dans le JWT/session
siret Extrait du scope ProConnect, utilisé pour créer le lien user_company au login Supprimer — le lien est déjà dans user_company, le siret courant est dans la session
image Toujours null (ProConnect ne fournit pas d'image) Supprimer — colonne morte

Code impacté

  • Schéma DB : packages/app/src/server/db/schema.ts — table users (lignes 44-63)
  • Auth config : packages/app/src/server/auth/config.ts — JWT callback (lignes 114-149) qui insère/met à jour ces colonnes
  • Session : même fichier, session callback (lignes 200-208) qui expose name, image, siret dans la session
  • Profile modal : packages/app/src/modules/profile/ProfileModal.tsx — affiche firstName/lastName en lecture seule (lignes 115-128)
  • Profile router : packages/app/src/server/api/routers/profile.ts — SELECT firstName, lastName
  • Export : packages/app/src/modules/export/queries.ts — join users pour récupérer firstName, lastName, email, phone

Travail à faire

  1. Migration Drizzle : supprimer les colonnes name, firstName, lastName, siret, image
  2. Auth config : ne plus persister ces champs en DB, s'assurer qu'ils restent dans le JWT/session
  3. Profile : lire firstName/lastName depuis la session au lieu de la DB
  4. Export : pour les exports, récupérer le nom du déclarant depuis la session ou stocker le nom du déclarant directement dans la déclaration (snapshot au moment de la soumission)
  5. Tests : adapter les tests unitaires et mocks

Points d'attention

  • L'export CSV a besoin du nom du déclarant au moment de la déclaration, pas du nom courant. Il faudra peut-être snapshoter declarantFirstName/declarantLastName dans la table declaration avant de supprimer les colonnes de user.
  • La colonne phone (seule colonne éditable par l'utilisateur) reste dans la table user.
  • La colonne email reste (identifiant principal).

Metadata

Metadata

Assignees

Type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions