Base de données

Trois BDD indépendantes, aucune jointure cross-plateforme. La synchronisation passe exclusivement par RabbitMQ.

ORM et stratégie de migration

Statut : stable Périmètre : transverse

  • A1Connect : Prisma 5 — schéma unique dans libs/common/prisma/schema.prisma, migrations via prisma migrate dev dans le container api
  • Dema1n : TypeORM — migrationsRun: true dans la config, les migrations s'appliquent au démarrage du container
  • Inspire-v2 : TypeORM — migrations manuelles (yarn migration:run)

Cohérence cross-plateforme

Statut : stable Périmètre : transverse

  • La clé de jointure inter-plateformes est l'email (pas un ID partagé)
  • Chaque plateforme maintient sa propre table user avec les champs dont elle a besoin
  • Les mises à jour de profil (user___updated) sont publiées par la plateforme source, consommées par les autres pour mise à jour locale

Spécificités Dema1n

Statut : stable Périmètre : dema1n

  • MySQL avec charset utf8mb4_general_ci — attention aux comparaisons de chaînes case-insensitive
  • Redis utilisé pour les sessions et le cache (pas documenté en détail — à compléter)

Champs Jeune — onboarding mentoré (Dema1n)

Champs de la table jeune renseignés lors de l'onboarding mentoré.

Situations particulières

Champ DB Entité TS Obligatoire Question
sp_besoins_mensuels spBesoinsMensuels Non « Je considère que je n'ai pas assez d'argent pour couvrir mes besoins mensuels »
sp_activite_remuneree spActiviteRemuneree Non « J'ai une activité rémunérée, qui n'est pas liée au contenu de mes études »
sp_isolement_familial spIsolementFamilial Non « Je vis loin de ma famille »
sp_isolement_etudiant spIsolementEtudiant Non « Je me sens isolé(e) des autres étudiants de ma formation »

Parcours et soutien

Champ DB Entité TS Obligatoire Question
soutien_proches spSoutiensProches Oui Tes proches peuvent-ils te soutenir dans tes choix ?
sp_niveau_parents spNiveauParents Oui Quel est le niveau d'études de tes parents ou tuteurs ?
projette_etude projetteEtude Oui Obligatoire pour les mentorés. Réponse à la question Quel niveau d'études aimerais-tu atteindre ? dans l'onboarding mentoré
job_ideal jobIdeal Oui Quel est ton job idéal ?
sectors sectors Oui Dans quel(s) secteur(s) aimerais-tu travailler ? (1 à 2 max, depuis SecteurJeuneIcons)

Établissement scolaire

Champ DB Entité TS Obligatoire Description
school_department schoolDepartment Non Département sélectionné (ex: "Ain")
school_name schoolName Non Nom de l'établissement sélectionné, ou "Autre"
school_name_autre schoolNameAutre Non Nom saisi manuellement si schoolName = "Autre"
etablissement_id etablissementId Non ID A1Connect de l'établissement (null si "Autre")

Table OnboardingSession (Dema1n)

Table de suivi de la progression d'un jeune dans le tunnel d'onboarding diagnostic. Créée par DM-24.

Champ DB Type Description
id bigint (FK → jeune.id) Identifiant du jeune
current_panel int Index du panel courant dans l'étape
current_step int Index de l'étape courante
created_at date Date de création de la session

La session est gérée par le microservice Python diagnostic. Le back NestJS dispose d'une entité miroir (OnboardingSession) pour les jointures éventuelles.

Spécificités Inspire-v2

Statut : stable Périmètre : inspire-v2

  • PostgreSQL avec SSL optionnel via DB_SSLCERT
  • Elasticsearch en parallèle pour la recherche full-text (les données sont indexées, pas requêtées via PG pour la recherche)
  • MinIO pour les assets binaires (images, vidéos via Mux)