Feat : Prio order for auto stream record
This commit is contained in:
67
README.md
67
README.md
@@ -33,7 +33,9 @@ IP publique nécessaire, et obs-websocket reste sur `127.0.0.1`.
|
||||
- [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.
|
||||
dédiée, dès qu'il est en direct depuis assez longtemps, avec
|
||||
[priorité et interruption](#priorité-et-interruption) quand plusieurs profils se disputent
|
||||
la même machine.
|
||||
- [Presets d'enregistrement](#presets-denregistrement) appliqués à OBS depuis l'interface,
|
||||
réglables VM par VM : de « Économe » à « Sans perte ».
|
||||
- [Frise des diffusions](#frise-des-diffusions) : l'historique des streams de chaque profil
|
||||
@@ -520,7 +522,9 @@ identifiants du formulaire, sans attendre un vrai passage en direct pour découv
|
||||
de frappe.
|
||||
|
||||
Déclenché sur le même évènement que la notification navigateur : un profil dont `notify` est
|
||||
coché (la cloche 🔔) passant à l'état public. Un échec d'envoi (identifiants invalides,
|
||||
coché (la cloche 🔔) passant à l'état public. **Un profil nouvellement suivi est silencieux** —
|
||||
suivre quelqu'un sert souvent à l'observer, et une liste qui grandit ne doit pas transformer
|
||||
le téléphone en sonnette. La cloche s'active profil par profil, depuis sa fiche. Un échec d'envoi (identifiants invalides,
|
||||
Pushover injoignable) finit dans le journal, jamais en erreur qui interromprait la veille —
|
||||
c'est un canal secondaire, pas une condition de son fonctionnement.
|
||||
|
||||
@@ -535,20 +539,61 @@ Sur la fiche d'un streamer (onglet Streamers), assigne un agent puis coche
|
||||
(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 :
|
||||
Plusieurs profils peuvent être en automatisme sur la même VM ; c'est la
|
||||
[priorité](#priorité-et-interruption) qui les départage. **Par défaut la capture en place
|
||||
l'emporte** : un profil qui trouve sa VM occupée passe son tour sans rien écraser.
|
||||
|
||||
- **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.
|
||||
**Trois tentatives par diffusion.** Les échecs restants une fois les 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. Passer son tour faute de VM libre
|
||||
n'en consomme aucune — sinon un profil bloqué une heure aurait épuisé ses essais avant même
|
||||
que la machine ne se libère.
|
||||
|
||||
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.
|
||||
|
||||
## Priorité et interruption
|
||||
|
||||
Une VM ne capture qu'un flux à la fois, mais rien n'empêche d'y assigner plusieurs profils.
|
||||
Deux réglages, sur la fiche d'un streamer, disent qui l'emporte.
|
||||
|
||||
**Priorité** — *Basse, Normale (défaut), Haute, Critique*. L'échelle est globale pour rester
|
||||
comparable partout, mais **elle ne tranche qu'entre profils assignés au même agent** : deux
|
||||
VM distinctes ne se disputent rien, et un classement global mêlerait des profils qui ne se
|
||||
croiseront jamais. La fiche affiche donc l'ordre qui compte — celui de la VM :
|
||||
« Ordre sur vm-rec-01 : 1. alice (Haute) ⚡ · 2. bob (Normale) ».
|
||||
|
||||
**Peut interrompre un enregistrement en cours** — décoché par défaut. C'est l'autorisation
|
||||
de couper une capture de rang inférieur pour prendre sa place.
|
||||
|
||||
Ce droit est délibérément **séparé de la priorité, et non déduit d'elle** : interrompre
|
||||
détruit la fin d'un fichier. Cela ne doit pas découler d'un simple changement de rang, mais
|
||||
d'un choix explicite, profil par profil.
|
||||
|
||||
L'interruption n'a lieu que si les trois conditions sont réunies :
|
||||
|
||||
1. le profil candidat a le droit d'interrompre ;
|
||||
2. sa priorité est **strictement** supérieure — à rang égal, la capture en place reste, ce
|
||||
qui rend les égalités inoffensives ;
|
||||
3. la capture en cours est **identifiable**, c'est-à-dire rattachée à un profil suivi. Une
|
||||
capture lancée à la main depuis l'onglet Agents n'est jamais coupée : on ignore ce
|
||||
qu'elle vaut, et il n'y a aucune priorité à lui comparer.
|
||||
|
||||
La capture évincée est **close proprement** — commande d'arrêt, puis attente de la
|
||||
confirmation de l'agent avant de relancer — et non écrasée : son fichier reste. Le journal
|
||||
en garde une trace en avertissement : « Priorité : « bob » interrompu au profit de
|
||||
« alice » sur vm-rec-01 ».
|
||||
|
||||
La règle vaut aussi pour le bouton **Enregistrer** : quand elle s'applique, il annonce ce
|
||||
qu'il fera (« Enregistrer (interrompt bob) ») plutôt que de le faire découvrir par un échec ;
|
||||
sinon il reste désactivé, avec le motif du refus en infobulle.
|
||||
|
||||
Enfin, la veille sonde les profils **du plus prioritaire au moins prioritaire**. C'est
|
||||
l'ordre de sondage qui décide qui tente sa chance en premier sur une VM libre : sonder au
|
||||
hasard laisserait un profil mineur s'en emparer, pour se faire couper dans la foulée par son
|
||||
aîné — même résultat, au prix d'un fichier de quelques secondes.
|
||||
|
||||
## Frise des diffusions
|
||||
|
||||
Deux vues sur le même historique : la fiche d'un profil (clic sur sa vignette, onglet
|
||||
@@ -674,7 +719,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, favori |
|
||||
| `PATCH` | `/api/watchlist/:id` | Libellé, agent assigné, notifications, automatisme, favori, priorité, interruption |
|
||||
| `GET` | `/api/timeline?days=&targetId=` | Diffusions et captures ; sans `targetId`, tous les profils |
|
||||
| `POST` | `/api/agents/:id/token` | Régénère le jeton (coupe la session en cours) |
|
||||
| `DELETE` | `/api/agents/:id` | Supprime l'agent |
|
||||
|
||||
Reference in New Issue
Block a user