diff --git a/src/features/simulations/pages/SujetsPage.tsx b/src/features/simulations/pages/SujetsPage.tsx
index 15a5b38..5a7993c 100644
--- a/src/features/simulations/pages/SujetsPage.tsx
+++ b/src/features/simulations/pages/SujetsPage.tsx
@@ -34,19 +34,24 @@ function SujetsSkeleton() {
export function SujetsPage() {
const navigate = useNavigate()
- const { production, changeSubject, setStep } = useSimulationFlow()
+ const { step, production, changeSubject, setStep, reset } = useSimulationFlow()
- // MVP : pas de production en contexte (refresh direct) → retour à /simulation/ee
+ // Redirige vers /simulation/ee si :
+ // - production absente (refresh direct sur /sujets sans contexte)
+ // - step === 'idle' (état initial, pas de simulation en cours)
+ // - step === 'done' (simulation corrigée — /sujets ne doit pas patcher
+ // une simulation dont le rapport est déjà persisté — cf. FTD-23)
+ const shouldRedirect = !production || step === 'idle' || step === 'done'
useEffect(() => {
- if (!production) navigate('/simulation/ee', { replace: true })
- }, [production, navigate])
+ if (shouldRedirect) navigate('/simulation/ee', { replace: true })
+ }, [shouldRedirect, navigate])
const { data: sujets, isLoading, isError, refetch } = useSujets(
production?.tache ?? 'EE_T1',
- !!production,
+ !!production && !shouldRedirect,
)
- if (!production) return null
+ if (shouldRedirect || !production) return null
function handleSelect(sujet: SujetData) {
changeSubject(sujet)
@@ -71,7 +76,13 @@ export function SujetsPage() {