Documentation

Révisions et notes : commandes CLI

Listez, affichez et retirez les révisions des changements d’agent, joignez des commentaires aux écrans et listes de lecture, laissez des notes de projet.

Chaque commande s’exécute comme décrit dans la référence CLI : drapeaux globaux, sortie JSON, codes de sortie, révisions et réessais.

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 :

ÉtatSensÉtape suivante
pendingEn attente d’une personne.Donnez à la personne l’URL de révision ; vérifiez à nouveau plus tard.
approvedAppliqué à la playlist ou aux écrans.Vérifiez à l’écran avec screen show et une capture d’écran.
changes_requestedLa personne a demandé des changements ; decision_note indique lesquels.Réviser et proposer de nouveau avec --note.
rejectedLa personne a refusé ; decision_note indique pourquoi.Ne pas renvoyer la même modification; demandez à la personne.
withdrawnLe proposant l’a retiré.Aucun.
supersededUne 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.
staleLa 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ètreTypeRequisPar défautNotes
--state STATEstringnonpendingpending, decided ou all.
--kind KINDstringnonchaque typeplaylist_change, screen_change, ad_creative ou protected_change.
--limit Nintegernon50Révisions par page, de 1 à 100.
--cursor CURSORstringnonla première pageLe next_cursor de la page précédente.
screenrig reviews list --state all
screenrig reviews list --kind protected_change

Le 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ètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de révision du résultat pending_review, ou celui d’une révision de création publicitaire.
screenrig reviews show rvw_LOBBY

La 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ètreTypeRequisPar défautNotes
<id>stringouiaucunUne révision en attente proposée cette session.
screenrig reviews withdraw rvw_LOBBY

Rien 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).

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.

comment show screen <id>
comment show playlist <id> [--page PAGE_ID]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant scr_ ou pl_, correspondant au mot cible.
--page PAGE_IDstringnonla liste de lecture elle-mêmeUn ID de page de liste de lecture : une lettre, puis jusqu’à 63 lettres, chiffres, traits de soulignement ou traits d’union. Cible uniquement les listes de lecture.
screenrig comment show screen scr_01EXAMPLESCREEN00000000

Un commentaire non défini se lit comme { "comments": null }. screen show et playlist show incluent comments quand le serveur l’envoie.

comment set#

Écrivez l’objet commentaire.

comment set screen <id> (--json-value JSON | --file FILE)
comment set playlist <id> [--page PAGE_ID] (--json-value JSON | --file FILE)
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant scr_ ou pl_.
--json-value JSONstringl’un des deuxaucunUn objet JSON, en ligne.
--file FILEcheminl’un des deuxaucunUn fichier contenant un objet JSON, ou - pour l’entrée standard.
--page PAGE_IDstringnonla liste de lecture elle-mêmeCibles de la liste de lecture uniquement.
screenrig comment set screen scr_01EXAMPLESCREEN00000000 --json-value '{"note":"lobby hours"}'

La 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.

comment delete screen <id>
comment delete playlist <id> [--page PAGE_ID]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant scr_ ou pl_.
--page PAGE_IDstringnonla liste de lecture elle-mêmeCibles de la liste de lecture uniquement.
screenrig comment delete playlist pl_01EXAMPLEPLAYLIST000000 --page poster

Supprimer un commentaire qui n’est pas défini réussit.

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ètreTypeRequisPar défautNotes
--alldrapeaunonnotes ouvertesInclure les notes résolues.
--resolveddrapeaunonnotes ouvertesSeules les notes résolues.
--about IDstringnonchaque noteSeules les notes concernant un écran ou une liste de lecture : screen:ID, playlist:ID, ou l’id.
--author AGENT_IDstringnonchaque auteurSeulement les notes écrites par cet agent, selon son identifiant agt_.
--limit Nintegernon50Taille de la page, de 1 à 200.
--after CURSORstringnonla première pageLe next_cursor de la page précédente.
screenrig notes

Chaque 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ètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant nte_ de la note.
screenrig notes show nte_01EXAMPLENOTE000000000

notes 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ètreTypeRequisPar défautNotes
<text>stringl’un des deuxaucunLa 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 FILEcheminl’un des deuxaucunLire la note depuis un fichier, ou - pour l’entrée standard.
--about IDstringnonle projet entierLier la note à un écran ou une liste de lecture : screen:ID, playlist:ID ou l’identifiant.
--ttl DURATIONstringnonrévision après 90 joursRésoudre automatiquement la note après cette durée, en heures ou jours de 1h à 365d, par exemple 12h ou 3d.
--replaces IDstringnonaucunUne 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ètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant nte_ d’une note ouverte.
screenrig notes confirm nte_01EXAMPLENOTE000000000

Une 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ètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant nte_ d’une note ouverte.
<reason>stringouiaucunCe 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).

Autres groupes de commandes