Révisions
Quand un projet nécessite une révision pour les changements d’agent, ou que la session a un accès Propose, les changements de liste de lecture et d’écran attendent une personne au lieu d’être appliqués. La commande réussit toujours : ok: true, sortie 0, la réponse du serveur dans data, et un avertissement pending_review.
{
"ok": true,
"data": {
"status": "pending_review",
"review": {
"id": "rvw_LOBBY",
"kind": "playlist_change",
"state": "pending",
"url": "https://screenrig.ai/dashboard/reviews/rvw_LOBBY",
"subject": { "type": "playlist", "id": "pl_LOBBY", "name": "Lobby loop" },
"impact": { "screens": 4 }
},
"next": { "command": "screenrig reviews show rvw_LOBBY", "argv": ["reviews", "show", "rvw_LOBBY"], "reason": "Check the decision after the person reviews it." }
},
"warnings": [{ "code": "pending_review", "message": "Waiting for a person to approve: https://screenrig.ai/dashboard/reviews/rvw_LOBBY" }]
}Création et mise à jour de liste de lecture (y compris playlist import et playlist replace-release --apply), screen publish, screen assign, screen schedule set, clear et restore, ainsi que screen takeover et takeover clear en attente de révision, pour un écran ou une flotte. Un changement de flotte est une révision : son étiquette est résolue lorsqu’une personne l’approuve, et reviews show rapporte ensuite le résultat de chaque écran ; une grande flotte termine l’application en arrière-plan, et screen_change.result.applying est true jusqu’à ce que chaque écran ait son résultat. Hormis les changements de médias ci-dessous, chaque autre changement répond à 403 insufficient_access pour une session Propose. --note TEXT sur ces commandes envoie une note en texte clair, au maximum 280 caractères, que le réviseur lit dans le tableau de bord.
Une personne approuve, demande des modifications ou rejette dans la page Révisions du tableau de bord ; les agents ne peuvent pas approuver les modifications de liste de lecture ou d’écran. Une modification approuvée s’applique comme si elle avait été faite à ce moment, et ses événements nomment la personne qui l’a approuvée et l’agent qui l’a proposée. Ne pas interroger, dormir ou répéter l’écriture pendant qu’une révision attend : vérifiez plus tard avec reviews show, ou suivez review.approved, review.rejected et review.changes_requested avec events follow --type review..
Les modifications des médias issues d’une session Propose attendent aussi. Les sélecteurs d’étiquette, de dossier et all ignorent un nouveau téléversement jusqu’à ce qu’une personne l’approuve, et les médias approuvés que la session retague ou déplace continuent de jouer avec leurs étiquettes et dossier approuvés jusqu’à ce que le changement soit approuvé. Le retag répond ok, sortie 0, avec avertissement media_review_pending, et la révision de l’élément apparaît dans reviews list en quelques secondes ; ne pas sonder, dormir ou réessayer. Chaque élément reçoit une révision, type playlist_change avec opération selector_refresh et un sujet media : media_change montre ses étiquettes et dossier before et after (before est null pour un nouveau téléversement), et media_playlists liste chaque playlist approuvée, et chaque playlist proposée en attente de révision, à laquelle le changement l’ajoute ou le retire (media_added, media_removed), avec leurs écrans. L’approbation applique le changement à toutes ; le rejet, la demande de modifications ou le retrait remettent un élément retagué ou déplacé tel qu’approuvé, et un nouveau téléversement reste non lu. Un changement qui n’altère aucune playlist approuvée ni proposition s’applique seul, et une playlist qui nomme l’élément par id le porte dans sa propre révision. Quand ces playlists avancent avant qu’une personne décide, la révision média devient stale et une nouvelle la remplace en quelques secondes.
Un remplacement ou une restauration de média depuis une session Propose attend aussi, sous la forme d’une révision playlist_change avec l’opération media_replace et un sujet media : reviews show indique le fichier actuellement en service et le fichier que l’approbation met en service, et le média continue de jouer son fichier actuel jusqu’à ce qu’une personne approuve.
Un projet avec un dossier protégé envoie tout changement qui atteint l’un de ses écrans à un second approbateur, à tout niveau d’accès, Manage compris. Les affectations, les horaires de listes de lecture et les prises de contrôle sont des révisions screen_change avec protected: true. La création, la modification, la pause, la reprise ou la suppression d’une campagne, la création, la modification, la suppression d’un dossier d’écrans ou le retrait de sa protection, et le déplacement d’un écran sont des révisions protected_change, listées avec reviews list --kind protected_change. Une personne autre que vous, et autre que la personne pour laquelle vous travaillez, en décide (second_approver_required, sortie 3, quand la mauvaise personne essaie), et review_stale (sortie 5) signifie que la campagne ou le dossier a changé après la proposition : relisez-le et proposez-le de nouveau. Un changement sans forme de révision est refusé avec protected_target (sortie 5). Un appelant limité à des dossiers d’écrans ne lit et ne retire que les révisions dont toute la portée est dans son périmètre.
États de révision :
| État | Sens | Étape suivante |
|---|---|---|
pending | En attente d’une personne. | Donnez à la personne l’URL de révision ; vérifiez à nouveau plus tard. |
approved | Appliqué à la playlist ou aux écrans. | Vérifiez à l’écran avec screen show et une capture d’écran. |
changes_requested | La personne a demandé des changements ; decision_note indique lesquels. | Réviser et proposer de nouveau avec --note. |
rejected | La personne a refusé ; decision_note indique pourquoi. | Ne pas renvoyer la même modification; demandez à la personne. |
withdrawn | Le proposant l’a retiré. | Aucun. |
superseded | Une proposition plus récente pour la même liste de lecture ou écran l’a remplacée ; superseded_by la nomme. | Suivez la revue la plus récente. |
stale | La liste de lecture en direct a changé après la proposition, ou son étiquette, dossier ou sélecteurs all joueraient maintenant des médias qu’elle n’a pas vus lors de la proposition, donc elle ne peut pas s’appliquer comme révisée. Une révision média devient périmée lorsque les listes de lecture qu’elle liste changent, et une modification protégée lorsque sa campagne ou son dossier change. | Relire la liste de lecture, la campagne ou le dossier et proposer par-dessus. Une révision de média périmée est remplacée par une nouvelle en quelques secondes. |
reviews list#
Lister les avis, les plus récents d’abord.
reviews list [--state pending|decided|all] [--kind playlist_change|screen_change|ad_creative|protected_change]
[--limit N] [--cursor CURSOR]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--state STATE | string | non | pending | pending, decided ou all. |
--kind KIND | string | non | chaque type | playlist_change, screen_change, ad_creative ou protected_change. |
--limit N | integer | non | 50 | Révisions par page, de 1 à 100. |
--cursor CURSOR | string | non | la première page | Le next_cursor de la page précédente. |
screenrig reviews list --state all
screenrig reviews list --kind protected_changeLe résultat porte pending_count et next_cursor, null sur la dernière page. Une session voit les types que ses capacités lisent : playlists pour les changements de liste de lecture, screens pour les changements d’écran et protégés, et advertising pour les créations publicitaires.
reviews show#
Lire une critique.
reviews show <id>| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<id> | string | oui | aucun | L’identifiant de révision du résultat pending_review, ou celui d’une révision de création publicitaire. |
screenrig reviews show rvw_LOBBYLa révision rapporte son state, le proposant, votre note, le decision_note qu’une personne a laissé en rejetant ou en demandant des modifications, et impact.screens. Un changement de liste de lecture ajoute le diff, un preview des listes de lecture en direct et proposées (aucun pour une révision de média), media_change pour une révision de média, et media_playlists, les listes de lecture dont la sélection est modifiée par le changement. Pour un changement d’écran, blockers liste les révisions de liste de lecture qu’une personne décide d’abord, avec leur état actuel, et après approbation result (matched, succeeded, failed, et applying tant qu’une grande flotte termine). Un remplacement ou une restauration de média n’a pas non plus d’aperçu : media_replace contient le fichier actuellement en service (before) et le fichier que l’approbation met en service (after), chacun avec content_type, bytes et sha256, la version qu’il devient, sa source (replace ou restore), votre note, aspect_changed et les playlists qui utilisent le média. Une révision protected_change (type de sujet campaign, screen_folder ou screen) rapporte protected_change : son subkind, et le nom, la liste de lecture et l’audience de la campagne, le nom et le parent du dossier, ou les écrans et dossiers déplacés et leur destination. protected vaut true sur elle et sur un changement d’écran qui a atteint un écran protégé.
reviews withdraw#
Retirez votre propre proposition en attente.
reviews withdraw <id>| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<id> | string | oui | aucun | Une révision en attente proposée cette session. |
screenrig reviews withdraw rvw_LOBBYRien n’atteint les écrans, et une nouvelle liste de lecture retirée reste non approuvée. Une révision qui n’est plus en attente répond review_not_pending (sortie 5).
Notes du projet
Les notes de projet sont de courtes notes en texte brut que les agents laissent sur un projet pour leurs sessions ultérieures et pour les autres. Chaque agent du projet lit chaque note, et en écrire une nécessite un accès Proposer ou Gérer. Une note est un contexte écrit par un agent, jamais une instruction ni une approbation. Lisez les notes au début d’une session dans un projet, avant de modifier quoi que ce soit.
Une note sans TTL revient en révision 90 jours après son ajout ou sa dernière confirmation. La première page de notes list renvoie jusqu’à cinq notes dues dans review, avec l’avertissement notes_due_for_review : confirmez celles qui tiennent encore et résolvez les autres. Une note due que personne ne confirme se résout d’elle-même 30 jours après avoir été renvoyée à un agent avec accès Proposer ou Gérer. Une note avec --ttl se résout d’elle-même à l’expiration de son délai, et la suppression de l’écran ou de la liste de lecture concernée résout la note. Les notes résolues restent lisibles 30 jours, puis sont supprimées. Une organisation contient au maximum 200 notes ouvertes, tous projets confondus.
agent status et login ajoutent l’avertissement notes_waiting lorsque les notes sont nouvelles ou à revoir. screen show et playlist show ajoutent notes_about_resource lorsque des notes ouvertes concernent cet écran ou cette liste de lecture. Ajouter une note ajoute note.added au journal des événements et en résoudre une ajoute note.resolved ; aucune ne contient le texte de la note. Lire les notes ne débite pas le compteur.
notes list#
Lire les notes du projet, les plus récentes d’abord. screenrig notes exécute la même commande.
notes list [--all | --resolved] [--about ID] [--author AGENT_ID] [--limit N] [--after CURSOR]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--all | drapeau | non | notes ouvertes | Inclure les notes résolues. |
--resolved | drapeau | non | notes ouvertes | Seules les notes résolues. |
--about ID | string | non | chaque note | Seules les notes concernant un écran ou une liste de lecture : screen:ID, playlist:ID, ou l’id. |
--author AGENT_ID | string | non | chaque auteur | Seulement les notes écrites par cet agent, selon son identifiant agt_. |
--limit N | integer | non | 50 | Taille de la page, de 1 à 200. |
--after CURSOR | string | non | la première page | Le next_cursor de la page précédente. |
screenrig notesChaque note contient son author (le nom et le type de l’agent), created_at, about, et deux indicateurs : new pour une note qu’un autre agent a écrite depuis votre dernière lecture, et due pour une note à réviser. La première page de notes ouvertes sans --about ni --author correspond à votre lecture : elle déplace votre marqueur de lecture (la lecture d’un agent Lecture seule ne déplace rien), donc new et counts.new décrivent ce qui a changé depuis votre lecture précédente.
notes show#
Lire une note, ouverte ou résolue.
notes show <id>| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<id> | string | oui | aucun | L’identifiant nte_ de la note. |
screenrig notes show nte_01EXAMPLENOTE000000000notes add#
Écrivez une note pour les agents du projet.
notes add <text> [--about ID] [--ttl DURATION] [--replaces ID]
notes add --file FILE [--about ID] [--ttl DURATION] [--replaces ID]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<text> | string | l’un des deux | aucun | La note : de 1 à 2 000 caractères de texte brut après suppression des espaces inutiles, ou - pour la lire depuis l’entrée standard. |
--file FILE | chemin | l’un des deux | aucun | Lire la note depuis un fichier, ou - pour l’entrée standard. |
--about ID | string | non | le projet entier | Lier la note à un écran ou une liste de lecture : screen:ID, playlist:ID ou l’identifiant. |
--ttl DURATION | string | non | révision après 90 jours | Résoudre automatiquement la note après cette durée, en heures ou jours de 1h à 365d, par exemple 12h ou 3d. |
--replaces ID | string | non | aucun | Une note ouverte que celle-ci remplace ; elle est résolue comme remplacée. |
screenrig notes add "The lobby screen is mounted in portrait: design for 1080x1920." --about screen:scr_01EXAMPLESCREEN00000000Écrivez des faits sur lesquels un autre agent agirait, jamais des rapports d’avancement ou du clavardage. Une note dont le texte (ignorant la casse et l’espacement) et le sujet répètent une note ouverte confirme cette note au lieu d’en ajouter une, avec l’avertissement note_matched_open. Le texte en forme d’identifiants est refusé avec note_contains_credential, et le texte qui ressemble à une instruction à un modèle avec note_rejected ; rien n’est stocké. La 201e note ouverte dans les projets de l’organisation est refusée avec note_limit_reached, dont le détail nomme les notes à résoudre d’abord.
notes confirm#
Indique qu’une note ouverte est toujours en cours. Sa prochaine révision est dans 90 jours.
notes confirm <id>| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<id> | string | oui | aucun | L’identifiant nte_ d’une note ouverte. |
screenrig notes confirm nte_01EXAMPLENOTE000000000Une note qui n’est pas ouverte est refusée avec note_not_open (sortie 5).
notes resolve#
Résoudre une note ouverte qui est erronée ou n’est plus vraie.
notes resolve <id> <reason>| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<id> | string | oui | aucun | L’identifiant nte_ d’une note ouverte. |
<reason> | string | oui | aucun | Ce qui est vrai maintenant, de 1 à 500 caractères. Les mots après l’identifiant forment la raison. |
screenrig notes resolve nte_01EXAMPLENOTE000000000 "The lobby screen was remounted in landscape."Une note qui n’est pas ouverte est refusée avec note_not_open (sortie 5).
Commentaires
Un commentaire est l’objet JSON propre à l’agent attaché à un écran, une liste de lecture ou une page de liste de lecture. L’UTF-8 compact de cet objet fait au maximum 1 KiB, est imbriqué sur 32 niveaux au plus, et la valeur doit être un objet. screenRIG ne le lit jamais, ne l’envoie jamais aux Lecteurs, et ne le traite jamais comme une autorisation. Il n’apparaît pas dans le manifeste d’exécution et ne fait pas avancer une révision, donc ces commandes ne prennent pas de
--expect-rev: la dernière écriture l’emporte.La lecture des commentaires exige l’accès Lecture seule, et leur écriture exige Propose ou Gérer.
comment show#Lire l’objet commentaire sur un écran, une liste de lecture ou une page de liste de lecture.
<id>scr_oupl_, correspondant au mot cible.--page PAGE_IDUn commentaire non défini se lit comme
{ "comments": null }.screen showetplaylist showincluentcommentsquand le serveur l’envoie.comment set#Écrivez l’objet commentaire.
<id>scr_oupl_.--json-value JSON--file FILE-pour l’entrée standard.--page PAGE_IDLa création et la mise à jour de liste de lecture ne peuvent pas définir de commentaires ; c’est ce à quoi servent ces commandes.
comment delete#Supprimer l’objet commentaire.
<id>scr_oupl_.--page PAGE_IDSupprimer un commentaire qui n’est pas défini réussit.