InscriptionDraft
Table : inscription_draft
Description : Brouillon d'inscription jeune (funnel v2). Remplace l'ancien champ JSON data par des colonnes typées calquées sur Jeune/User. Une ligne par inscription en cours, identifiée par un token.
| Champ | Type | Description |
|---|---|---|
id |
bigint |
Identifiant unique |
token |
varchar(64) |
Token unique du brouillon (identifie la session d'inscription côté front) |
state |
varchar(32) (défaut: BESOINS) |
Étape courante du funnel — voir valeurs FunnelState ci-dessous |
status |
varchar(16) (défaut: active) |
active (en cours) ou finalized (inscription terminée) |
existsInSso |
boolean (nullable) |
true si l'email correspond déjà à un compte A1Connect |
enabledInSso |
boolean (nullable) |
true si ce compte A1Connect est actif |
userId |
varchar (nullable) |
ID utilisateur une fois le compte créé/lié |
besoins |
json (nullable) |
Besoins/sous-besoins choisis ({ slug, subs }[]) |
objectifs |
varchar(255) (nullable) |
Objectif renseigné |
sectors |
json (nullable) |
Secteurs visés |
posteEnvisage |
varchar(255) (nullable) |
Poste envisagé |
localisationEnvisage |
varchar(255) (nullable) |
Localisation envisagée |
diplomeOuConcoursEnvisage |
varchar(255) (nullable) |
Diplôme ou concours envisagé |
dateEnvisage |
date (nullable) |
Date envisagée |
schoolDepartment |
varchar(255) (nullable) |
Département de l'établissement |
boursier |
varchar(255) (nullable) |
Statut boursier |
etudiantEtranger |
boolean (nullable) |
Étudiant étranger |
streetName |
varchar(255) (nullable) |
Nom de rue (adresse) |
streetNumber |
varchar(255) (nullable) |
Numéro de rue (adresse) |
cityCode |
varchar(255) (nullable) |
Code commune |
cityName |
varchar(255) (nullable) |
Nom de la ville |
email |
varchar(127) (nullable) |
Email du candidat |
origin |
varchar(255) (nullable) |
Slug technique d'origine (kb en localStorage, cf. TrackedKnownByLists.origin), capturé dès la création du draft — permet d'analyser l'origine des inscriptions abandonnées avant finalisation. Même sémantique que User.origin (voir docs/schema-valeurs-usuelles-metier.md). Vaut lp_mentorat pour les inscriptions venues d'une LP mentorat (voir plus bas) — pas de colonne sourceMentoratLp dédiée sur le draft, jeune.sourceMentoratLp est dérivé de cette valeur à la finalisation |
sourceMentoratBesoin |
boolean (nullable) |
Marqueur dérivé du besoin courant (true pour le besoin lost, remis à false si le besoin change) |
createdAt |
timestamp |
Date de création (auto) |
updatedAt |
timestamp |
Date de dernière mise à jour (auto) |
Valeurs de state (FunnelState) :
| Valeur | Route front associée |
|---|---|
BESOINS |
/inscription/jeune/besoins |
OBJECTIFS |
/inscription/jeune/objectifs |
BLOCAGES |
/inscription/jeune/blocages |
PERSONALISATION |
/inscription/jeune/personnalisation |
INFOS |
/inscription/jeune/infos |
COMPLETED |
/inscription/jeune/fin |
Valeurs de status (DraftStatus) : active, finalized.
Les CTA des landing pages mentorat pointent vers /inscription/jeune?kb=lp_mentorat (même mécanisme de tracking kb que les autres campagnes, alias lp_mentorat déclaré dans front/static/model/TrackedKnownByLists.js). Le paramètre est capturé en localStorage par middleware/queryparams.js, résolu en origin: 'lp_mentorat' à la création du draft (readOriginFromLocalStorage), puis comparé à LP_MENTORAT_ORIGIN (back/src/inscription/inscription.types.ts) pour poser jeune.sourceMentoratLp = true à la finalisation.
Pas de relation TypeORM déclarée (userId est un simple champ, pas de @ManyToOne). Détails du funnel : voir la doc dédiée (si présente) ou back/src/inscription/inscription.types.ts.