+15
−0
apps/api/src/common/uploads.ts
0 → 100644
+43
−0
apps/api/src/engine/avatar-bank.spec.ts
0 → 100644
+83
−0
Loading
Console d'animation — refonte pour tenir à l'échelle. Le chronogramme n'avait ni borne ni filtre : cinquante injects faisaient une page de plusieurs écrans, les envoyés s'y accumulaient, et rien ne signalait un inject planifié dont le T+ était dépassé. Il est désormais borné et défilant, groupé par urgence (en retard / imminent / à venir / manuel / traités, ces derniers repliés), avec recherche et filtre par canal. Un bandeau « prochain » et un compteur de retard répondent à la seule question utile en séance : qu'est-ce qui part maintenant, et qu'ai-je raté. Le formulaire de création passe en tête, dépliable, au lieu d'être enterré sous la liste. Les trois flux de la colonne droite deviennent des onglets : le journal, le plus verbeux, chassait les appels à passer hors de l'écran. Correction — le champ de publication du skin X ignorait le mode clair/sombre : ses couleurs étaient codées en dur alors que le skin expose une palette thème-consciente. Le même défaut existait sur LinkedIn et Instagram, moins voyant : leur composer héritait de la palette de l'application au lieu de celle du skin. Les trois sont corrigés, ainsi que les surfaces adjacentes (sélecteur de compte, fil de réponses). Avatars des comptes sur les réseaux simulés. Logo à deux niveaux : celui de l'organisation (section Organisation, réservée à l'administrateur) vaut par défaut pour tous ses exercices, celui d'un exercice le remplace. Une seule route de lecture applique la précédence. Les autres comptes reçoivent une image d'une banque de 13 illustrations embarquées — jamais de photos de personnes, associer un visage réel à des propos fabriqués poserait un problème de droit à l'image. L'attribution est DÉTERMINISTE (empreinte du pseudo) et non tirée au sort à chaque rendu : un compte qui change de visage au rechargement détruirait l'immersion. Le stockage de fichiers est extrait en module partagé plutôt que dupliqué depuis la GED, qui l'utilise désormais aussi. Une migration à appliquer (deux colonnes nullables). Compromis de sécurité assumé et documenté dans SECURITY.md : la route de lecture du logo est sans garde, cette image étant référencée depuis quatre types de session. Ce lot n'a été ni compilé ni exécuté (pas de toolchain Node dans l'environnement de développement utilisé). La refonte visuelle et le rendu des avatars sont précisément ce qu'une relecture ne valide pas : à regarder dans les deux thèmes et les trois skins avant revue de fond. Co-Authored-By: Claude (RCA)