feat(app) : phase 3 — templates ComfyUI paramétriques + smoke tests

- Templates paramétrés (data/workflows/templates/) : substitution de variables
  ({{modele_checkpoint}}, {{resolution}}, {{resolution_largeur/hauteur}},
  {{vram_profile}}) — jamais de réécriture de topologie (PRD §4.6)
- Génération de JSON concrets (/workflows) + régénération automatique à chaque
  écriture du registre, commit git ; suppression si le modèle disparaît
- Champ comfyui_checkpoint ajouté au schéma et au formulaire registre ;
  génération refusée tant qu'il est null (anti-hallucination)
- Smoke test : prompt canari sans modèle (EmptyImage→PreviewImage) posté sur
  COMFYUI_URL/prompt, statut remonté dans l'UI, dégradation gracieuse
- Endpoint de téléchargement /workflows/fichier/[nom]
- Tests : 11 nouveaux cas (substitution, conversion numérique, variable
  inconnue, paliers VRAM, résolution invalide, checkpoint null, smoke test
  accepté/refusé/injoignable)
- Package YNH : question comfyui_url + COMFYUI_URL dans l'env applicatif
- Vérifié : check/lint/test (38)/build verts, autofixer propre, test fumée
  HTTP complet (seed templates, refus sans checkpoint, génération, JSON
  concret correct, téléchargement, smoke test dégradé, commits git)
This commit is contained in:
cyber-mawonaj
2026-08-01 11:05:30 -04:00
parent 7a90ddd641
commit 2e0220b1c9
19 changed files with 871 additions and 1 deletions
+6 -1
View File
@@ -35,6 +35,7 @@ Pour tester finement une variable précise, copie `.env.example` en `.env` et ut
| `DATA_DIR` | `./data` (relatif à `app/`) | Dossier persistant : YAML + git interne. En prod : `/home/yunohost.app/veille-ia` |
| `OLLAMA_URL` | `http://127.0.0.1:11434` | Endpoint Ollama. Optionnel : dégradation gracieuse si injoignable |
| `ALERTS_TOKEN` | *(aucun)* | Token Bearer de `POST /api/alerts`. Généré à l'install YNH, jamais commité |
| `COMFYUI_URL` | `http://127.0.0.1:8188` | API ComfyUI pour les smoke tests. Dégradation gracieuse si injoignable |
| `SSO_HEADER` | `ynh-user` | Header HTTP injecté par SSOwat portant l'utilisateur authentifié |
| `DEV_USER` | *(aucun)* | Dev uniquement : simule un utilisateur SSO. Ignoré en production |
| `BASE_PATH` | *(aucun)* | Build uniquement : sous-chemin de montage (ex. `/veille`) pour `paths.base` |
@@ -91,5 +92,9 @@ Optionnel. Si le paquet `ollama_ynh` est indisponible : Ollama sur la machine lo
- `POST /api/alerts` : token Bearer (`ALERTS_TOKEN`, comparaison en temps constant), schéma d'alerte du PRD §4.4 validé par Zod, 503 si non configuré
- Inbox `/alertes` : filtres par profil impacté et statut, actions « Marquer traité » et « Créer/MAJ fiche » (pré-remplissage du formulaire registre depuis l'alerte, sans inventer de champ)
- `nodered-flows/` : 4 flows importables (rss-ingest, license-watch, classifier avec le prompt figé du PRD §6, notify) — nœuds core uniquement, configuration par variables d'env
- [ ] **Phase 3** — templates ComfyUI + smoke tests
- [x] **Phase 3** — templates ComfyUI + smoke tests
- Templates paramétrés (`data/workflows/templates/`) : substitution de variables (`{{modele_checkpoint}}`, `{{resolution}}`, `{{vram_profile}}`…), **jamais de réécriture de topologie**
- Génération de JSON concrets (`/workflows`) + **régénération automatique à chaque modification du registre**, commit git ; suppression si le modèle disparaît
- Champ `comfyui_checkpoint` dans le registre ; génération refusée tant qu'il est null (anti-hallucination)
- Smoke test : prompt canari sans modèle (EmptyImage→PreviewImage) posté sur `COMFYUI_URL/prompt`, statut remonté dans l'UI, dégradation gracieuse si injoignable
- [ ] **Phase 4** — durcissement (i18n gcf/en, niveau 8 package_check)