Aller au contenu

Status — 2026-06-02

Snapshot live de l'état Praesenz / Léa. Mis à jour à chaque drift significatif (pas chaque commit). Pour le détail tâches : voir TASKS.md. Pour les décisions : voir architecture/decisions/.

Briefing V3 Infomil (2026-05-29) : la topologie par site, le moteur de lip-sync, le budget de latence, le modèle de scale et le go-to-market multi-enseignes sont actés. Voir ADR 009013.

Architecture

Architecture indexée architecture/ avec C4 model (Simon Brown) + axe parallèle per-stack.

Stack Statut Hôte Réf
1A / Virbe Windows VM Dev/QA opportuniste uterrie (10.19.10.11) architecture/stacks/stack-1a-virbe-windows/
1B / UE5 Linux containers Dev/QA opportuniste, en cours uterrie (10.19.10.11) architecture/stacks/stack-1b-linux-containers/
2 / Multi-kiosk production Cible, n'existe pas encore TBD architecture/stacks/stack-2-prod-future/
3 / Retail Media Vision long terme n/a architecture/stacks/stack-3-retail-media/
X Pivot placeholder n/a architecture/stacks/stack-x/

1A et 1B sont des expériences parallèles testant deux directions opposées (cloud-Virbe vs local-first), pas deux phases séquentielles. Voir ADR 001 et crosscutting/stack-a-vs-b-comparison.md.

ADR (architecture decisions)

# Titre Statut
001 Two parallel stacks (Windows VM vs Linux Containers) Accepted
002 Local-first architecture (no cloud dependencies) Accepted
003 Inverted magnet (le kiosk attire, ne hèle pas) Accepted
004 Stack 1B local-first as Stack 2 prod target Accepted
005 PIM-native architecture (agnostic of retailer SI) Accepted
006 3-tier data supply (OFF / Salsify / retailer) Superseded by 013
007 ESL broadcast as real-time price truth Proposed
008 Pilot retailer N°1 / Picard Accepted (extended by 012)
009 Per-site master + GPU-less thin workers Accepted
010 NeuroSync lip-sync (replaces Audio2Face) Accepted
011 Fleet central mini-HPC (> ~30 kiosks) Accepted
012 Multi-enseigne go-to-market (Infomil lead) Accepted
013 PIM source tiers extended (Akeneo + Equadis) Accepted
014 In-store Phase 2 (RTX 4090 AI + GPU-render workers) Accepted

Topologie (3 tiers)

  • Phase 1 — petit magasin (ADR-009) : 1 master GPU 16 GB VRAM (pipeline IA complet LLM+RAG+STT+TTS+NeuroSync+UE5, stack RKE2·Fleet·Harbor·Prometheus·Grafana, 3 avatars max) + 1 à 4 workers sans GPU (écran, micro/HP, capteur de passage, flux WebRTC depuis le master). Routeur 5G managé, LAN câblé, switch managé, UPS, patch panel. Full-local, WAN maintenance seulement.
  • Phase 2 — magasin plus grand (ADR-014) : 1 GPU central RTX 4090 gère STT → LLM/RAG → TTS → NeuroSync lip-sync pour tous les workers ; chaque worker a un GPU classique et fait le rendering UE5 en local (audio+animation streamés sur le LAN, pas de pixel streaming). Le nombre d'avatars scale avec les workers.
  • Fleet — >~30 kiosks (ADR-011) : central mini-HPC NVIDIA 48 GB, modèles lourds partagés.

Live snapshot (uterrie)

Lu depuis uterrie:/var/lib/praesenz/state.json (source de vérité, écrit par gpu-mode.sh).

Champ Valeur
Stack actif (GPU mode) B (driver nvidia, audio snd_hda_intel)
VMs win11-kiosk shut off / site-a-vm shut off / site-b-vm shut off
Containers UE5 (u5-*) n/a (idle, pas démarrés)
Dernier refresh 2026-05-16T02:37

Refresh sans muter : ssh tofix@uterrie 'sudo gpu-mode.sh status'.

Stack 1A / Virbe Windows VM (Pilot)

Composant Statut Notes
EIB image (SL Micro 6.2) Done Auto-install USB, GPU passthrough, KubeVirt
Windows 11 VM (KubeVirt) Done Unattended install, RDP, GPU Code 43 fixé
Virbe Kiosk app Done Tourne sur node 248 (Stack A historique)
Rancher import Done Cluster visible dans Rancher
Directional audio Research Audfly Alpha-160 sélectionné

