first commit

This commit is contained in:
el 2025-06-11 17:46:41 +02:00
commit 71d8607399
12 changed files with 21886 additions and 0 deletions

231
docs/PRD.md Normal file
View file

@ -0,0 +1,231 @@
# Product Requirements Document (PRD) : Emploi'IA
**Version :** 1.0
**Date :** 11 juin 2025
**Auteur :** [Votre Nom/Équipe]
**Nom du Produit :** Emploi'IA (ou le nom final choisi)
---
## 1. Introduction
### 1.1. Vision du Produit
Emploi'IA est une plateforme web innovante et intelligente, conçue pour transformer l'expérience de recherche d'emploi et d'évolution professionnelle en France. En s'appuyant sur l'intelligence artificielle et l'intégration profonde des données officielles de France Travail (anciennement Pôle Emploi) et de partenaires spécialisés, Emploi'IA vise à offrir aux demandeurs d'emploi et aux professionnels en transition une expérience personnalisée, pertinente et proactive. Notre objectif est de simplifier les démarches, de fournir des insights précis sur le marché du travail et d'offrir des parcours de carrière sur mesure.
### 1.2. Objectifs du Produit
* **Simplifier la Recherche d'Emploi :** Réduire le temps et l'effort nécessaires pour trouver des offres pertinentes.
* **Augmenter la Pertinence :** Fournir des matchs emploi-profil de haute qualité grâce à l'IA et aux référentiels ROME.
* **Autonomiser les Utilisateurs :** Offrir des outils et des informations pour une meilleure compréhension du marché du travail et une prise de décision éclairée.
* **Personnaliser l'Expérience :** Adapter les suggestions (offres, formations, événements) aux besoins et compétences spécifiques de chaque utilisateur.
* **Fiabilité des Données :** Utiliser exclusivement des APIs officielles et fiables pour garantir la qualité de l'information.
* **Adoption Utilisateur (KPI) :** Atteindre X utilisateurs actifs mensuels après 6 mois post-MVP.
* **Satisfaction Utilisateur (KPI) :** Obtenir un score NPS (Net Promoter Score) de X% ou plus.
### 1.3. Public Cible / Personas
Emploi'IA cible principalement :
* **Les Demandeurs d'Emploi Actifs :** Personnes à la recherche d'un nouveau poste, qu'elles soient en situation de chômage ou en transition.
* **Besoin :** Trouver rapidement des offres pertinentes, comprendre les exigences des postes, optimiser leur candidature.
* **Les Professionnels en Évolution / Reconversion :** Individus souhaitant changer de métier, monter en compétences ou explorer de nouvelles opportunités.
* **Besoin :** Identifier les métiers porteurs, les formations adaptées, comprendre les passerelles entre métiers, évaluer les compétences transférables.
* **Les Jeunes Diplômés / Entrants sur le Marché du Travail :** Cherchant un premier emploi ou une première orientation.
* **Besoin :** Comprendre le marché, identifier les compétences clés pour un métier, trouver des stages ou des formations.
### 1.4. Contexte et Problème Résolu
La recherche d'emploi en France peut être complexe, longue et démotivante. Les outils existants sont souvent génériques, manquent de personnalisation ou ne fournissent pas une vision complète du marché. Les informations sont dispersées (offres, formations, statistiques). Les demandeurs ont du mal à identifier leurs compétences réelles et celles à développer, ou à cibler les entreprises qui recrutent réellement.
Emploi'IA résout ces problèmes en :
* Centralisant les informations pertinentes.
* Appliquant l'IA pour un matching précis et des insights intelligents.
* Offrant une expérience utilisateur fluide et intuitive, inspirée des meilleures pratiques du marché (ex: Google Careers).
---
## 2. Aperçu des Fonctionnalités (par Phase)
Cette section fournit un aperçu de haut niveau des fonctionnalités, détaillées ensuite.
### 2.1. Phase 1 : MVP (Minimum Viable Product)
* **Objectif :** Lancer une plateforme fonctionnelle de base pour la recherche d'offres et un matching IA simple.
* **Fonctionnalités Clés :** Authentification utilisateur, profil basique (métiers/compétences ROME), recherche d'offres d'emploi, matching IA simple (texte libre -> ROME), affichage détaillé des offres, ajout aux favoris, redirection pour postuler, génération simple de LM.
### 2.2. Phase 2 : Enrichissement & Personnalisation Approfondie
* **Objectif :** Intégrer les fonctionnalités d'IA avancées, l'analyse de données marché, et des outils de guidance de carrière.
* **Fonctionnalités Clés :** Intégration SSO France Travail, profil avancé (analyse CV, compétences graphiques), matching enrichi (soft skills, situations de travail), tableaux de bord marché, suggestions de formations/entreprises, fiches métiers complètes, outils de candidature avancés.
### 2.3. Phase 3 et au-delà : Excellence Opérationnelle & Nouveaux Services
* **Objectif :** Optimisation continue, IA proactive, événements personnalisés et expansion de l'écosystème.
* **Fonctionnalités Clés :** Notifications proactives (événements, rappels), coaching IA continu, outils de négociation salariale, potentiel de réseautage, analyse de trajectoire professionnelle.
---
## 3. Exigences Fonctionnelles Détaillées (Focus sur le MVP)
### 3.1. Gestion Utilisateur
* **Description :** Permettre aux utilisateurs de s'inscrire, se connecter et gérer un profil de base sur Emploi'IA.
* **User Stories :**
* `En tant qu'utilisateur non enregistré, je veux pouvoir m'inscrire avec mon email et un mot de passe afin d'accéder aux fonctionnalités de la plateforme.`
* `En tant qu'utilisateur enregistré, je veux pouvoir me connecter avec mon email et mon mot de passe afin de reprendre ma session.`
* `En tant qu'utilisateur, je veux pouvoir renseigner mon nom, ma localisation, mon métier recherché et mes compétences clés afin de commencer à personnaliser mon profil.`
* `En tant qu'utilisateur, je veux que mes saisies de métier et compétences soient aidées par des suggestions pour un mapping ROME initial.`
* **Dépendances APIs :** `ROME 4.0 - Métiers`, `ROME 4.0 - Compétences`, `Romeo` (pour l'aide à la complétion/suggestion ROME).
### 3.2. Recherche d'Offres d'Emploi
* **Description :** Offrir une interface de recherche intuitive et performante pour trouver des offres d'emploi.
* **User Stories :**
* `En tant qu'utilisateur, je veux pouvoir rechercher des offres d'emploi par mots-clés et localisation afin de trouver des postes qui m'intéressent.`
* `En tant qu'utilisateur, je veux pouvoir filtrer les résultats par type de contrat (CDI, CDD, Intérim...) et date de publication afin d'affiner ma recherche.`
* `En tant qu'utilisateur, je veux voir une liste claire et paginée des offres pertinentes avec les informations essentielles.`
* **Dépendances APIs :** `Offres d'emploi`.
### 3.3. Matching IA Basique
* **Description :** Utiliser l'IA pour associer intelligemment le profil de l'utilisateur avec les offres d'emploi.
* **User Stories :**
* `En tant qu'utilisateur, je veux que la plateforme analyse les offres d'emploi pour identifier les métiers et compétences ROME automatiquement.`
* `En tant qu'utilisateur, je veux voir un indicateur de pertinence (score ou badge) sur chaque offre, montrant à quel point elle correspond à mon profil.`
* **Dépendances APIs :** `Romeo`, `ROME 4.0 - Métiers`, `ROME 4.0 - Compétences`.
### 3.4. Consultation et Actions sur une Offre
* **Description :** Permettre à l'utilisateur de consulter les détails d'une offre et d'effectuer des actions (favoris, candidature).
* **User Stories :**
* `En tant qu'utilisateur, je veux pouvoir cliquer sur une offre pour voir sa description complète et ses informations détaillées.`
* `En tant qu'utilisateur, je veux pouvoir ajouter une offre à mes favoris pour la retrouver facilement plus tard.`
* `En tant qu'utilisateur, je veux pouvoir générer une lettre de motivation simple pour l'offre sélectionnée, pré-remplie avec mes informations et celles de l'offre.`
* `En tant qu'utilisateur, je veux pouvoir cliquer sur un bouton pour postuler à l'offre, qui me redirige vers le site de candidature externe.`
* **Dépendances APIs :** `Offres d'emploi` (pour le détail).
---
## 4. Intégrations APIs (Récapitulatif et Cas d'Usage)
Emploi'IA s'appuiera sur les APIs suivantes, avec une authentification OAuth2 (Client Credentials Flow pour les APIs de données, et ultérieurement Authorization Code Flow pour le SSO Utilisateur) :
| API (Fournisseur) | Rôle Principal pour Emploi'IA | Cas d'Usage Majeurs | Phase d'Intégration |
| :---------------------------- | :--------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- | :------------------ |
| `Offres d'emploi` (FT) | Source principale des offres d'emploi. | Recherche d'offres, affichage des détails, filtres. | MVP (Phase 1) |
| `ROME 4.0 - Métiers` (FT) | Référentiel des métiers ROME. | Synchronisation initiale, validation des métiers, interprétation des codes ROME de `Romeo`. | MVP (Phase 1) |
| `ROME 4.0 - Compétences` (FT) | Référentiel des compétences ROME. | Synchronisation initiale, validation des compétences, interprétation des codes ROME de `Romeo`. | MVP (Phase 1) |
| `Romeo` (FT) | Moteur d'IA pour le mapping texte libre <-> ROME. | Analyse des offres d'emploi, aide à la saisie du profil, analyse de CV. | MVP (Phase 1) |
| `API SSO France Travail` (FT) | Authentification utilisateur déléguée. | Connexion simplifiée via identifiants FT, potentiel d'enrichissement du profil. | Phase 2 |
| `Match via Soft Skills` (Instarlink) | Intégration des soft skills dans le matching. | Affinage du matching, suggestions de soft skills à développer. | Phase 2 |
| `ROME V4.0 - Situations de travail` (FT) | Référentiel des environnements de travail. | Préférences utilisateur sur le contexte de travail, affinage du matching. | Phase 2 |
| `ROME V4.0 - Fiches ROME` (FT) | Fiches métiers structurées. | Pages détaillées sur les métiers, passerelles de carrière. | Phase 2 |
| `La Bonne Boîte` (FT) | Identification d'entreprises qui recrutent. | Aide à la candidature spontanée ciblée. | Phase 2 |
| `Marché du travail` (FT) | Statistiques sur l'emploi et les tensions. | Tableaux de bord, conseils sur les métiers porteurs, données localisées. | Phase 2 |
| `Open formation` (FT) | Accès aux offres de formation. | Suggestions de formations personnalisées. | Phase 2 |
| `Sortants de formation et accès à l'emploi` (FT) | Statistiques sur le succès des formations. | Validation de la pertinence des formations suggérées. | Phase 2 |
| `Mes évènements France Travail` (FT) | Événements emploi/formation locaux. | Notifications et suggestions d'événements pertinents. | Phase 3+ |
---
## 5. Exigences Non-Fonctionnelles
### 5.1. Performance
* **Temps de Réponse :**
* Moins de 2 secondes pour les requêtes de recherche d'offres et l'affichage des détails (90ème percentile).
* Moins de 500 ms pour les requêtes API internes critiques (authentification, accès profil).
* **Scalabilité :** La plateforme doit pouvoir supporter une augmentation significative du nombre d'utilisateurs (jusqu'à X utilisateurs simultanés en Phase 2) et de requêtes sans dégradation majeure des performances.
* **Temps de Synchronisation ROME :** Les mises à jour des référentiels ROME ne doivent pas impacter la disponibilité de la plateforme.
### 5.2. Sécurité
* **Authentification et Autorisation :** Implémentation sécurisée des processus d'inscription/connexion et de gestion des accès (hachage des mots de passe, tokens JWT sécurisés).
* **Protection des Données Personnelles (RGPD) :**
* Collecte et traitement des données conformes au RGPD (consentement explicite, droit à l'oubli, droit à la rectification).
* Stockage des données sensibles (CV, informations profil détaillées) chiffré.
* Audit régulier des vulnérabilités de sécurité.
* **Sécurité API :** Gestion sécurisée des clés API et des tokens OAuth2 pour les interactions avec France Travail.
### 5.3. UI/UX (Design)
* **Inspiration :** Fortement inspiré par les principes de design de **Google Careers** (simplicité, clarté, recherche puissante, hiérarchie de l'information).
* **Intuitivité :** La navigation et l'utilisation de la plateforme doivent être faciles et naturelles pour l'utilisateur, même sans formation.
* **Transparence de l'IA :** L'intelligence artificielle doit être perçue comme un assistant utile et non comme une "boîte noire". Les scores de matching, les suggestions et les analyses doivent être présentés de manière compréhensible et non intrusive.
* **Responsivité :** La plateforme doit être pleinement fonctionnelle et optimisée pour une utilisation sur tous les types d'appareils (desktop, tablette, mobile).
* **Accessibilité :** Conformité aux normes d'accessibilité web (RGAA ou WCAG) pour garantir l'utilisation par tous.
* **Feedback Visuel :** Des indicateurs clairs et immédiats sur les actions de l'utilisateur et l'état du système.
### 5.4. Fiabilité et Disponibilité
* **Uptime :** Objectif de disponibilité de 99.5% pour les services critiques du MVP, augmentant à 99.9% pour les phases ultérieures.
* **Gestion des Erreurs :** Robustesse face aux erreurs API externes (France Travail, Instarlink) avec des messages d'erreur clairs pour l'utilisateur et des mécanismes de retry/fallback côté backend.
* **Cohérence des Données :** Assurer la cohérence des données ROME et des offres d'emploi synchronisées.
### 5.5. Maintenabilité
* **Qualité du Code :** Code propre, bien commenté, respectant les bonnes pratiques de développement.
* **Documentation Technique :** Documentation API interne, architecture, guides de déploiement.
* **Facilité d'Évolution :** Architecture modulaire permettant d'ajouter de nouvelles fonctionnalités et APIs sans refonte majeure.
### 5.6. Monitoring & Logging
* Mise en place d'outils de monitoring des performances applicatives (APM), des logs centralisés et des alertes pour détecter et résoudre rapidement les problèmes.
* Suivi des appels aux APIs externes (succès/échecs, temps de réponse).
---
## 6. Considérations Techniques et Architecture (Haut Niveau)
* **Stack Technologique (Exemple) :**
* **Backend :** Python (Django/FastAPI) ou Node.js (Express)
* **Base de Données :** PostgreSQL (pour sa robustesse et sa gestion JSON pour les données semi-structurées de ROME)
* **Frontend :** React ou Vue.js (pour une expérience utilisateur riche et dynamique)
* **Architecture :**
* **MVP :** Approche "monolithe modulaire" possible pour accélérer le développement, avec des modules bien séparés pour les utilisateurs, les offres, et les intégrations ROME.
* **Phases Ultérieures :** Évolution vers une architecture micro-services pour les composants critiques (ex: service de matching IA, service de profil) pour une meilleure scalabilité et indépendance.
* **API Gateway :** Point d'entrée unique pour les requêtes frontend vers le backend, gérant l'authentification, les redirections.
* **Stratégie de Base de Données :**
* Stockage des utilisateurs, de leurs profils.
* Cache des offres d'emploi pertinentes et des données ROME pour optimiser les performances et réduire les appels API externes.
* **Stratégie de Déploiement :**
* Utilisation d'un fournisseur Cloud (ex: AWS, GCP, Azure, OVH) avec des services managés pour réduire la charge opérationnelle.
* Conteneurisation (Docker) et orchestration (Kubernetes) envisagées pour la scalabilité et la gestion des déploiements.
---
## 7. Métriques de Succès (KPIs)
* **Trafic Utilisateur :** Nombre d'utilisateurs uniques, d'utilisateurs actifs mensuels (MAU).
* **Engagement :** Nombre de sessions par utilisateur, durée moyenne des sessions, nombre d'offres consultées, nombre d'offres mises en favoris, nombre de candidatures lancées.
* **Taux de Conversion :** Taux d'inscription, taux de complétion de profil.
* **Qualité du Matching :** Taux de clics sur les offres "matchées", feedback utilisateur sur la pertinence des suggestions.
* **Performance Technique :** Temps de réponse moyens, uptime, taux d'erreurs API.
---
## 8. Feuille de Route et Phases de Développement
La feuille de route détaillée est disponible dans le document : `docs/ROADMAP.md`. Elle décrit la progression du projet par phases (MVP, Phase 2, Phase 3+) avec les fonctionnalités et intégrations API correspondantes.
---
## 9. Risques et Hypothèses
### 9.1. Risques
* **Dépendance APIs Externes :** Modification des APIs France Travail, latence ou indisponibilité.
* **Complexité de l'IA :** Difficulté à obtenir un matching de très haute qualité ou à interpréter les données de manière pertinente pour l'utilisateur.
* **Adoption Utilisateur :** Faible adoption si l'expérience ne répond pas aux attentes ou si la concurrence est trop forte.
* **Délai d'Obtention SSO France Travail :** Processus d'approbation long pouvant retarder des fonctionnalités clés de la Phase 2.
* **Coûts :** Coûts d'infrastructure et de développement plus élevés que prévu.
### 9.2. Hypothèses
* Les APIs France Travail resteront stables et documentées.
* Le processus d'obtention de l'accès SSO France Travail sera achevé dans un délai raisonnable.
* Une équipe de développement qualifiée sera disponible pour la durée du projet.
* Le budget alloué permettra de couvrir les coûts d'infrastructure et de développement.
---

179
docs/ROADMAP.md Normal file
View file

@ -0,0 +1,179 @@
# Feuille de Route Détaillée JobIA
Cette feuille de route présente une vision stratégique et progressive du développement de JobIA, depuis la préparation initiale jusqu'à un écosystème complet et intelligent, en s'appuyant sur les APIs identifiées et les principes de design inspirés de Google Careers.
---
## Vision Générale du Produit
**Mission :** Faciliter et personnaliser la recherche d'emploi et l'évolution professionnelle en France grâce à une plateforme intelligente, intuitive et basée sur les données officielles du marché du travail.
**Objectif Final :** Devenir la référence française pour l'accompagnement personnalisé des parcours professionnels, en offrant un matching IA avancé, des informations marché pertinentes et des conseils proactifs.
---
## Phases de Développement
---
### Phase 0 : Préparation & Lancement des Demandes (Jours 1-15)
* **Objectif :** Établir les bases techniques et administratives nécessaires au démarrage du développement, sécuriser les accès critiques.
* **Actions Clés :**
* **Accès APIs France Travail (Client Credentials) :**
* Obtention des identifiants et clés pour toutes les APIs partenaires (Offres d'emploi, ROME x4, Romeo, La Bonne Boîte, Marché du travail, Sortants de formation, Open Formation, Mes évènements).
* Configuration et test des premières requêtes d'authentification pour confirmer l'accès.
* **Demande API SSO France Travail :**
* Identification du formulaire ou du processus de demande spécifique à l'API de connexion/authentification utilisateur de France Travail.
* Préparation et soumission de la demande.
* Suivi actif de l'état d'avancement de la demande.
* **Mise en place de l'environnement de développement :**
* Choix de la stack technique initiale (langages, frameworks backend/frontend).
* Configuration des dépôts de code (Git, GitHub/GitLab).
* Mise en place d'un environnement de développement local et d'un environnement de staging initial.
* **Architecture BDD Initiale :**
* Conception du schéma de base de données pour les utilisateurs et la synchronisation des référentiels ROME (Métiers, Compétences).
* **APIs et Dépendances Externes :**
* Toutes les APIs France Travail (demande d'accès).
* Processus d'obtention de l'accès SSO France Travail (lancé en parallèle, délai incertain).
---
### Phase 1 : MVP (Minimum Viable Product) - (Mois 1-3)
* **Objectif :** Lancer une version fonctionnelle de base de JobIA, permettant la recherche d'offres d'emploi et un matching IA simple, afin de valider l'intérêt et l'expérience utilisateur de base.
* **Fonctionnalités Clés du MVP :**
* **Gestion Utilisateur :**
* **Inscription/Connexion :** Système d'authentification propre à JobIA (email/mot de passe).
* **Profil Utilisateur Basique :**
* Informations personnelles (nom, prénom, contact, localisation).
* Métier recherché (saisie texte libre, avec aide à la complétion via `Romeo`).
* Compétences clés (saisie texte libre, avec aide à la complétion via `Romeo`).
* **Recherche d'Offres d'Emploi :**
* **Barre de Recherche Intuitive :** Recherche par mot-clé et localisation (inspirée de Google Careers).
* **Filtres Simples :** Type de contrat, date de publication, rayon de recherche.
* **Affichage des Résultats :** Liste paginée des offres avec informations clés (titre, entreprise, lieu, date).
* **Matching IA Basique :**
* **Analyse des Offres :** Utilisation de l'API `Romeo` pour extraire automatiquement les `Appellations ROME` (métiers) et les `Savoirs/Savoir-faire ROME` (compétences) à partir des descriptions d'offres. Stockage de ces mappings.
* **Calcul de Pertinence :** Comparaison simple entre les compétences et métiers ROME du profil utilisateur et ceux extraits des offres. Affichage d'un score de matching simple ou mise en avant des offres "les plus pertinentes".
* **Détail d'une Offre d'Emploi :**
* Affichage complet de la description de l'offre.
* Informations contextuelles (localisation, type de contrat, salaire si disponible).
* Mise en évidence des compétences et métiers ROME extraits par l'IA.
* **Actions sur les Offres :**
* **Ajout aux Favoris :** Possibilité pour l'utilisateur de sauvegarder des offres.
* **Candidature :** Redirection simple vers la page de candidature externe (URL de l'offre France Travail).
* **Génération de Lettre de Motivation (Modèle Simple) :** Permet à l'utilisateur de générer une lettre de motivation basique, en s'appuyant sur les informations de l'offre et les infos de son profil JobIA.
* **Intégrations APIs Prioritaires pour le MVP :**
1. **`Offres d'emploi` (France Travail) :**
* **Rôle :** Alimenter le moteur de recherche et l'affichage des annonces.
* **Utilisation :** Appels dynamiques pour la recherche, récupération des détails d'offres spécifiques.
2. **`ROME 4.0 - Métiers` (France Travail) :**
* **Rôle :** Référentiel structuré des métiers.
* **Utilisation :** Synchronisation initiale et complète dans la BDD de JobIA. Utilisé pour la validation des métiers et l'interprétation des codes ROME renvoyés par Romeo.
3. **`ROME 4.0 - Compétences` (France Travail) :**
* **Rôle :** Référentiel structuré des compétences (savoirs, savoir-faire, savoir-être).
* **Utilisation :** Synchronisation initiale et complète dans la BDD de JobIA. Utilisé pour la validation des compétences et l'interprétation des codes ROME renvoyés par Romeo.
4. **`Romeo` (France Travail) :**
* **Rôle :** Moteur d'IA pour le mapping texte libre <-> ROME.
* **Utilisation :** Appels dynamiques pour analyser les descriptions d'offres d'emploi. Potentiellement pour aider à la complétion du profil utilisateur (métiers/compétences).
* **Considérations Techniques Spécifiques au MVP :**
* **Backend :** Langage/Framework choisi (ex: Python/Django, Node.js/Express, Java/Spring Boot). Base de données relationnelle (PostgreSQL recommandé pour sa robustesse et sa flexibilité). Mise en place des services d'intégration pour la synchronisation ROME.
* **Frontend :** Framework UI/UX (ex: React, Vue.js, Angular) avec un focus sur les principes de design Google Careers (simplicité, clarté).
* **Déploiement :** Environnement Cloud de base (ex: quelques VMs, services managés pour BDD), avec un pipeline CI/CD simple.
---
### Phase 2 : Enrichissement & Personnalisation Approfondie (Mois 4-8)
* **Objectif :** Passer d'une plateforme de recherche "simple" à un assistant intelligent, en améliorant la personnalisation, la pertinence du matching et en offrant des informations stratégiques.
* **Fonctionnalités Clés :**
* **Authentification Utilisateur Améliorée :**
* **Intégration SSO France Travail :** Permettre aux utilisateurs de se connecter via leurs identifiants France Travail, avec gestion des consentements.
* **Profil Utilisateur Avancé :**
* **Analyse de CV :** Téléchargement de CV (PDF/DOCX) et extraction automatique des métiers et compétences ROME via l'API `Romeo`.
* **Visualisation des Compétences :** Affichage interactif des compétences ROME maîtrisées et à développer.
* **Préférences de Contexte de Travail :** Ajout de préférences utilisateur basées sur le référentiel `ROME V4.0 - Situations de travail`.
* **Matching IA Avancé :**
* **Intégration Soft Skills :** Utilisation de l'API `Match via Soft Skills` pour affiner le matching en prenant en compte les qualités professionnelles.
* **Prise en compte des Situations de Travail :** Le matching intègre les préférences de l'utilisateur pour les environnements de travail.
* **Explication du Matching :** L'IA explique pourquoi une offre est pertinente pour un utilisateur (ex: "Vous matchez à 85% sur les compétences techniques, et 70% sur les savoir-être").
* **Informations Marché Stratégiques :**
* **Tableaux de Bord Métier/Territoire :** Visualisation des données clés (métiers en tension, nombre de demandeurs d'emploi, volume d'offres) via l'API `Marché du travail`.
* **Conseils de Candidature Spontanée :** Recommandation d'entreprises ayant un fort potentiel de recrutement dans un métier ou secteur donné (`La Bonne Boîte`).
* **Orientation et Formation :**
* **Suggestions de Formations Personnalisées :** Basées sur les compétences manquantes pour un métier cible, via l'API `Open formation`.
* **Statistiques de Retour à l'Emploi après Formation :** Affichage des taux d'accès à l'emploi des sortants de formations pertinentes (`Sortants de formation et accès à l'emploi`).
* **Exploration des Métiers :**
* **Pages "Fiche Métier" Détaillées :** Utilisation de l'API `ROME V4.0 - Fiches ROME` pour présenter une vue complète d'un métier (définition, compétences clés, savoirs, contextes de travail, métiers proches).
* **Parcours de Carrière :** Suggestions de progression ou de reconversion basées sur les similitudes ROME.
* **Génération de Contenu Avancée :** Personnalisation plus poussée de la lettre de motivation et du CV, en intégrant les éléments issus de l'analyse ROME du profil et de l'offre.
* **Intégrations APIs Prioritaires pour la Phase 2 :**
1. **API SSO France Travail :** (Si l'accès est obtenu) Permet une connexion fluide et l'accès potentiel à des données de profil France Travail.
2. **`Match via Soft Skills` (Instarlink) :**
* **Rôle :** Intégration des qualités professionnelles pour un matching plus humain.
* **Utilisation :** Appels dynamiques pour évaluer la correspondance des soft skills entre profil et offre.
3. **`ROME V4.0 - Situations de travail` (France Travail) :**
* **Rôle :** Référentiel des environnements de travail.
* **Utilisation :** Synchronisation initiale. Permet aux utilisateurs de définir leurs préférences et d'affiner le matching.
4. **`ROME V4.0 - Fiches ROME` (France Travail) :**
* **Rôle :** Fiches métiers agrégées et prêtes à l'emploi.
* **Utilisation :** Appels à la demande pour afficher les pages détaillées des métiers.
5. **`La Bonne Boîte` (France Travail) :**
* **Rôle :** Identifier les entreprises qui recrutent.
* **Utilisation :** Appels dynamiques pour cibler les candidatures spontanées.
6. **`Marché du travail` (France Travail) :**
* **Rôle :** Statistiques sur l'emploi, les métiers en tension.
* **Utilisation :** Appels dynamiques pour alimenter des dashboards et des conseils marché.
7. **`Open formation` (France Travail) :**
* **Rôle :** Offres de formation.
* **Utilisation :** Appels dynamiques pour suggérer des formations.
8. **`Sortants de formation et accès à l'emploi` (France Travail) :**
* **Rôle :** Statistiques sur le succès des formations.
* **Utilisation :** Appels dynamiques pour valider la pertinence des formations.
* **Considérations Techniques Spécifiques à la Phase 2 :**
* **Scalabilité :** Préparation à l'augmentation du nombre d'utilisateurs et de requêtes IA.
* **Micro-services :** Possibilité de découper le backend en micro-services pour gérer la complexité croissante (ex: service de matching, service de profil, service de synchronisation ROME).
* **Gestion des Données Utilisateur :** Implémentation stricte des règles RGPD pour les données sensibles issues du SSO et de l'analyse de CV.
* **Cache Avancé :** Stratégies de caching plus agressives pour les données peu changeantes (référentiels, fiches ROME).
* **Monitoring & Alerting :** Mise en place d'outils de surveillance des performances et de la fiabilité des APIs et des services internes.
---
### Phase 3 et au-delà : Excellence Opérationnelle & Expansion (Mois 9+)
* **Objectif :** Consolider la position de JobIA, optimiser la performance, explorer de nouvelles opportunités et fonctionnalités.
* **Fonctionnalités Clés :**
* **Accompagnement Proactif :**
* **`Mes évènements France Travail` :** Notifications et suggestions personnalisées d'événements (salons, ateliers) basées sur le profil et les intérêts de l'utilisateur.
* **Recommandations proactives :** L'IA suggère des actions (formations, événements, mises à jour de profil) de manière non sollicitée mais pertinente.
* **Amélioration Continue de l'IA :**
* **Boucles de Feedback Utilisateur :** Exploitation des APIs de feedback de `Romeo` (`/performancePredictionCompetences`, etc.) pour améliorer l'IA.
* **Apprentissage Personnalisé :** L'IA adapte ses recommandations en fonction des interactions et des succès/échecs de l'utilisateur.
* **Outils d'Aide à la Négociation :** Basés sur les données du marché du travail (`Marché du travail`).
* **Partenariats et Écosystème :** Intégration avec d'autres services ou plateformes (ex: plateformes de micro-learning, simulateurs d'entretien).
* **Tableaux de bord personnalisés pour le suivi de la progression.**
* **Intégrations APIs :**
* **`Mes évènements France Travail` :**
* **Rôle :** Accès aux événements liés à l'emploi.
* **Utilisation :** Appels dynamiques pour afficher les événements pertinents.
* Optimisation de l'utilisation de toutes les APIs existantes.
* Exploration de nouvelles APIs France Travail ou partenaires.
* **Considérations Techniques :**
* Optimisation des coûts d'infrastructure.
* Approfondissement des stratégies d'IA (machine learning, traitement du langage naturel) pour des fonctionnalités plus complexes.
* Amélioration de la résilience et de la gestion des pannes.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,674 @@
{
"openapi": "3.0.1",
"info": {
"version": "1",
"title": "ROME V4.0 - Fiches ROME",
"description": "L'API « ROME 4.0 - Fiches métiers » permet de structurer les données au format de la fiche ROME.<br/> Cette API vous permet d'identifier, pour chaque fiche :<br/> <ul> <li>Les groupes de compétences mobilisées : les compétences sont classées et ordonnées par enjeu,</li> <li>Les groupes de savoirs : les savoirs sont classés et ordonnés par catégorie de savoir.</li> </ul>\r\n\r\n**Scopes** : `api_rome-fiches-metiersv1`,`nomenclatureRome`\r\n\r\n**Royaume** : `/partenaire`"
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-fiches-metiers"
}
],
"paths": {
"/v1/fiches-rome/fiche-metier": {
"get": {
"tags": [
"Fiche métier"
],
"summary": "Lister les fiches métier",
"description": "Permet de lister les fiches métier.\r\n\r\nSi vous renseignez une ou plusieurs valeurs dans \"champs\", alors vous obtiendrez le résultat pour ces champs.\r\n\r\nSi vous ne renseignez aucune valeur dans \"champs\", alors vous obtiendrez le résultat par défaut. (Sélectionner l'exemple \"***Par défaut***\" pour voir les données retournées)",
"operationId": "listerFichesMetier",
"parameters": [
{
"name": "champs",
"in": "query",
"description": "Sélecteur de champs : il est possible de paramétrer le retour de la requête en définissant les champs souhaités (liste exhaustive des champs possibles : `Allowed values`). <br/> Vous pouvez vous aider des exemples de réponse pour identifier les champs que vous voulez récupérer.",
"required": false,
"schema": {
"type": "string",
"enum": [
"code",
"groupescompetencesmobilisees(competences(libelle,code),enjeu(libelle,code))",
"groupessavoirs(savoirs(libelle,code),categoriesavoirs(libelle,code))",
"metier(libelle,code)"
],
"example": "code,metier(libelle,code)"
}
},
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer e3jfZTLucZOACCBhtRVSsiYIjxs"
}
}
],
"responses": {
"200": {
"description": "Retourne la liste des fiches métier.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FicheMetier"
}
},
"examples": {
"Retour complet": {
"value": [
{
"code": "A1201",
"groupesCompetencesMobilisees": [
{
"competences": [
{
"type": "string",
"libelle": "Techniques de soudage",
"code": "100007"
}
],
"enjeu": {
"libelle": "Animation",
"code": "3"
}
}
],
"groupesSavoirs": [
{
"savoirs": [
{
"type": "SAVOIR",
"libelle": "Techniques de soudage",
"code": "100007"
}
],
"categorieSavoirs": {
"libelle": "Véhicules",
"code": "30"
}
}
],
"metier": {
"libelle": "Bûcheronnage et élagage",
"code": "A1201"
}
}
]
},
"Retour par défaut": {
"value": [
{
"code": "A1201",
"metier": {
"libelle": "Bûcheronnage et élagage",
"code": "A1201"
}
}
]
}
}
}
}
},
"400": {
"description": "Bad request : peut-être causé par un sélecteur de champs incorrect.",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"message": "L'attribut 'monAttribut' n'est pas selectionnable",
"codeMetier": "SELECTOR",
"service": "/v1/mon_uri",
"code": 400
}
}
}
}
}
}
},
"security": [],
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-fiches-metiers",
"description": "PROD"
}
]
}
},
"/v1/fiches-rome/fiche-metier/{code}": {
"get": {
"tags": [
"Fiche métier"
],
"summary": "Lire une fiche métier",
"description": "Permet de lire une fiche métier depuis son code.\r\n\r\nSi vous renseignez une ou plusieurs valeurs dans \"champs\", alors vous obtiendrez le résultat pour ces champs.\r\n\r\nSi vous ne renseignez aucune valeur dans \"champs\", alors vous obtiendrez le résultat par défaut. (Sélectionner l'exemple \"***Par défaut***\" pour voir les données retournées)",
"operationId": "lireFicheMetier",
"parameters": [
{
"name": "champs",
"in": "query",
"description": "Sélecteur de champs : il est possible de paramétrer le retour de la requête en définissant les champs souhaités (liste exhaustive des champs possibles : `Allowed values`). <br/> Vous pouvez vous aider des exemples de réponse pour identifier les champs que vous voulez récupérer.",
"required": false,
"schema": {
"type": "string",
"enum": [
"code",
"datefin",
"groupescompetencesmobilisees(competences(libelle,code),enjeu(libelle,code))",
"groupessavoirs(savoirs(libelle,code),categoriesavoirs(libelle,code))",
"metier(libelle,code)",
"obsolete"
],
"example": "obsolete,code,groupescompetencesmobilisees(competences(libelle,code),enjeu(libelle,code)),groupessavoirs(savoirs(libelle,code),categoriesavoirs(libelle,code)),datefin,metier(libelle,code)"
}
},
{
"name": "date",
"in": "query",
"description": "Date de la recherche au format yyyy-MM-dd ou yyyyMMdd.",
"required": false,
"schema": {
"type": "string",
"format": "date",
"example": "2022-05-28"
}
},
{
"name": "code",
"in": "path",
"description": "Code de la fiche métier.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer e3jfZTLucZOACCBhtRVSsiYIjxs"
}
}
],
"responses": {
"200": {
"description": "Retourne les données pour une fiche métier.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FicheMetier"
},
"examples": {
"Retour complet": {
"value": {
"obsolete": false,
"code": "A1201",
"groupesCompetencesMobilisees": [
{
"competences": [
{
"type": "string",
"libelle": "Techniques de soudage",
"code": "100007"
}
],
"enjeu": {
"libelle": "Animation",
"code": "3"
}
}
],
"groupesSavoirs": [
{
"savoirs": [
{
"type": "SAVOIR",
"libelle": "Techniques de soudage",
"code": "100007"
}
],
"categorieSavoirs": {
"libelle": "Véhicules",
"code": "30"
}
}
],
"dateFin": "2024-02-23T14:40:14.848Z",
"metier": {
"libelle": "Bûcheronnage et élagage",
"code": "A1201"
}
}
},
"Retour par défaut": {
"value": {
"obsolete": false,
"code": "A1201",
"groupesCompetencesMobilisees": [
{
"competences": [
{
"type": "string",
"libelle": "Techniques de soudage",
"code": "100007"
}
],
"enjeu": {
"libelle": "Animation",
"code": "3"
}
}
],
"groupesSavoirs": [
{
"savoirs": [
{
"type": "SAVOIR",
"libelle": "Techniques de soudage",
"code": "100007"
}
],
"categorieSavoirs": {
"libelle": "Véhicules",
"code": "30"
}
}
],
"dateFin": "2024-02-23T14:40:14.848Z",
"metier": {
"libelle": "Bûcheronnage et élagage",
"code": "A1201"
}
}
}
}
}
}
},
"400": {
"description": "Bad request : peut-être causé par un sélecteur de champs incorrect.",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"message": "L'attribut 'monAttribut' n'est pas selectionnable",
"codeMetier": "SELECTOR",
"service": "/v1/mon_uri",
"code": 400
}
}
}
}
}
},
"404": {
"description": "Not found.",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"service": "/v1/mon_uri",
"message": "Code inexistant: monCode",
"code": 404
}
}
}
}
}
}
},
"security": [],
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-fiches-metiers",
"description": "PROD"
}
]
}
},
"/v1/fiches-rome/version": {
"get": {
"tags": [
"Versionning du ROME"
],
"summary": "Récupérer la version actuelle du ROME",
"description": "Récupère la version actuelle du ROME.",
"operationId": "lireVersion",
"parameters": [
{
"name": "champs",
"in": "query",
"description": "Sélecteur de champs : il est possible de paramétrer le retour de la requête en définissant les champs souhaités (liste exhaustive des champs possibles : `Allowed values`). <br/> Vous pouvez vous aider des exemples de réponse pour identifier les champs que vous voulez récupérer.",
"required": false,
"schema": {
"type": "string",
"enum": [
"version",
"lastModifiedDate",
"version,lastModifiedDate"
],
"example": "version,lastModifiedDate"
}
},
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer e3jfZTLucZOACCBhtRVSsiYIjxs"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionRome"
},
"examples": {
"Retour complet": {
"value": {
"version": "19",
"lastModifiedDate": "2025-05-22T12:04:43.281Z"
}
},
"Retour par défaut": {
"value": {
"version": "19",
"lastModifiedDate": "2025-05-22T12:04:43.281Z"
}
}
}
}
}
},
"400": {
"description": "Bad request : peut-être causé par un sélecteur de champs incorrect",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"message": "L'attribut 'monAttribut' n'est pas selectionnable",
"codeMetier": "SELECTOR",
"service": "/v1/mon_uri",
"code": 400
}
}
}
}
}
}
},
"security": [],
"servers": [
{
"url": "https://api.pole-emploi.io/partenaire/rome-fiches-metiers",
"description": "PROD"
}
]
}
}
},
"components": {
"schemas": {
"FicheMetier": {
"type": "object",
"description": "Fiche Métier",
"properties": {
"code": {
"type": "string",
"description": "Code unique de la fiche métier",
"example": "A1201"
},
"dateFin": {
"type": "string",
"description": "date de fin de validité (renseignée si l'entité est obsolete)",
"format": "date-time"
},
"groupesCompetencesMobilisees": {
"type": "array",
"description": "Groupes de compétences mobilisées",
"items": {
"$ref": "#/components/schemas/GroupeCompetences"
}
},
"groupesSavoirs": {
"type": "array",
"description": "Groupes de savoirs",
"items": {
"$ref": "#/components/schemas/GroupeSavoirs"
}
},
"metier": {
"$ref": "#/components/schemas/Metier"
},
"obsolete": {
"type": "boolean",
"description": "boolean définissant si l'entité est obsolete"
}
}
},
"GroupeCompetences": {
"type": "object",
"description": "Groupe de compétences",
"properties": {
"competences": {
"type": "array",
"description": "Compétences rattachées. Il peut s'agir, de façon pêle-mêle, de macro-savoir-faire, de macro-savoir-êtres professionnels ou bien de compétence détaillée. Il ne peut pas y avoir de savoirs.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/CompetenceDetaillee"
},
{
"$ref": "#/components/schemas/MacroSavoirEtreProfessionnel"
},
{
"$ref": "#/components/schemas/MacroSavoirFaire"
},
{
"$ref": "#/components/schemas/Savoir"
}
]
}
},
"enjeu": {
"$ref": "#/components/schemas/Enjeu"
}
}
},
"CompetenceDetaillee": {
"type": "object",
"description": "Compétence détaillée (en provenance du référentiel 'Compétences').",
"allOf": [
{
"$ref": "#/components/schemas/Competence"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Cette propriété est forcément à la valeur 'COMPETENCE-DETAILLEE'."
}
}
}
]
},
"Competence": {
"type": "object",
"description": "Compétence (en provenance du référentiel 'Compétences'). Cette entité se décompose en quatre catégories : les macro-savoir-faires, les macro-savoir-êtres professionnels, les compétences détaillées et enfin les savoirs.",
"properties": {
"code": {
"type": "string",
"description": "Code unique de la compétence.",
"example": "100007"
},
"libelle": {
"type": "string",
"description": "Libellé de la compétence.",
"example": "Techniques de soudage"
},
"type": {
"type": "string",
"description": "Le type de l'objet. Il y a quatre valeurs possibles :\n<ul>\n<li>'MACRO-SAVOIR-FAIRE' pour un macro-savoir-faire</li>\n<li>'MACRO-SAVOIR-ETRE-PROFESSIONNEL' pour un macro-savoir-être professionnel</li>\n<li>'COMPETENCE-DETAILLEE' pour un compétence détaillée</li>\n<li>'SAVOIR' pour un savoir</li>\n</ul>\n"
}
},
"discriminator": {
"propertyName": "type"
}
},
"MacroSavoirEtreProfessionnel": {
"type": "object",
"description": "Macro savoir-être professionnel (en provenance du référentiel 'Compétences').",
"allOf": [
{
"$ref": "#/components/schemas/Competence"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Cette propriété est forcément à la valeur 'MACRO-SAVOIR-ETRE-PROFESSIONNEL'."
}
}
}
]
},
"MacroSavoirFaire": {
"type": "object",
"description": "Macro savoir-faire (en provenance du référentiel 'Compétences').",
"allOf": [
{
"$ref": "#/components/schemas/Competence"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Cette propriété est forcément à la valeur 'MACRO-SAVOIR-FAIRE'."
}
}
}
]
},
"Savoir": {
"type": "object",
"description": "Savoir (en provenance du référentiel 'Compétences').",
"properties": {
"code": {
"type": "string",
"description": "Code unique de la compétence.",
"example": "100007"
},
"libelle": {
"type": "string",
"description": "Libellé de la compétence.",
"example": "Techniques de soudage"
},
"type": {
"type": "string",
"description": "Cette propriété est forcément à la valeur 'SAVOIR'."
}
}
},
"Enjeu": {
"type": "object",
"description": "Enjeu (en provenance du référentiel 'Compétences')",
"properties": {
"code": {
"type": "string",
"description": "Code unique de l'enjeu.",
"example": "3"
},
"libelle": {
"type": "string",
"description": "Libellé de l'enjeu.",
"example": "Animation"
}
}
},
"GroupeSavoirs": {
"type": "object",
"description": "Groupe de savoirs",
"properties": {
"categorieSavoirs": {
"$ref": "#/components/schemas/CategorieSavoirs"
},
"savoirs": {
"type": "array",
"description": "Savoirs rattachés",
"items": {
"$ref": "#/components/schemas/Savoir"
}
}
}
},
"CategorieSavoirs": {
"type": "object",
"description": "Catégorie de savoir (en provenance du référentiel 'Compétences')",
"properties": {
"code": {
"type": "string",
"description": "Code unique de la catégorie de savoirs.",
"example": "30"
},
"libelle": {
"type": "string",
"description": "Libellé de la catégorie de savoirs.",
"example": "Véhicules"
}
}
},
"Metier": {
"type": "object",
"description": "Métier (depuis le référentiel 'Métiers')",
"properties": {
"code": {
"type": "string",
"description": "Code unique du métier.",
"example": "A1201"
},
"libelle": {
"type": "string",
"description": "Libellé unique du métier.",
"example": "Bûcheronnage et élagage"
}
}
},
"VersionRome": {
"title": "VersionRome",
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "La version actuelle.",
"example": "19"
},
"lastModifiedDate": {
"type": "string",
"description": "La date de dernière modification de la version.",
"format": "date-time"
}
},
"description": "Version du rome"
}
}
}
}

