58d0c499d4
Le formulaire produit envoyait code/name à null quand vides (form.code || null). Or les setters back setCode(string)/setName(string) sont non-nullables : null déclenchait une erreur de type (dénormalisation, code générique mappé « Date invalide » côté front) qui court-circuitait toutes les autres violations — d'où seuls code/name affichés, en « Date invalide ». On envoie '' (form.code ?? '') : la contrainte NotBlank renvoie un message FR propre par champ, et la 422 porte les 6 violations d'un coup (code, name, states, category, sites, storageTypes), chacune mappée inline (vérifié API).