feat(corrections): aligner schéma rapport DeepSeek — renommages + feedback_court

This commit is contained in:
Hermann_Kitio 2026-04-20 04:28:06 +03:00
parent c65a2a0157
commit f67bd2dc95
2 changed files with 50 additions and 17 deletions

View file

@ -10,10 +10,11 @@ export interface EECritere {
export interface EERapport {
score: number
nclc: number
feedback_court: string
criteres: EECritere[]
erreurs: string[]
production_modele: string
suggestions_idees: string[]
modele: string
idees: string[]
exercices: string[]
}
@ -26,10 +27,11 @@ export interface EOCritere {
export interface EORapport {
score: number
nclc: number
feedback_court: string
criteres: EOCritere[]
erreurs: string[]
production_modele: string
suggestions_idees: string[]
modele: string
idees: string[]
exercices: string[]
}
@ -44,6 +46,7 @@ Tu dois retourner un JSON strict avec cette structure exacte :
{
"score": <number 0-20>,
"nclc": <number 4-12>,
"feedback_court": "<2 à 3 lignes de feedback global, orientées action>",
"criteres": [
{ "nom": "Cohérence et cohésion", "score": <number 0-5>, "commentaire": "<string>" },
{ "nom": "Lexique", "score": <number 0-5>, "commentaire": "<string>" },
@ -51,14 +54,15 @@ Tu dois retourner un JSON strict avec cette structure exacte :
{ "nom": "Pertinence", "score": <number 0-5>, "commentaire": "<string>" }
],
"erreurs": ["<erreur 1>", "<erreur 2>", ...],
"production_modele": "<texte modèle corrigé>",
"suggestions_idees": ["<idée 1>", "<idée 2>", ...],
"modele": "<texte modèle corrigé>",
"idees": ["<idée 1>", "<idée 2>", ...],
"exercices": ["<exercice recommandé 1>", "<exercice recommandé 2>", ...]
}
Règles :
- score est la note globale sur 20
- nclc est le niveau NCLC estimé (entre 4 et 12)
- feedback_court est un résumé de 2 à 3 lignes, toujours renseigné (visible pour tous les plans)
- Chaque critère a un score de 0 à 5
- Retourne UNIQUEMENT le JSON, sans texte avant ni après`
@ -104,6 +108,9 @@ export async function correctEE(contenu: string, tache: string): Promise<EERappo
if (rapport.nclc < 4 || rapport.nclc > 12) {
throw new Error(`NCLC invalide: ${rapport.nclc} (attendu 4-12)`)
}
if (typeof rapport.feedback_court !== 'string' || rapport.feedback_court.trim().length === 0) {
throw new Error('feedback_court invalide: attendu une chaîne non vide')
}
return rapport
}
@ -119,6 +126,7 @@ Tu dois retourner un JSON strict avec cette structure exacte :
{
"score": <number 0-20>,
"nclc": <number 4-12>,
"feedback_court": "<2 à 3 lignes de feedback global, orientées action>",
"criteres": [
{ "nom": "Cohérence et cohésion", "score": <number 0-5>, "commentaire": "<string>" },
{ "nom": "Lexique", "score": <number 0-5>, "commentaire": "<string>" },
@ -126,14 +134,15 @@ Tu dois retourner un JSON strict avec cette structure exacte :
{ "nom": "Phonologie", "score": 0, "commentaire": "Non évalué sur transcription textuelle." }
],
"erreurs": ["<erreur 1>", "<erreur 2>", ...],
"production_modele": "<version corrigée de la transcription>",
"suggestions_idees": ["<idée 1>", "<idée 2>", ...],
"modele": "<version corrigée de la transcription>",
"idees": ["<idée 1>", "<idée 2>", ...],
"exercices": ["<exercice recommandé 1>", "<exercice recommandé 2>", ...]
}
Règles :
- score est la note globale sur 20 (basée uniquement sur les 3 critères évalués)
- nclc est le niveau NCLC estimé (entre 4 et 12)
- feedback_court est un résumé de 2 à 3 lignes, toujours renseigné (visible pour tous les plans)
- Phonologie est toujours à 0 avec le commentaire "Non évalué sur transcription textuelle."
- Retourne UNIQUEMENT le JSON, sans texte avant ni après`
@ -179,6 +188,9 @@ export async function correctEO(transcript: string, tache: string): Promise<EORa
if (rapport.nclc < 4 || rapport.nclc > 12) {
throw new Error(`NCLC invalide: ${rapport.nclc} (attendu 4-12)`)
}
if (typeof rapport.feedback_court !== 'string' || rapport.feedback_court.trim().length === 0) {
throw new Error('feedback_court invalide: attendu une chaîne non vide')
}
return rapport
}