View file

@ -0,0 +1,358 @@
{
"openapi": "3.0.1",
"info": {
"version": "1",
"title": "ROME V4.0 - Situations de travail",
"description": " Référentiel des environnements dans lequel une personne exerce son travail.<br/> Le contexte de travail englobe les différents éléments physiques, organisationnels et sociaux qui influencent les tâches, les activités et les interactions professionnelles. Il permet de mieux caractériser lemploi à pourvoir (avantages et contraintes du poste proposé) et réduire les « échecs » de recrutement liés aux conditions de travail.<br/> Le référentiel des contextes de travail se décline en 6 rubriques : Conditions de travail et risques professionnels, Horaires et durées de travail, Lieux et déplacements, Statut d'emploi, Publics spécifiques et Types de structure daccueil. \r\n\r\n**Scopes** : `api_rome-contextes-travailv1`,`nomenclatureRome`\r\n\r\n**Royaume** : `/partenaire`"
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-contextes-travail"
}
],
"paths": {
"/v1/situations-travail/contexte-travail": {
"get": {
"tags": [
"Contexte de travail"
],
"summary": "Lister les contextes de travail",
"description": "Permet de lister les contextes de travail.\r\n\r\nSi vous renseignez une ou plusieurs valeurs dans \"champs\", alors vous obtiendrez le résultat pour ces champs.\r\n\r\nSi vous ne renseignez aucune valeur dans \"champs\", alors vous obtiendrez le résultat par défaut. (Sélectionner l'exemple \"***Par défaut***\" pour voir les données retournées)",
"operationId": "listerContextesTravail",
"parameters": [
{
"name": "champs",
"in": "query",
"description": "Sélecteur de champs : il est possible de paramétrer le retour de la requête en définissant les champs souhaités (liste exhaustive des champs possibles : `Allowed values`). <br/> Vous pouvez vous aider des exemples de réponse pour identifier les champs que vous voulez récupérer.",
"required": false,
"schema": {
"type": "string",
"enum": [
"categorie",
"code",
"libelle"
],
"example": "libelle,code,categorie"
}
},
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer laUXEy7zv0tls9FTzpzDr7WsJxo"
}
}
],
"responses": {
"200": {
"description": "Retourne la liste des contextes de travail.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContexteTravail"
}
},
"examples": {
"Retour complet": {
"value": [
{
"libelle": "En club sportif",
"code": "403091",
"categorie": "CONDITIONS_TRAVAIL"
}
]
},
"Retour par défaut": {
"value": [
{
"libelle": "En club sportif",
"code": "403091",
"categorie": "CONDITIONS_TRAVAIL"
}
]
}
}
}
}
},
"400": {
"description": "Bad request : peut-être causé par un sélecteur de champs incorrect.",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"message": "L'attribut 'monAttribut' n'est pas selectionnable",
"codeMetier": "SELECTOR",
"service": "/v1/mon_uri",
"code": 400
}
}
}
}
}
}
},
"security": [],
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-contextes-travail",
"description": "PROD"
}
]
}
},
"/v1/situations-travail/contexte-travail/{code}": {
"get": {
"tags": [
"Contexte de travail"
],
"summary": "Lire un contexte de travail",
"description": "Permet de lire un contexte de travail depuis son code.\r\n\r\nSi vous renseignez une ou plusieurs valeurs dans \"champs\", alors vous obtiendrez le résultat pour ces champs.\r\n\r\nSi vous ne renseignez aucune valeur dans \"champs\", alors vous obtiendrez le résultat par défaut. (Sélectionner l'exemple \"***Par défaut***\" pour voir les données retournées)",
"operationId": "lireContexteTravail",
"parameters": [
{
"name": "champs",
"in": "query",
"description": "Sélecteur de champs : il est possible de paramétrer le retour de la requête en définissant les champs souhaités (liste exhaustive des champs possibles : `Allowed values`). <br/> Vous pouvez vous aider des exemples de réponse pour identifier les champs que vous voulez récupérer.",
"required": false,
"schema": {
"type": "string",
"enum": [
"categorie",
"code",
"libelle"
],
"example": "libelle,code,categorie"
}
},
{
"name": "code",
"in": "path",
"description": "Code du contexte de travail.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer laUXEy7zv0tls9FTzpzDr7WsJxo"
}
}
],
"responses": {
"200": {
"description": "Retourne les données pour un contexte de travail renseigné.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ContexteTravail"
},
"examples": {
"Retour complet": {
"value": {
"libelle": "En club sportif",
"code": "403091",
"categorie": "CONDITIONS_TRAVAIL"
}
},
"Retour par défaut": {
"value": {
"libelle": "En club sportif",
"code": "403091",
"categorie": "CONDITIONS_TRAVAIL"
}
}
}
}
}
},
"400": {
"description": "Bad request : peut-être causé par un sélecteur de champs incorrect.",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"message": "L'attribut 'monAttribut' n'est pas selectionnable",
"codeMetier": "SELECTOR",
"service": "/v1/mon_uri",
"code": 400
}
}
}
}
}
},
"404": {
"description": "Not found.",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"service": "/v1/mon_uri",
"message": "Code inexistant: monCode",
"code": 404
}
}
}
}
}
}
},
"security": [],
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-contextes-travail",
"description": "PROD"
}
]
}
},
"/v1/situations-travail/version": {
"get": {
"tags": [
"Versionning du ROME"
],
"summary": "Récupérer la version actuelle du ROME",
"description": "Récupère la version actuelle du ROME.",
"operationId": "lireVersion",
"parameters": [
{
"name": "champs",
"in": "query",
"description": "Sélecteur de champs : il est possible de paramétrer le retour de la requête en définissant les champs souhaités (liste exhaustive des champs possibles : `Allowed values`). <br/> Vous pouvez vous aider des exemples de réponse pour identifier les champs que vous voulez récupérer.",
"required": false,
"schema": {
"type": "string",
"enum": [
"version",
"lastModifiedDate",
"version,lastModifiedDate"
],
"example": "version,lastModifiedDate"
}
},
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer laUXEy7zv0tls9FTzpzDr7WsJxo"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionRome"
},
"examples": {
"Retour complet": {
"value": {
"version": "19",
"lastModifiedDate": "2025-05-22T12:04:43.281Z"
}
},
"Retour par défaut": {
"value": {
"version": "19",
"lastModifiedDate": "2025-05-22T12:04:43.281Z"
}
}
}
}
}
},
"400": {
"description": "Bad request : peut-être causé par un sélecteur de champs incorrect",
"content": {
"application/json": {
"examples": {
"default": {
"value": {
"message": "L'attribut 'monAttribut' n'est pas selectionnable",
"codeMetier": "SELECTOR",
"service": "/v1/mon_uri",
"code": 400
}
}
}
}
}
}
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/rome-contextes-travail",
"description": "PROD"
}
]
}
}
},
"components": {
"schemas": {
"ContexteTravail": {
"type": "object",
"description": "Contexte de travail",
"properties": {
"categorie": {
"type": "string",
"enum": [
"CONDITIONS_TRAVAIL",
"TYPE_BENEFICIAIRE",
"LIEU_ET_DEPLACEMENT",
"HORAIRE_ET_DUREE_TRAVAIL",
"TYPE_STRUCTURE_ACCUEIL",
"STATUT_EMPLOI"
],
"description": "Catégorie de contexte de travail.",
"example": "CONDITIONS_TRAVAIL"
},
"code": {
"type": "string",
"description": "Code unique du contexte de travail.",
"example": "403091"
},
"libelle": {
"type": "string",
"description": "Libellé du contexte de travail.",
"example": "En club sportif"
}
}
},
"VersionRome": {
"title": "VersionRome",
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "La version actuelle.",
"example": "19"
},
"lastModifiedDate": {
"type": "string",
"description": "La date de dernière modification de la version.",
"format": "date-time"
}
},
"description": "Version du rome"
}
}
}
}

