diff --git a/src/features/simulations/components/SujetDisplay.tsx b/src/features/simulations/components/SujetDisplay.tsx new file mode 100644 index 0000000..fae74aa --- /dev/null +++ b/src/features/simulations/components/SujetDisplay.tsx @@ -0,0 +1,67 @@ +/** + * Affichage du sujet d'examen (consigne + documents) au-dessus de la zone de saisie. + * + * Prop `sujet` vient du hook `useSimulation` (alimenté par `POST /simulations`). + * Si `sujet === null` (aucun sujet actif pour la tâche, ou EO_T2_LIVE) → rien n'est rendu. + * + * Règle H : composant purement présentationnel, aucune logique métier. + * Règle L : tokens Direction H exclusivement (canvas, surface, ink-*, line, expria). + * + * Rendu plain-text avec `whitespace-pre-wrap` pour préserver les sauts de ligne. + * Les sujets étant du contenu admin-curé (pas du texte IA), pas de react-markdown. + */ + +import { Badge } from '@/shared/ui/Badge' +import { Card } from '@/shared/ui/Card' +import type { SujetData } from '@/entities/production/types' + +interface Props { + sujet: SujetData | null +} + +function DocumentBlock({ titre, texte }: { titre: string | null; texte: string | null }) { + if (!titre && !texte) return null + return ( + + {titre && {titre}} + {texte && ( + {texte} + )} + + ) +} + +export function SujetDisplay({ sujet }: Props) { + if (!sujet) return null + + return ( + + + {sujet.role && ( + + Rôle + {sujet.role} + + )} + + {sujet.contexte && ( + + {sujet.contexte} + + )} + + + + Consigne + + + {sujet.consigne} + + + + + + + + ) +} diff --git a/src/features/simulations/hooks/useSimulation.ts b/src/features/simulations/hooks/useSimulation.ts index 9ab55ce..9903990 100644 --- a/src/features/simulations/hooks/useSimulation.ts +++ b/src/features/simulations/hooks/useSimulation.ts @@ -62,6 +62,7 @@ export function useSimulation() { return { step, production, + sujet: production?.sujet ?? null, report: (correctMutation.data ?? null) as Report | null, isCreating: createMutation.isPending, isCorrecting: correctMutation.isPending,
{texte}
+ {sujet.contexte} +
+ {sujet.consigne} +