Skip to content

Entités Matching Instantané

InstantMatchingReservation

Table : instant_matching_reservation Description : Réservation temporaire (15 min) d'un jeune + 3 bénévoles pendant une session de matching instantané. 3 lignes par session (une par bénévole), même jeuneId et reservationDate.

Champ Type Description
id bigint Identifiant unique
jeuneId varchar ID du jeune (FK → jeune.id)
benevoleId varchar ID du bénévole (FK → benevole.id)
reservationDate timestamp Date/heure de la réservation — sert à calculer l'expiration (+ 15 min)
orderIndex int (nullable) Ordre de proposition (0, 1, 2) — tri pour l'affichage
etat enum État de la réservation (voir ci-dessous)
score float (nullable) Score de compatibilité — issu du microservice (v2) ou de l'algo classique (legacy)
typeMentor varchar(255) (nullable) Clé du bloc mentors retourné par le microservice (ex. femmes, non_femmes, generalistes). NULL si parcours back_office, fallback algo V1, ou catégorie introuvable
deletedAt timestamp Soft delete — null = réservation active

Valeurs de etat :

Valeur Description
proposé Valeur par défaut à la création
sélectionné Bénévole choisi au clic sur "Confirmer mon choix"
autre selectionné Les deux autres bénévoles lors de la confirmation
matché Bénévole sélectionné lors de la validation finale (création du binôme)
refusé Les 3 bénévoles lors d'un refus explicite
desactivation Les 3 bénévoles lors d'une demande de désactivation

L'état est mis à jour avant le soft-delete pour conserver l'historique dans les enregistrements archivés.

Relations :

  • jeune : ManyToOne → Jeune
  • benevole : ManyToOne → Benevole

Migrations :

Migration Description
1771338886269-addInstantMatchingReservation.ts Création de la table
1772612100000-add-order-index-instant-matching-reservation.ts Ajout order_index
1772612200000-add-etat-instant-matching-reservation.ts Ajout etat (enum)
1772612300000-add-score-instant-matching-reservation.ts Ajout score
1772612400000-add-matche-etat-instant-matching-reservation.ts Ajout valeur matché à l'enum
1774950000000-add-type-mentor-instant-matching-reservation.ts Ajout type_mentor

AlgoMatchingTrace

Table : algo_matching_trace Description : Trace d'exécution de l'algo de matching instantané. Permet à l'équipe Data d'analyser le profil jeune, le stock de mentors et les scores de compatibilité à chaque session. Pas d'API exposée — consultation directe en BDD. 3 lignes par session (une par bénévole), même jeuneDetail et stockDetail.

Champ Type Description
id bigint Identifiant unique
instantMatchingReservationId bigint FK → instant_matching_reservation.id (sans ON DELETE CASCADE — la trace survit à la suppression de la réservation)
jeuneDetail json Corps envoyé au microservice (buildRequestBody()) — profil complet du jeune au moment de l'appel
stockDetail json Réponse brute du microservice : objet mentors complet (toutes catégories, avant filtrage dispo). {} si fallback algo classique
compatibiliteAnalyse json Données de compatibilité pour CE bénévole proposé. { "fallback": true } si microservice indisponible
createdAt timestamp Date d'insertion (DEFAULT NOW())

Structure de jeuneDetail (JSON) :

{
  "jeune_programme": "EL",
  "jeune_id": 123,
  "jeune_cursus_actuel_ou_passe_cf": "Licence",
  "jeune_filiere_actuelle_ou_passee_cf": ["Droit"],
  "jeune_secteur_vise_cf": ["Finance"],
  "jeune_besoin": "Définir mon projet pro",
  "reponse_recepteur": "front_jeune"
}

Structure de stockDetail (JSON) :

{
  "femmes": [{ "id": 456, "rang": 1, "compatibilite": 0.87 }],
  "non_femmes": [],
  "generalistes": []
}

Structure de compatibiliteAnalyse (JSON) :

{
  "benevole_id": "456",
  "category": "femmes",
  "rang": 1,
  "compatibilite": 0.87,
  "score_final": 87.0,
  "disponible": true,
  "raison_exclusion": null
}

Champ JSON libre : l'équipe Data peut en faire évoluer le contenu sans passer par un dev.