Mapping des variables MVLS vers les entités DEMA1N
Version : 1.0
Dernière mise à jour : 12/12/2025
Vue d'ensemble
Ce document présente le mapping détaillé entre les variables MVLS d'un jeune et leur stockage dans les entités DEMA1N (Jeune et User).
Tableau de correspondance
| Variable MVLS | Entité | Propriété TypeScript | Colonne BDD | Type |
|---|---|---|---|---|
id |
Jeune |
id |
id |
bigint (Primary Key) |
creation_date |
Jeune |
creationDate |
creation_date |
timestamp |
status |
Jeune |
status |
status |
varchar(255) |
status_update_date |
Jeune |
statusUpdateDate |
status_update_date |
timestamp |
first_name |
Jeune |
firstName |
first_name |
varchar(255) |
last_name |
User |
lastName |
last_name |
varchar(255) |
city_code |
Jeune |
cityCode |
city_code |
varchar(255) |
city_name |
Jeune |
cityName |
city_name |
varchar(255) |
school_name |
Jeune |
schoolName |
school_name |
varchar(255) |
academy |
Jeune |
academy |
academy |
varchar(255) |
gender |
User |
gender |
gender |
varchar(255) |
qpv |
Jeune |
qpv |
qpv |
boolean |
school_cursus |
Jeune |
schoolCursus |
school_cursus |
varchar(255) |
school_region |
Jeune |
schoolRegion |
school_region |
varchar(255) |
domaine_souhaite |
Jeune |
externalInfos.domaines |
external_infos (JSON) |
json |
school_department |
Jeune |
schoolDepartment |
school_department |
varchar(255) |
formation_souhaitee |
Jeune |
externalInfos.formations |
external_infos (JSON) |
json |
besoins |
Jeune |
besoins |
besoins |
json |
Notes importantes
1. Relations entre entités
last_nameetgendersont stockés dans l'entitéUser, qui est liée àJeunevia une relation@OneToOne(jeune.user).- Pour accéder à ces champs, il est nécessaire de charger la relation
userlors de la requête.
2. Champs JSON dans externalInfos
Les variables suivantes sont stockées dans le champ JSON externalInfos de l'entité Jeune :
domaine_souhaite→Jeune.externalInfos.domaines(tableau de strings)formation_souhaitee→Jeune.externalInfos.formations(tableau de strings)
3. Structure du champ besoins
Le champ besoins est un champ JSON dans Jeune avec la structure suivante :
besoins: { slug: string, subs: string[] }[] | null
Exemple :
[
{ "slug": "orientation", "subs": ["choix_metier", "parcours_etudes"] },
{ "slug": "confiance", "subs": [] }
]
Exemple d'accès dans le code TypeScript
Requête avec relations
import { JeuneRepository } from 'src/binomes/repositories/jeune.repository';
// Charger le jeune avec la relation User
const jeune = await jeuneRepository.findOne({
where: { id: jeuneId },
relations: ['user'] // Important pour accéder à User.lastName et User.gender
});
Accès aux champs
// Champs directs dans Jeune
const id = jeune.id;
const creationDate = jeune.creationDate;
const status = jeune.status;
const statusUpdateDate = jeune.statusUpdateDate;
const firstName = jeune.firstName;
const cityCode = jeune.cityCode;
const cityName = jeune.cityName;
const schoolName = jeune.schoolName;
const academy = jeune.academy;
const qpv = jeune.qpv;
const schoolCursus = jeune.schoolCursus;
const schoolRegion = jeune.schoolRegion;
const schoolDepartment = jeune.schoolDepartment;
const besoins = jeune.besoins;
// Champs via relation User
const lastName = jeune.user?.lastName;
const gender = jeune.user?.gender;
// Champs via externalInfos (JSON)
const domainesSouhaites = jeune.externalInfos?.domaines; // tableau de strings
const formationsSouhaitees = jeune.externalInfos?.formations; // tableau de strings
Exemple complet avec gestion des valeurs nulles
// Récupérer un jeune MVLS avec toutes ses données
const jeune = await jeuneRepository.findOne({
where: { id: jeuneId },
relations: ['user']
});
if (!jeune) {
throw new Error('Jeune non trouvé');
}
// Construire un objet avec toutes les variables MVLS
const variablesMvls = {
id: jeune.id,
creation_date: jeune.creationDate,
status: jeune.status,
status_update_date: jeune.statusUpdateDate,
first_name: jeune.firstName,
last_name: jeune.user?.lastName || null,
city_code: jeune.cityCode,
city_name: jeune.cityName,
school_name: jeune.schoolName,
academy: jeune.academy,
gender: jeune.user?.gender || null,
qpv: jeune.qpv,
school_cursus: jeune.schoolCursus,
school_region: jeune.schoolRegion,
domaine_souhaite: jeune.externalInfos?.domaines || null,
school_department: jeune.schoolDepartment,
formation_souhaitee: jeune.externalInfos?.formations || null,
besoins: jeune.besoins
};
Références
Version du document : 1.0
Dernière mise à jour : 12/12/2025