Backend d'un systeme de video-surveillance dont le capteur est un iPhone recycle. Le probleme est simple, la structure est le sujet : - domain/ sans aucun import de framework (verifie par 7 regles ArchUnit qui tournent aussi pendant le docker build) - CQRS strict : write et read ne partagent ni modele ni port - AlarmDecision en sealed interface -> switch exhaustif verifie a la compilation, plutot qu'une chaine de if - Kafka en KRaft (Zookeeper est supprime depuis Kafka 4.0), cle de partition = deviceId pour garantir l'ordre par capteur - ErrorHandlingDeserializer + DLQ : un message malforme ne bloque pas le flux des evenements suivants - notification WebSocket differee apres commit, pour ne jamais afficher une intrusion qui partirait en rollback 31 tests au vert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
14 lines
394 B
Java
14 lines
394 B
Java
package me.belkacemi.iotalarm.domain.exception;
|
|
|
|
/**
|
|
* Violation d'une regle metier.
|
|
*
|
|
* <p>Volontairement non typee Spring : le domaine ne connait pas HTTP. C'est un
|
|
* {@code @RestControllerAdvice} de la couche presentation qui la traduit en 409.</p>
|
|
*/
|
|
public class DomainException extends RuntimeException {
|
|
|
|
public DomainException(String message) {
|
|
super(message);
|
|
}
|
|
}
|