Feature #55
closedFeature #22: Implement 'Générer un plan d’action' button with actionable checklist for job offers
[Backend] Endpoint LLM de génération du plan d'action
0%
Description
## Objectif
Exposer un endpoint qui génère, via LLM, un plan d'action personnalisé pour une offre donnée (à partir des métadonnées entreprise/rôle/stack et de l'intelligence existante), et retourne le contrat canonique consommé par le front.
## Périmètre
- Route API GetYourJob sous `GetYourJob/src/app/api/` (use-case dans `application/`, adaptateur LLM dans `infrastructure/`). Possibilité de déléguer à MatchingAgent (`MatchingAgent/`, FastAPI) si pertinent — choix d'implémentation non bloquant, mais le contrat de réponse reste celui ci-dessous.
- Prompt LLM produisant des items actionnables (action sur une ligne + explication courte) + un niveau de confiance global, contextualisé par les données de l'offre (ex. ESN → manager > RH).
- Persistance du plan généré via le repository de la sous-tâche [Backend] Modèle & persistance.
- Gestion d'erreur / fallback si l'appel LLM échoue.
## Contrat de réponse (canonique)
```
{
items: { action: string; explanation: string }[],
confidence: "Élevée" | "Moyenne" | "Faible"
}
```
## Dépendances
- [Backend] Modèle & persistance du plan d'action.
## Acceptance criteria
- [ ] Un endpoint accepte un identifiant d'offre et retourne un plan d'action au format canonique (items action+explanation + confidence).
- [ ] Le contenu est généré par LLM et contextualisé par les métadonnées de l'offre/entreprise.
- [ ] Le `confidence` retourné appartient à l'ensemble { Élevée, Moyenne, Faible }.
- [ ] Le plan généré est persisté pour l'offre sauvegardée de l'utilisateur.
- [ ] En cas d'échec LLM, l'endpoint renvoie une erreur exploitable (pas de crash silencieux).
- [ ] Tests couvrant le mapping de réponse et le chemin d'erreur.
RA Updated by Redmine Admin about 2 months ago
- Status changed from Submitted to In development
Livré dans l'épopée #22 (endpoint LLM de génération, réutilise le provider Mistral existant) — PR #236. Synchronisé avec le parent (In development, 🏁 done dev).
RA Updated by Redmine Admin about 2 months ago
RA Updated by Redmine Admin about 2 months ago
- Status changed from Preprod to Shipped
Livré en production avec l'épopée #22. Preprod → Shipped.