20aed903ba
- Voice pipeline: ESP32 WebSocket client → voice bridge → LLM → Piper TTS (Tower :8001) - Hints engine: 3 puzzles (LA_440, LEFOU_PIANO, QR_FINALE), anti-cheat, 3 hint levels - MCP hardware server: 6 tools (puzzle, audio, LED, camera, scenario, status), stdio transport - Analytics: ESP32 module + 6 web endpoints + Dashboard UI with chat interface - Security: auth middleware (Bearer NVS), rate limiting, input validation on 30 endpoints - Frontend: code-split (1.1MB → 210KB initial), ErrorBoundary, API timeout, WS reconnect - Tests: 24 Python + 38 TypeScript + 18 MCP = 80 project tests (+ 19 mascarade) - Specs: AI_INTEGRATION_SPEC, MCP_HARDWARE_SERVER_SPEC, QA_TEST_MATRIX_SPEC - Docs: SECURITY, DEPLOYMENT_RUNBOOK, voice pipeline guide, AI architecture map - 6 AI agent definitions (.github/agents/ai_*.md) - TUI orchestration script (tools/dev/zacus_tui.py) - Docker compose TTS for Tower + KXKM-AI - CHANGELOG, README, mkdocs.yml updated - Cycle detection (DFS) in runtime3 validator - Sprint plan: plans/SPRINT_AI_INTEGRATION.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Handoff - Équipe Front-end (Media Manager)
Contexte
- FSM de travail:
scenario-ai-coherence/zacus_conversation_bundle_v3/fsm_mermaid.md - Contrat media manager:
specs/MEDIA_MANAGER_RUNTIME_SPEC.md - Scope: aucune modification firmware.
Objectif métier
- Exposer le Media Manager de manière fiable à l’arrivée en fin de scénario.
- Accepter les identifiants step/scene mixtes sans casser l’UI.
- S’appuyer sur les APIs media existantes pour listage, lecture et enregistrement.
Cibles de sortie (artefacts)
artifacts/runtime-sync/<date>/media-manager-web-checks.mdartifacts/runtime-sync/<date>/media-manager-front-mapping.md- notes de migration/ajustement de parsing si nécessaire.
- Spec détaillée d'intégration:
specs/MEDIA_MANAGER_FRONTEND_SPEC.md
Actions obligatoires
- Parsing statut:
- lire
story.screenen priorité. - fallback tolérant sur
story.step == STEP_MEDIA_MANAGER. - ne pas supposer
step_idprefixéSTEP_ouSCENE_.
- Mapping Media Hub:
- activer vue hub quand
story.screen == SCENE_MEDIA_MANAGER. - si non dispo, fallback
story.step == STEP_MEDIA_MANAGER.
- Endpoints media:
/api/media/files(kindmusic/picture/recorder)/api/media/play,/api/media/stop/api/media/record/start,/api/media/record/stop/api/media/record/status
- Gestion erreurs:
- gérer
ok=falseeterrordepuis/api/controlet endpoints media. - afficher
media.last_erroren debug écran media.
- Affichage media:
- afficher clairement
media.record_simulatedpour éviter les ambiguïtés d’enregistrement réel.
Critères d’acceptation
- Le Media Hub s’affiche à la fin de scénario sans crash.
SCENE_MEDIA_MANAGERdéclenche bien la vue média même avecSTEP_MEDIA_MANAGERpossible en fallback.media.playingbascule correctement via play/stop.- Les erreurs API sont présentées de façon exploitable par l’opérateur.
Remarques équipe
- Ne pas changer les contrats runtime, seulement adapter la consommation UI.
- Toute divergence métier (ex: cible
SCENE_MEDIA_MANAGERencore présente) doit être reportée via ticket "scenario". - Implémentation front alignée au studio React + Blockly (
frontend-scratch-v2) avec consommation API côté UI.