backup: snapshot post-démo GHT 2026-05-19
Some checks failed
tests / Lint (ruff + black) (push) Successful in 1m50s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped

Backup état complet après enregistrement vidéo démo de bout en bout.
À utiliser comme point de référence pour la consolidation post-démo.

Changements majeurs de la session 18-19 mai :
- AIVA-URGENCE : page autonome avec preset URL + auto-focus chain
- Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine
- Bypass LLM (static_result / static_text) dans replay_engine
  pour démos déterministes sans appel Ollama
- Fix api_stream:3013 — replay_paused au premier polling /next
- dag_execute : lift duration_ms vers top-level pour wait runtime
- NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git)
- scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue

Anchors visuels (468) forcés dans le commit pour garantir restorabilité.
DB workflows actuelle + ~12 .bak DB de la journée incluses.

Sujets identifiés pour consolidation post-démo (TODO) :
1. Bug VWB recapture anchor ne régénère pas le PNG
2. Léa client accumule état mémoire (restart périodique requis)
3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel)
4. Bug coord client mss tronqué 2560x60 → mapping Y cassé
5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-05-19 14:55:06 +02:00
parent f2212e77e3
commit 5ea4960e65
627 changed files with 211348 additions and 169 deletions

View File

@@ -0,0 +1,60 @@
[Unit]
Description=RPA Vision V3 - Service grounding persistant (InfiGUI-G1-3B)
# Dépend du GPU NVIDIA prêt et du réseau pour le téléchargement HuggingFace au premier run.
After=network-online.target nvidia-persistenced.service
Wants=network-online.target
[Service]
Type=simple
# ---- Runtime ----
User=dom
Group=dom
WorkingDirectory=/home/dom/ai/rpa_vision_v3
EnvironmentFile=-/home/dom/ai/rpa_vision_v3/.env.local
Environment="PYTHONUNBUFFERED=1"
Environment="PYTHONDONTWRITEBYTECODE=1"
Environment="ENVIRONMENT=production"
Environment="RPA_SERVICE_NAME=rpa-grounding"
# Socket + répertoire d'images partagé avec les autres services RPA
# via RuntimeDirectory=rpa (cf. plus bas). PrivateTmp=true reste activé :
# /tmp serait isolé par service systemd, donc on n'utilise plus /tmp pour
# les transferts client/serveur — tout passe par /run/rpa/.
Environment="RPA_GROUNDING_SOCKET=/run/rpa/grounding.sock"
Environment="RPA_GROUNDING_IMG_DIR=/run/rpa"
# Forcer la visibilité GPU (cf. note sur héritage CUDA dans ui_tars_grounder.py)
Environment="CUDA_VISIBLE_DEVICES=0"
Environment="NVIDIA_VISIBLE_DEVICES=all"
ExecStart=/home/dom/ai/rpa_vision_v3/.venv/bin/python3 -m core.grounding.infigui_server
# ---- Socket partagé ----
# /run/rpa/ est créé par systemd au démarrage et nettoyé à l'arrêt.
# Les autres services (api, worker, dashboard, vwb) doivent lire ce répertoire :
# ils ne le créent pas, ils s'attendent à ce qu'il existe et que le socket soit dedans.
RuntimeDirectory=rpa
RuntimeDirectoryMode=0755
# ---- Resilience ----
# Le chargement initial du modèle prend 1015s. Restart=on-failure couvre les
# crashs CUDA ; le client a un fallback subprocess pour la fenêtre de redémarrage.
Restart=on-failure
RestartSec=5
# Le modèle est gros (~2.4GB VRAM, ~6GB RAM). Laisser largement le temps de charger.
TimeoutStartSec=120
TimeoutStopSec=30
# ---- Hardening ----
# PrivateTmp=true : OK car les transferts d'images se font via /run/rpa/
# (RuntimeDirectory) et non plus via /tmp. Tous les services consommateurs
# doivent déclarer RuntimeDirectory=rpa pour voir le même répertoire.
PrivateTmp=true
NoNewPrivileges=true
# Logs -> journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=rpa-grounding
[Install]
WantedBy=multi-user.target