PIPELINE-004 — Attribution et génération d’une médaille
Harmony attribue une médaille uniquement depuis une preuve JavaMouliNette validée et une règle versionnée. La génération du PNG reste asynchrone et ne bloque jamais cette décision métier.
Contrat métier
La définition conserve code, nom, description, niveau, poids, compétences, conditions, règle, obligatoire ou bonus, statut, hash et état visuel. L’attribution conserve utilisateur, sujet, exercice éventuel, dépôt, commit, job, versions, preuve, date, origine et idempotence.
Flux visuel
- publication de la définition et outbox ;
- message RabbitMQ sans donnée apprenant ;
- rendu PNG transparent déterministe ;
- contrôle dimensions, métadonnées et SHA-256 ;
- écriture privée MinIO et relecture ;
- callback Harmony authentifié et idempotent.
Un même hash réutilise le même objet. Les retries sont bornés et l’archive RabbitMQ joue le rôle de DLQ. Sous pression, la demande reste en queue avec une concurrence de un.
Accès et erreurs
Online et Intra ne reçoivent aucune URL MinIO. Ils affichent conditions, progression, compétences et preuve autorisée, puis relaient le PNG par Harmony. Avant génération, en cas de timeout ou d’erreur modèle, le fallback violet TrysCode reste disponible.
Tests : condition non remplie, attribution, doublon, callback répété, objet existant, erreur, timeout, transparence, dimensions, stockage, tenant et pression.