Feat : added and tweaked state machine
This commit is contained in:
44
README.md
44
README.md
@@ -30,6 +30,10 @@ IP publique nécessaire, et obs-websocket reste sur `127.0.0.1`.
|
||||
- Reconnexion automatique de bout en bout (agent → serveur, agent → OBS, dashboard → serveur).
|
||||
- [Pause automatique pendant les shows privés](#pause-automatique-pendant-les-shows-privés)
|
||||
(Stripchat), avec reprise et rappel du plein écran au retour du flux public.
|
||||
- [Clôture différée sur passage hors-ligne](#passage-hors-ligne) : une coupure brève
|
||||
ne découpe pas le fichier, une vraie fin de diffusion le termine.
|
||||
- [Enregistrement automatique](#enregistrement-automatique) d'un streamer sur une VM
|
||||
dédiée, dès qu'il est en direct depuis assez longtemps.
|
||||
- [Presets d'enregistrement](#presets-denregistrement) appliqués à OBS depuis l'interface,
|
||||
réglables VM par VM : de « Économe » à « Sans perte ».
|
||||
|
||||
@@ -235,6 +239,45 @@ aucun autre moyen de connaître.
|
||||
La rétention est celle du journal global (`LOG_RETENTION`) : les entrées les plus
|
||||
anciennes sont purgées, toutes VM confondues.
|
||||
|
||||
## Passage hors-ligne
|
||||
|
||||
Quand le statut brut passe à « off » (ou « idle »), deux temps distincts :
|
||||
|
||||
1. **Pause immédiate.** L'écran d'attente n'a rien à faire dans le fichier. Aucun délai,
|
||||
aucune confirmation : reprendre ne coûte rien si la lecture était fausse.
|
||||
2. **Clôture différée**, après le délai réglé sur la fiche de l'agent (1 h par défaut).
|
||||
Une coupure de quelques minutes est fréquente ; clore tout de suite découperait le
|
||||
fichier en deux. Le compte à rebours est annulé dès que le flux revient, public **ou**
|
||||
privé, et l'enregistrement reprend dans le même fichier.
|
||||
|
||||
Le décompte s'affiche sur la fiche de l'agent. La clôture ferme aussi la fenêtre du
|
||||
navigateur si son pilotage est activé, contrairement à une simple pause.
|
||||
|
||||
Régler le délai à `0` clôt dès la première lecture hors-ligne ; décocher « Clore
|
||||
l'enregistrement quand le flux passe hors-ligne » désactive les deux temps, y compris la
|
||||
pause.
|
||||
|
||||
## Enregistrement automatique
|
||||
|
||||
Sur la fiche d'un streamer (onglet Streamers), assigne un agent puis coche
|
||||
**Enregistrer automatiquement**. Dès que le profil est en direct depuis `AUTO_RECORD_DELAY_MS`
|
||||
(60 s par défaut), le serveur lance la capture sur cet agent, exactement comme le bouton
|
||||
« Enregistrer » — surveillance des shows privés comprise.
|
||||
|
||||
Trois règles cadrent l'automatisme :
|
||||
|
||||
- **Un streamer par VM.** Activer l'automatisme sur un agent déjà pris est refusé, avec le
|
||||
nom du profil qui l'occupe.
|
||||
- **Aucune préemption.** Si la VM enregistre déjà quoi que ce soit, l'automatisme passe son
|
||||
tour plutôt que d'écraser la capture en cours.
|
||||
- **Trois tentatives par diffusion.** Les échecs restants une fois ces garde-fous passés
|
||||
(OBS injoignable, par exemple) sont surtout persistants ; au-delà, l'automatisme
|
||||
abandonne jusqu'à la diffusion suivante et le dit dans le journal.
|
||||
|
||||
Le délai d'amorçage n'est pas une précaution de style : un modèle qui sort d'un show privé
|
||||
repasse « public » quelques secondes avant de se remettre en place. Déclencher sur la
|
||||
première lecture produirait des fichiers de dix secondes.
|
||||
|
||||
## API HTTP
|
||||
|
||||
Toutes les routes hors `/api/login` exigent `Authorization: Bearer <jeton de session>`.
|
||||
@@ -245,6 +288,7 @@ Toutes les routes hors `/api/login` exigent `Authorization: Bearer <jeton de ses
|
||||
| `GET` | `/api/agents` | Liste des agents et de leur état |
|
||||
| `POST` | `/api/agents` | Provisionne un agent, renvoie son jeton **une seule fois** |
|
||||
| `PATCH` | `/api/agents/:id` | Nom, notes, paramètres OBS, auto-connexion, surveillance, navigateur, preset |
|
||||
| `PATCH` | `/api/watchlist/:id` | Libellé, agent assigné, notifications, automatisme |
|
||||
| `POST` | `/api/agents/:id/token` | Régénère le jeton (coupe la session en cours) |
|
||||
| `DELETE` | `/api/agents/:id` | Supprime l'agent |
|
||||
| `POST` | `/api/agents/:id/command` | `{ action, params }`, attend le résultat de l'agent |
|
||||
|
||||
Reference in New Issue
Block a user