# État du déploiement FilyX

Dernière vérification : 1er août 2026.

## Production IONOS

- URL : `https://filyx.hom3r-off.fr`
- Document root : `/FilyX/apps/web/public`
- PHP : 8.4
- Base active : MySQL 8.0, schéma et migrations `001` à `008` appliqués
- Santé API : base connectée et endpoints HTTP opérationnels
- Worker Windows : `worker-windows-01`, heartbeat en ligne
- Authentification worker HMAC : validée de bout en bout
- Compte OAuth du bot : compte exact `fiIyx`, session valide et renouvelable
- Chaînes actuellement liées : `hom3r_off`, `biggy-off`, `hr3d_studio`

## API officielle Kick

- Application Kick : `FilyXBot`
- Callback OAuth : `https://filyx.hom3r-off.fr/auth/kick/callback`
- Webhook déclaré chez Kick : `https://filyx-kick-relay.cerulean-watch.workers.dev/`
- Destination du relais : `https://filyx.hom3r-off.fr/api/kick/webhook`
- Webhooks activés dans Kick Developers
- Abonnements actifs : 31 (dix types pour chacune des trois chaînes liées, plus le chat du bot)
- Envoi de messages : `POST /public/v1/chat`
- Réception : relais Cloudflare transparent, vérification RSA sur IONOS, puis file durable
  vers le moteur Windows
- Aucun cookie, mot de passe ou jeton de streamer n’est demandé

Le 1er août 2026, les trente et un abonnements webhook ont été renouvelés après la
mise en place du relais permanent. L’API Kick les annonce actifs. Des événements
réels ont été reçus, validés par signature RSA et traités pour `hom3r_off` et
`hr3d_studio`. Le chemin Sound Request est également validé avec plusieurs viewers :
les commandes `!sr` sont traitées, confirmées dans le chat par `FiIyx`, placées dans
la file et lues successivement. Les messages du bot restent ignorés pour éviter les boucles.

## Widgets et overlays

- DA commune FilyX noire, graphite et orange chargée par les overlays génériques,
  le Sound Request, les quatre mini-jeux et l’Overlay Sport
- Overlay Sport : football, handball, basketball, tennis, MMA et F1 conservés
  derrière l’adaptateur FilyX
- Mini-jeux : Quiz, Motus, Qui suis-je et Petit Bac testés avec leurs assets
- Quiz de démonstration lancé et arrêté sur le moteur réel ; événements `quiz-question` et
  `quiz-stopped` reçus, session clôturée en `cancelled` sans état `STOPPING` résiduel
- Sound Request : configuration auto-réparée, commande `!sr`, file, blacklist,
  volume, auto-skip, watchdog YouTube et mode de test OBS
- La commande accepte `!sr <titre de musique>` en plus des liens/IDs : API YouTube officielle
  si une clé est configurée, fallback public opérationnel et cache de sept jours
- Instance Sound Request active sur les trois chaînes liées et provisionnement automatique
  lors de toute future liaison
- Lecteur YouTube intégré au panel, avec domaine sans cookies, contrôles natifs,
  ouverture YouTube et passage manuel à la piste suivante
- Passage automatique à la piste suivante depuis le lecteur du panel dès la fin YouTube ;
  les erreurs vidéo déclenchent également un skip sécurisé et la file reste synchronisée
- Overlays Sound Request audio-only : bandeau large, barre compacte ou pastille minimale,
  tous sans vidéo ; les trois instances existantes sont migrées en mode compact
- Synchronisation Sound Request par horloge serveur : reprise au temps réel, correction de
  dérive entre sources OBS et actualisation du lecteur/de la file dans le panel
- Contrôles de modération Sound Request : `!skip`, `!pause`, `!play` et `!stop`, autorisés
  uniquement aux modérateurs, au propriétaire et au diffuseur signalés par l’événement Kick
- État lecture/pause/arrêt persistant et commun au panel et aux overlays ; `!stop` conserve
  les pistes en attente et `!play` redémarre proprement la lecture
- Smoke test de production : 10 overlays sur 10 servis sans erreur et 23 assets sur
  23 accessibles ; les six images historiques manquantes de l’Overlay Sport sont restaurées

## Validations réalisées

- lint PHP complet
- smoke test PHP et base
- validation des réglages des jeux
- validation syntaxique et assets de tous les overlays
- tests Node.js : 9/9
- TypeScript : valide
- endpoint webhook public joignable et refus correct des requêtes non signées
- relais Cloudflare testé unitairement (3/3) et avec de vrais événements Kick signés
- lancement et arrêt d’un mini-jeu validés de bout en bout depuis le panel de production
- navigation authentifiée validée sur 19 routes du panel streamer et 17 routes admin
- Sound Request validé depuis le panel : ajout réel, passage en lecture et retrait de la file
- Sound Request validé depuis le chat Kick avec plusieurs viewers distincts du bot ;
  réponses du bot envoyées et pistes réellement jouées dans l’ordre
- Recherche par titre validée localement puis depuis IONOS avec un vrai résultat YouTube
- Les trois formats Sound Request ont été créés temporairement en production puis contrôlés :
  audio-only, décalage de reprise, correction de dérive et horloge serveur valides ; nettoyage effectué
- Les trois formats exposent l’état lecture/pause/arrêt et contiennent les contrôles de
  synchronisation attendus ; les widgets temporaires de validation ont été supprimés

## Limites externes restantes

- Les contrôles Sound Request utilisent le badge `moderator` fourni dans chaque événement de
  chat Kick signé. Les autres actions sensibles restent bloquées si leur contexte ne fournit pas ce rôle.
- Le paiement automatisé reste désactivé jusqu’au choix d’un prestataire.
- Google OAuth et l’envoi d’e-mails nécessitent les identifiants de production.

## Opérations IONOS à préserver

- Le cron `FilyX maintenance` reste actif toutes les cinq minutes.
- Ne jamais supprimer la base active `dbs15946873`.
- Le dossier `/FilyX` fonctionnel ne doit pas être supprimé.
- Le `.htaccess` local doit rester synchronisé avec la production.