Bascule : ssh tofix@uterrie 'sudo gpu-mode.sh stack-a' (GPU vfio-pci, Windows VM boot).

Stack 1B / UE5 Linux containers (en cours)

Roadmap détaillée : roadmaps/engineering.md.

Phase 1 / Avatar en container (current)

Composant Statut Notes
UE5 5.5 built from source Done /mnt/build-data/ue5-build (32 cores Linux)
MetaHuman Léa (ex-"Gavin") Done /mnt/build-data/kiosk/
Pixel Streaming WebRTC Done Visible dans le browser
Linux packaging (Shipping) Done Build/Linux/, 4.2 Go
Containerize Linux build (Podman + GPU CDI) In flight Dockerfile prêt, à builder + tester
Push image Harbor Pending Suit la containerization

Phase 2 / Pipeline conversationnel

Composant Statut Notes
Orchestrator (FastAPI, /chat + /conversation WS) Done
STT (speaches, OpenAI-compatible) Validated
LLM (Ollama qwen2.5:14b) Validated Sur Mac actuellement
TTS (Kokoro via speaches) In flight À valider end-to-end
RAG (Qdrant) Pending Ingestion docs sommelier persona
Wire orchestrator -> UE5 (WebSocket) Pending Bloquant pour démo end-to-end

Phase 3 / Lip-sync + animations (pending)

Composant Statut Notes
Moteur lip-sync : NeuroSync Selected Remplace Audio2Face (ADR-010), pas de NIM Nvidia
Intégration NeuroSync dans UE5 Pending
Tuning par persona (sommelier, fromager, traiteur, boucher) Pending
Wire TTS Kokoro -> NeuroSync -> blend shapes -> MetaHuman Pending Saut qualitatif "avatar plausible"
Idle animations (Mixamo) Pending Breathing, weight shift, head nod
Animation state machine Pending Idle / Listening / Thinking / Speaking

Phase 4 / Production readiness (pending)

Helm chart validé sur RKE2, Fleet GitOps, DCGM monitoring, kiosk thin client SLE Micro + Chromium, latence end-to-end 1.0-1.8s (pipeline), NetworkPolicies, image versioning.

Phase 5 / Scale (pending)

Per-site : 1 master GPU 16 GB + workers sans GPU (ADR-009). Au-delà de ~30 kiosks : central mini-HPC NVIDIA 48 GB (12-15 avatars), edge workers (ADR-011). Multi-kiosk Elemental + Fleet, analytics pipeline, white-label.

Bloqueurs actifs

  1. Containerization UE5 (Phase 1) / Pixel Streaming validé en bare-metal, pas encore en container. Bloque tout le reste de la Phase 1B en GitOps.
  2. WebSocket orchestrator <-> UE5 (Phase 2) / pipeline conversationnel et avatar coexistent mais ne se parlent pas encore.
  3. Lip-sync NeuroSync (Phase 3) / moteur sélectionné (remplace Audio2Face), intégration UE5 + tuning par persona à faire. C'est le saut qualitatif "avatar plausible".
  4. Latence end-to-end / budget acté 1.0-1.8s, à mesurer en pipeline complet.

Documentation et briefings

Surface URL Notes
Site doc live (Cloudflare) https://praesenz-docs.cledorze.com Public, NDA-safe
Site doc LAN https://praesenz-docs.cledorze.lan Interne
Repo source http://gitea.cledorze.lan/praesenz/product Privé, LAN-only
Briefing bundle portable (latest) http://gitea.cledorze.lan/praesenz/product/releases Auto-release HTML standalone, PDF watermarké via deploy/share/make-share.sh "<recipient>"

CI/CD doc : push main / Gitea Actions / build MkDocs / publish + release share bundle (HTML toujours, PDF si Chrome dispo sur le runner).

Prochaines étapes (ordre suggéré)

  1. Containeriser UE5 Linux build et tester Pixel Streaming depuis le container, push Harbor
  2. Valider TTS Kokoro end-to-end (speaches)
  3. Wirer orchestrator -> UE5 via WebSocket
  4. Intégrer NeuroSync dans UE5 + tuning par persona
  5. Helm chart + Fleet GitOps pour déploiement RKE2