# État des phases FilyX

## 1. Audit préalable — terminé

- Inventaire des sources historiques, widgets, sports, jeux, assets et risques.
- Les jeux réellement présents sont Quiz, Motus, Qui suis-je et Petit Bac.
- Aucun jeu absent des sources n’est présenté comme disponible.

## 2. Architecture et données — terminé

- Applications web et Bot Engine séparées, contrats partagés, 61 tables et huit migrations.
- Données isolées par utilisateur et chaîne, clés étrangères et index MariaDB/MySQL.

## 3. Site public et authentification — terminé

- Site public responsive, inscription locale, Google limité au profil, confirmation,
  réinitialisation du mot de passe, sessions révocables et pages légales.
- Google et les e-mails nécessitent les identifiants de l’environnement de production.

## 4. Panels et rôles — terminé

- Panel streamer et panel administrateur avec pages fonctionnelles et données réelles.
- Rôles globaux, rôles de chaîne, Premium et VIP restent distincts.
- Le compte fondateur configuré reçoit le rôle `super_admin` et l’accès complet.
- Les 19 onglets streamer et les 17 onglets administrateur ont été parcourus en production :
  aucune redirection vers Paramètres, aucun faux « Module prêt » et aucun refus du Fondateur.

## 5. Liaison Kick — terminé pour le protocole officiel

- Résolution de chaîne, code temporaire à usage unique et validation par l’auteur propriétaire.
- Événements reçus par webhooks officiels Kick ; aucun OAuth n’est demandé aux streamers.
- Le webhook public passe par le relais Cloudflare permanent, qui conserve le corps et les
  signatures Kick avant transmission à IONOS ; les signatures RSA restent vérifiées par FilyX.
- Trente et un abonnements officiels sont actifs : dix types pour chacune des trois chaînes
  liées, plus le chat du compte bot nécessaire à la procédure de liaison.
- Le chemin complet a été validé avec plusieurs viewers distincts du bot : commande `!sr`,
  confirmation de `FiIyx`, ajout à la file, lecture et passage à la piste suivante.

## 6. Bot Engine — terminé

- OAuth officiel central du seul compte `fiIyx`, coffre AES-256-GCM, renouvellement,
  HMAC antirejeu, moteur multi-chaînes, files d’entrée/sortie et service Windows.
- Worker de production en ligne ; tests Node.js et TypeScript validés.

## 7. Commandes, widgets, StreamBot et sport — terminé

- Commandes créables et modifiables, alias, permissions et cooldowns.
- Alertes, chat, objectifs, classements, Sound Request et Overlay Sport configurables.
- URL OBS protégées par jeton, test, révocation et reconnexion automatique.
- Les six sports et tous leurs réglages historiques sont conservés par l’adaptateur.
- Le contrôle de production valide 10 overlays sur 10 et 23 assets sur 23. Les six images
  historiques manquantes de l’Overlay Sport ont été restaurées.
- L’ajout puis le retrait d’une vidéo Sound Request depuis le panel ont été validés sur la
  file réelle de production, sans réponse invalide.
- Le panel Sound Request possède désormais son lecteur YouTube intégré, dans la DA FilyX,
  avec contrôles natifs, ouverture YouTube et bouton « Passer à la suivante ».
- Le lecteur du panel écoute la fin et les erreurs YouTube : il clôture la piste de façon
  idempotente, promeut la suivante et la charge automatiquement sans recharger la page.
- Les sources OBS Sound Request sont désormais audio-only : bandeau large, barre compacte
  ou pastille minimale, sans aucune image vidéo. La barre compacte est le choix par défaut.
- `!sr` accepte désormais un lien, un identifiant ou un simple titre de musique. La recherche
  sélectionne une vidéo YouTube intégrable, conserve son vrai titre et met le résultat en cache.
- Le temps de lecture vient de l’horloge serveur : panel et sources OBS reprennent au même
  instant, corrigent automatiquement les dérives et partagent une fin de piste idempotente.
- Les modérateurs, le propriétaire et le diffuseur de la chaîne disposent de `!skip`,
  `!pause`, `!play` et `!stop`. Les viewers sans ce rôle sont refusés par le moteur.
- La pause conserve la position, `!skip` lance la suivante et `!stop` arrête la lecture sans
  vider la file ; `!play` reprend la piste ou démarre la suivante après un arrêt.

## 8. Mini-jeux — terminé pour les jeux présents

- Quiz, Motus, Qui suis-je et Petit Bac isolés par chaîne.
- Réglages, overlays, scores, classement, historique, anti-répétition et arrêt d’urgence.
- Assets et scripts des quatre jeux validés automatiquement.
- Un Quiz de démonstration a été lancé sur le moteur de production, ses événements ont été
  reçus par l’overlay, puis l’arrêt d’urgence a été validé sans état bloqué.

## 9. Premium, achats et RGPD — socle terminé

- Plans, produits, commandes manuelles, abonnements, entitlements, export et anonymisation.
- Attribution Premium/VIP disponible dans l’administration.
- Paiement automatique volontairement désactivé tant qu’aucun fournisseur n’est choisi.

## 10. Stabilisation et déploiement — en production

- IONOS déployé, migrations appliquées, worker Windows connecté et application Kick configurée.
- DA FilyX noire/graphite/orange harmonisée sur tous les overlays.
- Lint PHP, smoke tests, tests widgets, tests mini-jeux, tests Node et TypeScript validés.
- Des événements réels Kick ont traversé le relais, passé la vérification RSA et été traités
  pour `hom3r_off` et `hr3d_studio`.
- Les commandes `!sr` réelles de plusieurs viewers ont été traitées, confirmées dans le chat
  par `FiIyx` et lues successivement. Les messages du bot restent ignorés pour éviter les boucles.
- La migration `007_sound_request_compact_sync.sql` a converti les trois instances existantes
  vers le mode compact ; les tests de production valident les trois formats sans vidéo.
- La migration `008_sound_request_moderator_controls.sql` conserve en base l’état
  lecture/pause/arrêt partagé par le panel et toutes les sources OBS.