811
docs/api/Romeo.json Normal file
View file

@ -0,0 +1,811 @@
{
"openapi": "3.0.3",
"info": {
"version": "2.0",
"title": "Romeo",
"description": "Utilisez lIA afin de vous aider à rapprocher un texte libre à une appellation ou à un savoir / savoir-faire du Répertoire Opérationnel des Métiers et des Emplois (ROME).\r\n\r\n***Scope :*** `api_romeov2`\r\n\r\n***Royaume :*** `/partenaire`"
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/romeo/v2",
"description": "PROD"
}
],
"paths": {
"/performancePredictionCompetences": {
"post": {
"tags": [
"Competence"
],
"summary": "Renvoyez-nous votre feedback pour permettre l'amélioration du modèle IA",
"description": "Cette ressource vous permet de nous envoyer votre feedback par rapport à la prédiction faite par l'IA. Cette information est importante pour mesurer la performance du modèle IA, pour améliorer la qualité des prédictions et délivrer un service de qualité.",
"operationId": "Renvoyez-nous votre feedback pour permettre l'amélioration du modèle IA",
"requestBody": {
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/PerformanceCompetenceDTO"
},
"examples": {
"Example 1": {
"value": {
"performanceCompetence": [
{
"uuidInference": "b42110bb-3d55-4e92-9930-133c5d92a555",
"bonnePrediction": true,
"codeCompetence": "101846"
}
],
"optionsSupervision": {
"nomAppelant": "francetravail"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "En cas de succès à l'appel API, cette dernière renvoie un code http : 200 OK ",
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/ExceptionPerformanceCompetence"
},
"examples": {
"Example 1": {
"value": {
"uuidInference": "b42110bb-3d55-4e92-9930-133c5d92a555"
}
}
}
}
}
},
"400": {
"description": "En cas de réponse 400, veuillez vous référer à l'erreur mentionnée dans l'objet message.",
"content": {
"application/json": {
"schema": {
"type": "object"
},
"examples": {
"Example 1": {
"value": {
"classeOrigine": "fr.pe.empl.service.so072.exceptions.RomeoBadRequestException",
"codeErreur": "J072000G",
"codeHttp": 400,
"message": "Le champ optionsSupervision.nomAppelant est obligatoire"
}
}
}
}
}
},
"500": {
"description": "Erreur serveur."
}
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/romeo/v2",
"description": ""
}
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer FFvSPYX5oebdxJgVYUzRU219eNE"
}
}
]
}
},
"/performancePredictionMetiers": {
"post": {
"tags": [
"Appellation"
],
"summary": "Renvoyez-nous votre feedback pour permettre l'amélioration du modèle IA",
"description": "Cette ressource vous permet de nous envoyer votre feedback par rapport à la prédiction faite par l'IA. Cette information est importante pour mesurer la performance du modèle IA, pour améliorer la qualité des prédictions et délivrer un service de qualité.",
"operationId": "Renvoyez-nous votre feedback pour permettre l amélioration du modèle IA",
"requestBody": {
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/PerformanceAppellationDTO"
},
"examples": {
"Example 1": {
"value": {
"performanceAppellation": [
{
"uuidInference": "93f7f573-da71-4382-94c7-e21db9c9a30f",
"bonnePrediction": true,
"codeAppellation": "11564"
}
],
"optionsSupervision": {
"nomAppelant": "francetravail"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/ExceptionPerformanceAppellation"
},
"examples": {
"Example 1": {
"value": {
"uuidInference": "b42110bb-3d55-4e92-9930-133c5d92a555"
}
}
}
}
}
},
"400": {
"description": "En cas de réponse 400, veuillez vous référer à l'erreur mentionnée dans l'objet message.",
"content": {
"application/json": {
"schema": {
"type": "object"
},
"examples": {
"Example 1": {
"value": {
"classeOrigine": "fr.pe.empl.service.so072.exceptions.RomeoBadRequestException",
"codeErreur": "J072000G",
"codeHttp": 400,
"message": "Le champ optionsSupervision.nomAppelant est obligatoire"
}
}
}
}
}
},
"500": {
"description": "Erreur serveur."
}
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/romeo/v2",
"description": ""
}
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer FFvSPYX5oebdxJgVYUzRU219eNE"
}
}
]
}
},
"/predictionCompetences": {
"post": {
"tags": [
"Competence"
],
"summary": "Prédiction des savoirs / savoir-faire du ROME",
"description": "Obtenez le savoir / savoir-faire du ROME le plus proche à partir dun texte libre renseigné.\r\n\r\n\r\n\r\nCas d'usage possibles :\r\n\r\n- Rapprocher une compétence dun CV à des savoirs / savoir-faire du ROME 4.0\r\n\r\n- Rapprocher une compétence dun référentiel extérieure à des savoirs / savoir-faire du ROME 4.0\r\n\r\n\r\n\r\nLes bonnes pratiques pour utiliser /PredictionCompetences\r\n\r\nSi votre texte contient plusieurs compétences libres, /PredictionCompetences ne pourra pas les séparer pour ensuite les associer au ROME de façon individuelle. Il est préférable de fournir un texte contenant une seule compétence libre.\r\n\r\nUtiliser /performancePredictionCompetences pour nous aider à améliorer notre modèle IA (cf. ressource ci-dessous : /performancePredictionCompetences - Renvoyez-nous votre feedback pour permettre l'amélioration du modèle IA).",
"operationId": "Prédiction des savoirs / savoir-faire du ROME",
"requestBody": {
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/CompetenceDTO"
},
"examples": {
"Example 1": {
"value": {
"competences": [
{
"intitule": "faire du pain",
"identifiant": "123456"
}
],
"options": {
"nomAppelant": "francetravail",
"nbResultats": 2,
"seuilScorePrediction": 0.7
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json; charset=utf-8": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PredictionCompetence"
}
},
"examples": {
"Example 1": {
"value": [
{
"uuidInference": "93f7f573-da71-4382-94c7-e21db9c9a30f",
"identifiant": "123456",
"intitule": "faire du pain",
"competencesRome": [
{
"libelleCompetence": "Fabriquer des produits de boulangerie",
"codeCompetence": "119357",
"typeCompetence": "COMPETENCE-DETAILLEE",
"scorePrediction": 0.8
}
]
}
]
}
}
}
}
},
"400": {
"description": "En cas de réponse 400, veuillez vous référer à l'erreur mentionnée dans l'objet message.",
"content": {
"application/json": {
"schema": {
"type": "object"
},
"examples": {
"Example 1": {
"value": {
"classeOrigine": "fr.pe.empl.service.so072.exceptions.RomeoBadRequestException",
"codeErreur": "J072000G",
"codeHttp": 400,
"message": "Le champ optionsSupervision.nomAppelant est obligatoire"
}
}
}
}
}
},
"500": {
"description": "Erreur serveur."
}
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/romeo/v2",
"description": ""
}
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer FFvSPYX5oebdxJgVYUzRU219eNE"
}
}
]
}
},
"/predictionMetiers": {
"post": {
"tags": [
"Appellation"
],
"summary": "Prédiction des appellations métier du ROME",
"description": "Obtenez lappellation métier du ROME la plus proche à partir dun texte libre renseigné.\r\n\r\n\r\n\r\nCas d'usage possibles\r\n- Rapprocher un intitulé doffre demploi à des appellations métier du ROME 4.0\r\n- Rapprocher un intitulé dexpérience dun CV à des appellations métier du ROME 4.0\r\n\r\nLes bonnes pratiques pour utiliser /predictionMetiers\r\n- Un texte court augmente la pertinence des prédictions (évitez les textes longs).\r\n- Si le texte à rapprocher du ROME est peu explicite, précisez le champ \"contexte\" pour faciliter la prédiction de /PredictionMetiers (par exemple, lintitulé \"conseiller\" peut se décliner en plusieurs appellations métier telles que \"conseiller en immobilier\" ou \"conseiller à l'emploi« , en précisant le champ contexte vous vous assurez dune prédiction plus cohérente).\r\n- Il n'est pas possible de prédire plus de 20 intitulés par appel.\r\nUtiliser /performancePredictionMetiers pour nous aider à améliorer notre modèle IA.",
"operationId": "Prédiction des appellations métier du ROME",
"requestBody": {
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/AppellationDTO"
},
"examples": {
"Example 1": {
"value": {
"appellations": [
{
"intitule": "Boucher",
"identifiant": "123456",
"contexte": "Commerce de détail de viandes et de produits à base de viande en magasin spécialisé"
}
],
"options": {
"nomAppelant": "francetravail",
"nbResultats": 2,
"seuilScorePrediction": 0.7
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "En cas de succès à l'appel API, cette dernière renvoie un code http : 200 OK ",
"content": {
"application/json; charset=utf-8": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PredictionAppellation"
}
},
"examples": {
"Example 1": {
"value": [
{
"metiersRome": [
{
"libelleAppellation": "Boucher / Bouchère",
"codeAppellation": "11564",
"libelleRome": "Boucherie",
"codeRome": "D1101",
"scorePrediction": 0.75
}
],
"uuidInference": "bca57776-9e3f-4c72-b939-8a48cd87ff6e",
"identifiant": "123456",
"intitule": "boucher",
"contexte": "Commerce de détail de viandes et de produits à base de viande en magasin spécialisé"
}
]
}
}
}
}
},
"400": {
"description": "En cas de réponse 400, veuillez vous référer à l'erreur mentionnée dans l'objet message.",
"content": {
"application/json": {
"schema": {
"type": "object"
},
"examples": {
"Example 1": {
"value": {
"classeOrigine": "fr.pe.empl.service.so072.exceptions.RomeoBadRequestException",
"codeErreur": "J072000G",
"codeHttp": 400,
"message": "Le champ optionsSupervision.nomAppelant est obligatoire"
}
}
}
}
}
},
"500": {
"description": "Erreur serveur."
}
},
"servers": [
{
"url": "https://api.francetravail.io/partenaire/romeo/v2",
"description": ""
}
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"required": true,
"schema": {
"type": "string",
"default": "Bearer FFvSPYX5oebdxJgVYUzRU219eNE"
}
}
]
}
}
},
"tags": [
{
"name": "Appellation",
"description": "Prédictions sur les appellations"
},
{
"name": "Competence",
"description": "Prédictions sur les compétences"
}
],
"components": {
"schemas": {
"PerformanceCompetenceDTO": {
"type": "object",
"properties": {
"performanceCompetence": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PerformanceCompetence"
}
},
"optionsSupervision": {
"$ref": "#/components/schemas/OptionsSupervision"
}
}
},
"PerformanceCompetence": {
"type": "object",
"properties": {
"uuidInference": {
"type": "string",
"description": "Identifiant unique de l'inférence renvoyé par l'API.",
"example": "b42110bb-3d55-4e92-9930-133c5d92a555"
},
"bonnePrediction": {
"type": "boolean",
"enum": [
true,
false
],
"description": "- True : la prédiction est correcte\r\n- False : la prédiction est fausse "
},
"codeCompetence": {
"type": "string",
"description": "- Si \"bonneprediction\" est true : veuillez renseigner le code OGR du savoir / savoir-faire prédit par l'IA qui a été sélectionné\r\n- Si \"bonneprediction\" est false : veuillez renseigner le code OGR du savoir / savoir-faire que vous auriez souhaité avoir",
"example": "101846"
}
},
"required": [
"uuidInference",
"bonnePrediction"
]
},
"OptionsSupervision": {
"type": "object",
"properties": {
"nomAppelant": {
"type": "string",
"description": "Nom de l'application partenaire ou du partenaire appelant la ressource",
"example": "francetravail"
}
},
"required": [
"nomAppelant"
]
},
"ExceptionPerformanceCompetence": {
"type": "object",
"properties": {
"uuidInference": {
"type": "string",
"description": "identifiant unique de l'inférence, utile pour l'appel à la ressource performancePredicitonCompetences",
"example": "b42110bb-3d55-4e92-9930-133c5d92a555"
}
},
"required": [
"uuidInference"
]
},
"PerformanceAppellationDTO": {
"type": "object",
"properties": {
"performanceAppellation": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PerformanceAppellation"
}
},
"optionsSupervision": {
"$ref": "#/components/schemas/OptionsSupervision"
}
}
},
"PerformanceAppellation": {
"type": "object",
"properties": {
"uuidInference": {
"type": "string",
"description": "Identifiant unique de l'inférence renvoyé par l'API.",
"example": "93f7f573-da71-4382-94c7-e21db9c9a30f"
},
"bonnePrediction": {
"type": "boolean",
"enum": [
true,
false
],
"description": "- True : la prédiction est correcte\r\n- False : la prédiction est fausse "
},
"codeAppellation": {
"type": "string",
"description": "- Si \"bonneprediction\" est true : veuillez renseigner le code OGR de l'appellation métier prédite par l'IA qui a été sélectionnée\r\n- Si \"bonneprediction\" est false : veuillez renseigner le code OGR de l'appellation métier que vous auriez souhaité avoir",
"example": "11564"
}
},
"required": [
"uuidInference",
"bonnePrediction"
],
"x-examples": {
"Example 1": {
"uuidInference": "string",
"bonnePrediction": true,
"codeAppellation": "string"
}
}
},
"ExceptionPerformanceAppellation": {
"type": "object",
"properties": {
"uuidInference": {
"type": "string",
"example": "b42110bb-3d55-4e92-9930-133c5d92a555"
}
}
},
"CompetenceDTO": {
"type": "object",
"properties": {
"competences": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Competence"
}
},
"options": {
"$ref": "#/components/schemas/Options"
}
}
},
"Competence": {
"type": "object",
"properties": {
"intitule": {
"type": "string",
"description": "Texte libre pour lequel on souhaite prédire un savoir / savoir-faire du ROME (par exemple une compétence d'un CV)\r\n",
"example": "faire du pain"
},
"identifiant": {
"type": "string",
"description": "Identifiant fonctionnel unique, clé permettant d'identifier l'intitulé à prédire dans la liste fournie en entrée du service.\r\n\r\nCet identifiant est à la main du service appelant, il permet de rapprocher l'intitulé envoyé avec la prédiction retournée.",
"example": "123456"
}
},
"required": [
"intitule",
"identifiant"
]
},
"Options": {
"type": "object",
"properties": {
"nomAppelant": {
"type": "string",
"description": "Nom de l'application partenaire ou du partenaire appelant la ressource",
"example": "francetravail"
},
"nbResultats": {
"type": "integer",
"description": "nombre de prédictions à retourner\r\n\r\n- entier compris entre 1 et 25\r\n\r\n- par défaut, retourne 5 résultats",
"format": "int32",
"example": 2
},
"seuilScorePrediction": {
"type": "number",
"description": "Niveau de confiance de l'IA accompagnant chaque prédiction. Plus le score est proche de 1, plus lIA est confiante dans sa prédiction. \r\n\r\nSi un seuil est défini, il prévaut sur le nombre de résultats qui a été renseigné",
"format": "float",
"example": 0.7
}
},
"required": [
"nomAppelant"
]
},
"PredictionCompetence": {
"type": "object",
"properties": {
"uuidInference": {
"type": "string",
"description": "identifiant unique de l'inférence, utile pour l'appel à la ressource performancePredicitonCompetences",
"example": "93f7f573-da71-4382-94c7-e21db9c9a30f"
},
"identifiant": {
"type": "string",
"description": "Identifiant fonctionnel unique, clé permettant d'identifier l'intitulé à prédire dans la liste fournie en entrée du service.\r\n\r\nCet identifiant est à la main du service appelant, il permet de rapprocher l'intitulé envoyé avec la prédiction retournée.",
"example": "123456"
},
"intitule": {
"type": "string",
"description": "Texte libre renseigné lors de l'appel à l'API et pour lequel on souhaite prédire un savoir / savoir-faire du ROME",
"example": "faire du pain"
},
"competencesRome": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CompetenceRome"
}
}
},
"required": [
"uuidInference",
"identifiant",
"intitule"
],
"x-examples": {}
},
"CompetenceRome": {
"type": "object",
"properties": {
"libelleCompetence": {
"type": "string",
"description": "Libellé du savoir / savoir-faire du ROME prédit",
"example": "Fabriquer des produits de boulangerie"
},
"codeCompetence": {
"type": "string",
"description": "Code du savoir / savoir-faire du ROME prédit",
"example": "119357"
},
"typeCompetence": {
"type": "string",
"description": "Type du savoir / savoir-faire du ROME prédit (savoir, compétence, macro-compétence)",
"example": "COMPETENCE-DETAILLEE"
},
"scorePrediction": {
"type": "number",
"description": "Score de confiance de l'IA suite à sa prédiction (plus on est proche de 1 plus l'IA est confiante)",
"format": "float",
"example": 0.8
}
},
"required": [
"libelleCompetence",
"codeCompetence",
"typeCompetence",
"scorePrediction"
],
"x-examples": {
"Example 1": {
"libelleCompetence": "Utiliser les réseaux sociaux",
"codeCompetence": "300425",
"typeCompetence": "MACRO-SAVOIR-FAIRE",
"scorePrediction": 0.8682828
}
}
},
"AppellationDTO": {
"type": "object",
"properties": {
"appellations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Appellation"
}
},
"options": {
"$ref": "#/components/schemas/Options"
}
}
},
"Appellation": {
"type": "object",
"properties": {
"intitule": {
"type": "string",
"description": "Texte libre pour lequel on souhaite prédire un métier (par exemple l'intitulé d'une offre d'emploi). Pour rappel, il n'est pas possible de prédire plus de 20 intitulés par appel.",
"example": "Boucher"
},
"identifiant": {
"type": "string",
"description": "Identifiant fonctionnel unique, clé permettant d'identifier l'intitulé à prédire dans la liste fournie en entrée du service.\r\n\r\nCet identifiant est à la main du service appelant, il permet de rapprocher l'intitulé envoyé avec la prédiction retournée.",
"example": "123456"
},
"contexte": {
"type": "string",
"description": "aide l'IA à trouver la prédiction la plus pertinente en précisant le secteur dactivité. Ce contexte peut être décliné sous 3 formes :\r\n\r\n- un libellé NAF (INSEE)\r\n- un code SIRET (nous récupérons le libellé NAF associé à ce code)\r\n- un texte libre\r\n\r\nSi le texte à rapprocher du ROME est peu explicite, précisez le champ \"contexte\" pour faciliter la prédiction de Text2App (par exemple, lintitulé \"conseiller\" peut se décliner en plusieurs appellations métier telles que \"conseiller en immobilier\" ou \"conseiller à l'emploi« , en précisant le champ contexte vous vous assurez dune prédiction plus cohérente).",
"example": "Commerce de détail de viandes et de produits à base de viande en magasin spécialisé"
}
},
"required": [
"intitule",
"identifiant"
],
"x-examples": {
"Example 1": "Body\n{    \"appellations\": [        {            \"intitule\": \"boucher\",            \"contexte\": \"grande surface\",            \"identifiant\": \"123456\"        }    ],    \"options\": {        \"nomAppelant\": \"Application n°1\",        \"nbResultats\": 1,        \"seuilScorePrediction\": \"\"    } }"
}
},
"PredictionAppellation": {
"type": "object",
"properties": {
"metiersRome": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AppellationRome"
}
},
"uuidInference": {
"type": "string",
"description": "Identifiant unique de l'inférence, utile pour l'appel à la ressource performancePredicitonMetiers",
"example": "bca57776-9e3f-4c72-b939-8a48cd87ff6e"
},
"identifiant": {
"type": "string",
"description": "Identifiant fonctionnel unique, clé permettant d'identifier l'intitulé à prédire dans la liste fournie en entrée du service. Cet identifiant est à la main du service appelant, il permet de rapprocher l'intitulé envoyé avec la prédiction retournée.",
"example": "123456"
},
"intitule": {
"type": "string",
"description": "Texte libre renseigné lors de l'appel à l'API et pour lequel on souhaite prédire un métier du ROME (par exemple l'intitulé d'une offre d'emploi).\nPour rappel, il n'est pas possible de prédire plus de 20 intitulés par appel.",
"example": "boucher"
},
"contexte": {
"type": "string",
"description": "Contexte renseigné lors de l'appel à l'API afin de prédire un métier du ROME",
"example": "Commerce de détail de viandes et de produits à base de viande en magasin spécialisé"
}
},
"required": [
"uuidInference",
"identifiant",
"intitule",
"contexte"
]
},
"AppellationRome": {
"type": "object",
"properties": {
"libelleAppellation": {
"type": "string",
"description": "Libellé de l'appellation métier du ROME prédite",
"example": "Boucher / Bouchère"
},
"codeAppellation": {
"type": "string",
"description": "Code de l'appellation métier ROME prédite",
"example": "11564"
},
"libelleRome": {
"type": "string",
"description": "Libellé de la fiche ROME parente",
"example": "Boucherie"
},
"codeRome": {
"type": "string",
"description": "Code ROME de la fiche parente",
"example": "D1101"
},
"scorePrediction": {
"type": "number",
"description": "Score de confiance de l'IA suite à sa prédiction (plus on est proche de 1 plus l'IA est confiante)",
"format": "float",
"example": 0.75
}
},
"required": [
"libelleAppellation",
"codeAppellation",
"libelleRome",
"codeRome",
"scorePrediction"
]
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff