- deploy/deploy.sh : rsync + build distant + attente du healthcheck.
Le build tourne sur le serveur, la machine de dev n'a pas besoin d'un
JDK 21 et la difference d'architecture arm64/x86_64 disparait.
- .env.example : la procedure recommandait un `sed -i s/CHANGEME/.../`
global. Le motif apparaissant aussi dans le commentaire au-dessus, le
mot de passe genere s'y recopiait en clair. Remplace par un append
cible sur la seule ligne DB_PASSWORD.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>