# VPS hermes-nabil — pipeline visuels Yasmi (logo + scènes tunisiennes) **Contexte** : génération de visuels publicitaires Yasmi sur hermes-nabil (VPS Contabo). Fichiers dans `/data/nyora/` du container (`docker exec hermes-nabil …` via `ssh vps.internal`). ## Problème rencontré (18/07/2026) Visuels avec logo YASMI illisible, doublé, + rectangle gris opaque. **Causes** : (1) le lettrage du logo était décrit dans le prompt IA → le modèle l'a dessiné lui-même (flou, doublé) ; (2) artefact d'édition IA (rectangle gris) ; (3) ancien fichier logo = photo 440×1413 non détourée. ## Solution (19/07/2026) - `nyora_logo.py` : surimpression déterministe du logo. Mesure la luminance de la zone d'ancrage → `logo_yasmi.png` (vert foncé) sur fond clair, `logo_yasmi_blanc.png` sur fond sombre (seuil 120). Hauteur 8,5 % de l'image, positions bas | haut-gauche | haut-droite | bas-droite. Branché dans `nyora_mannequin.py` ET `nyora_produit.py`. - Prompt mannequin : exige « AUCUN texte, lettrage, filigrane, logo » — ne jamais mentionner YASMI dans un prompt d'image. - `nyora_scenes.py` : 28 scènes tunisiennes régionales (Nord, Cap Bon, Nord-Ouest, Sahel, Sud-Est, oasis du Sud-Ouest) + 5 profils de mannequins tunisiennes élégantes. `--scene tozeur --mannequin chignon`. - Variantes logo générées par recoloration PIL (alpha conservé) : blanc + ivoire. ## Règles permanentes 1. Logo et produit ne passent JAMAIS par un modèle d'image IA. 2. Rectangle gris / lettrage flou / logo doublé = l'IA a touché au logo → jeter et régénérer. 3. Tiers premium obligatoire pour l'essayage virtuel (fidélité broderie). 4. Sauvegardes : `*.bak_20260719` dans /data/nyora et /data/SOUL.md.bak_20260719. ## Vérification rapide ``` ssh vps.internal "docker exec hermes-nabil python3 /data/nyora/nyora_scenes.py | head" ssh vps.internal "docker exec hermes-nabil python3 -c 'import sys;sys.path.insert(0,\"/data/nyora\");from nyora_logo import choisir_variante;print(choisir_variante(\"/data/nyora/out/mannequin_sidi_v1.png\"))'" ``` ## Filet de sécurité watermark Google (19/07/2026) Bug de régression documenté (discuss.ai.google.dev, 01/2026) : le sparkle visible Google peut s'injecter même en accès API sur certains modèles (Nano Banana Pro = gemini-3-pro-image), alors que l'accès API ne devrait normalement porter que le SynthID invisible. Correctif : nyora_watermark.py (nettoyer_coin) — patch miroir + fondu sur le coin bas-droite, sans dépendance lourde (PIL seul). Branché automatiquement dans nyora_produit.py (décor IA) et nyora_mannequin.py (brut, avant logo). Test réel du 19/07 sur gemini-3-pro-image via OpenRouter : aucun sparkle visible détecté (analyse pixel + aperçu ASCII du coin). Le filet reste actif par sécurité car le bug est intermittent côté Google.