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
- Migration Drizzle : supprimer les colonnes
name, firstName, lastName, siret, image
- Auth config : ne plus persister ces champs en DB, s'assurer qu'ils restent dans le JWT/session
- Profile : lire
firstName/lastName depuis la session au lieu de la DB
- 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)
- 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).
Contexte
La table
user(packages/app/src/server/db/schema.ts:44-63) contient des colonnes redondantes avec la session ProConnect :namefirstName + lastName, rempli au loginfirstNamegiven_namelastNameusual_namesiretuser_companyau loginuser_company, le siret courant est dans la sessionimagenull(ProConnect ne fournit pas d'image)Code impacté
packages/app/src/server/db/schema.ts— tableusers(lignes 44-63)packages/app/src/server/auth/config.ts— JWT callback (lignes 114-149) qui insère/met à jour ces colonnesname,image,siretdans la sessionpackages/app/src/modules/profile/ProfileModal.tsx— affichefirstName/lastNameen lecture seule (lignes 115-128)packages/app/src/server/api/routers/profile.ts— SELECTfirstName,lastNamepackages/app/src/modules/export/queries.ts— join users pour récupérerfirstName,lastName,email,phoneTravail à faire
name,firstName,lastName,siret,imagefirstName/lastNamedepuis la session au lieu de la DBPoints d'attention
declarantFirstName/declarantLastNamedans la tabledeclarationavant de supprimer les colonnes deuser.phone(seule colonne éditable par l'utilisateur) reste dans la tableuser.emailreste (identifiant principal).