diff --git a/core/src/main/java/com/loremind/infrastructure/web/GlobalExceptionHandler.java b/core/src/main/java/com/loremind/infrastructure/web/GlobalExceptionHandler.java
index 3ae3676..c24e932 100644
--- a/core/src/main/java/com/loremind/infrastructure/web/GlobalExceptionHandler.java
+++ b/core/src/main/java/com/loremind/infrastructure/web/GlobalExceptionHandler.java
@@ -11,6 +11,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.async.AsyncRequestNotUsableException;
+import org.springframework.web.server.ResponseStatusException;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -71,6 +72,21 @@ public class GlobalExceptionHandler {
));
}
+ /**
+ * Statut HTTP explicitement choisi par un controller via {@link ResponseStatusException}
+ * (ex: {@code NotebookController} -> 404 si notebook introuvable, 502 si Brain injoignable).
+ *
+ * SANS ce handler, le fallback {@code @ExceptionHandler(Throwable.class)} ci-dessous
+ * interceptait ces exceptions et renvoyait 500 — ecrasant le statut voulu (le
+ * resolver natif de Spring est court-circuite des qu'un advice gere Throwable).
+ */
+ @ExceptionHandler(ResponseStatusException.class)
+ public ResponseEntity