Revisões
Quando um projeto requer revisão para mudanças de agente, ou a sessão tem acesso Propor, mudanças em playlist e tela aguardam uma pessoa em vez de aplicar. O comando ainda é bem-sucedido: ok: true, sair 0, a resposta do servidor em data, e um aviso 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" }]
}Criação e atualização de playlist (incluindo playlist import e playlist replace-release --apply), screen publish, screen assign, screen schedule set, clear e restore, e screen takeover e takeover clear aguardam revisão, para uma tela ou frota. Uma mudança na frota é uma revisão: sua tag é resolvida quando uma pessoa aprova, e reviews show então reporta o resultado de cada tela; uma grande frota termina a aplicação em segundo plano, e screen_change.result.applying é true até que todas as telas tenham seu resultado. Além das mudanças de mídia abaixo, toda outra mudança responde 403 insufficient_access para uma sessão Propose. --note TEXT nesses comandos envia uma nota em texto simples, com no máximo 280 caracteres, que o revisor lê no dashboard.
Uma pessoa aprova, solicita alterações ou rejeita na página Reviews do dashboard; agentes não podem aprovar alterações de playlist ou tela. Uma alteração aprovada aplica-se como se tivesse sido feita então, e seus eventos nomeiam a pessoa que aprovou e o agente que a propôs. Não faça polling, pause ou repita a escrita enquanto uma revisão aguarda: verifique depois com reviews show, ou siga review.approved, review.rejected e review.changes_requested com events follow --type review..
Mudanças na mídia também aguardam uma sessão Propose. Seletor de tag, pasta e all ignoram um novo upload até que uma pessoa o aprove, e a mídia aprovada que a sessão retagueia ou move continua sendo reproduzida com suas tags e pasta aprovadas até que a mudança seja aprovada. A retag responde ok, saída 0, com aviso media_review_pending, e a revisão do item aparece em reviews list em segundos; não faça polling, pause ou tente novamente. Cada item recebe uma revisão, tipo playlist_change com operação selector_refresh e um assunto media: media_change mostra suas tags e pasta before e after (before é null para um novo upload), e media_playlists lista todas as playlists aprovadas e todas as playlists propostas aguardando revisão que a mudança adiciona ou remove (media_added, media_removed), com suas telas. Aprovar aplica a mudança a todas; rejeitar, solicitar alterações ou retirar coloca o item retagueado ou movido de volta como foi aprovado, e um novo upload permanece não reproduzido. Uma mudança que não altera nenhuma playlist aprovada nem proposta aplica-se sozinha, e uma playlist que nomeia o item por id o carrega em sua própria revisão. Quando essas playlists avançam antes que uma pessoa decida, a revisão da mídia fica stale e uma nova substitui em segundos.
Uma substituição ou restauração de mídia de uma sessão Propose também aguarda, como uma revisão playlist_change com a operação media_replace e um assunto media: reviews show informa o arquivo em uso agora e o arquivo que a aprovação coloca em uso, e a mídia continua reproduzindo o arquivo atual até que uma pessoa aprove.
Um projeto com uma pasta protegida envia toda alteração que alcança uma de suas telas a um segundo aprovador, em qualquer nível de acesso, inclusive Manage. Atribuições, programações de playlists e takeovers são revisões screen_change com protected: true. Criar, alterar, pausar, retomar ou excluir uma campanha, criar, alterar ou excluir uma pasta de telas ou remover sua proteção, e mover uma tela são revisões protected_change, listadas com reviews list --kind protected_change. Uma pessoa diferente de você, e diferente da pessoa para quem você trabalha, decide (second_approver_required, exit 3, quando a pessoa errada tenta), e review_stale (exit 5) significa que a campanha ou a pasta mudou depois da proposta: leia de novo e proponha de novo. Uma alteração sem forma de revisão é recusada com protected_target (exit 5). Um solicitante limitado a pastas de telas só lê e retira revisões cujo alcance inteiro está dentro do seu escopo.
Estados da revisão:
| Estado | Significado | Próximo passo |
|---|---|---|
pending | Aguardando uma pessoa. | Dê à pessoa a URL da revisão; verifique novamente depois. |
approved | Aplicado à playlist ou telas. | Verifique na tela com screen show e uma captura de tela. |
changes_requested | A pessoa pediu mudanças; decision_note indica quais. | Revise e proponha novamente com --note. |
rejected | A pessoa recusou; decision_note indica o motivo. | Não reenvie a mesma alteração; pergunte à pessoa. |
withdrawn | O proponente retirou a proposta. | Nenhum. |
superseded | Uma proposta mais recente para a mesma playlist ou tela a substituiu; superseded_by a nomeia. | Siga a revisão mais recente. |
stale | A playlist ao vivo mudou após a proposta, ou sua tag, pasta ou seletores all agora reproduziriam mídia que não viu quando proposta, então não pode ser aplicada como revisada. Uma revisão de mídia fica stale quando as playlists que lista mudam, e uma alteração protegida fica stale quando sua campanha ou sua pasta muda. | Ler a playlist, a campanha ou a pasta novamente e propor sobre ela. Uma revisão de mídia desatualizada é substituída por uma nova em segundos. |
reviews list#
Listar avaliações, da mais recente para a mais antiga.
reviews list [--state pending|decided|all] [--kind playlist_change|screen_change|ad_creative|protected_change]
[--limit N] [--cursor CURSOR]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
--state STATE | string | não | pending | pending, decided ou all. |
--kind KIND | string | não | todo tipo | playlist_change, screen_change, ad_creative ou protected_change. |
--limit N | integer | não | 50 | Revisões por página, de 1 a 100. |
--cursor CURSOR | string | não | a primeira página | O next_cursor da página anterior. |
screenrig reviews list --state all
screenrig reviews list --kind protected_changeO resultado carrega pending_count e next_cursor, null na última página. Uma sessão vê os tipos que suas capacidades leem: playlists para mudanças na playlist, screens para mudanças na tela e mudanças protegidas e advertising para criativos de anúncios.
reviews show#
Leia uma avaliação.
reviews show <id>| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id da revisão do resultado pending_review ou o de uma revisão de criativo de anúncio. |
screenrig reviews show rvw_LOBBYA revisão informa seu state, o proponente, sua note, o decision_note que uma pessoa deixou ao rejeitar ou solicitar alterações, e impact.screens. Uma mudança na playlist adiciona o diff, um preview das playlists ao vivo e propostas (nenhum para uma revisão de mídia), media_change para uma revisão de mídia, e media_playlists, as playlists cuja seleção a mudança altera. Para uma mudança de tela, blockers lista as revisões de playlist que uma pessoa decide primeiro, com seu estado atual, e, após a aprovação, result (matched, succeeded, failed e applying enquanto uma frota grande termina). Uma substituição ou restauração de mídia também não tem prévia: media_replace contém o arquivo em uso agora (before) e o arquivo que a aprovação coloca em uso (after), cada um com content_type, bytes e sha256, a version em que se torna, sua source (replace ou restore), sua note, aspect_changed e as playlists que usam a mídia. Uma revisão protected_change (tipo de assunto campaign, screen_folder ou screen) informa protected_change: seu subkind, e o nome, a playlist e o público da campanha, o nome e o pai da pasta, ou as telas e pastas movidas e para onde. protected é true nela e em uma mudança de tela que alcançou uma tela protegida.
reviews withdraw#
Retire sua própria proposta pendente.
reviews withdraw <id>| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | Uma revisão pendente proposta nesta sessão. |
screenrig reviews withdraw rvw_LOBBYNada chega às telas, e uma nova playlist retirada permanece não aprovada. Uma revisão que não está mais pendente responde review_not_pending (saída 5).
Notas do projeto
Notas do projeto são notas curtas em texto simples que agentes deixam em um projeto para suas sessões futuras e para os outros. Todo agente no projeto lê todas as notas, e escrever uma requer acesso Propor ou Gerenciar. Uma nota é um contexto escrito por um agente, nunca uma instrução e nunca uma aprovação. Leia as notas ao iniciar uma sessão em um projeto, antes de alterar qualquer coisa.
Uma nota sem TTL aparece para revisão 90 dias após ter sido adicionada ou confirmada pela última vez. A primeira página de notes list retorna até cinco notas pendentes em review, com o aviso notes_due_for_review: confirme as que ainda são válidas e resolva as demais. Uma nota pendente que ninguém confirma se resolve automaticamente 30 dias após ter sido retornada pela primeira vez a um agente com acesso Propose ou Manage. Uma nota com --ttl se resolve quando seu tempo expira, e excluir a tela ou playlist relacionada resolve a nota. Notas resolvidas permanecem legíveis por 30 dias, depois são excluídas. Uma organização mantém no máximo 200 notas abertas em todos os seus projetos.
agent status e login adicionam o aviso notes_waiting quando notas são novas ou estão para revisão. screen show e playlist show adicionam notes_about_resource quando notas abertas são sobre essa tela ou playlist. Adicionar uma nota acrescenta note.added ao registro de eventos e resolver uma acrescenta note.resolved; nenhuma carrega o texto da nota. Ler notas não debita o medidor.
notes list#
Ler as notas do projeto, mais recentes primeiro. screenrig notes executa o mesmo comando.
notes list [--all | --resolved] [--about ID] [--author AGENT_ID] [--limit N] [--after CURSOR]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
--all | flag | não | abrir notas | Inclua notas resolvidas. |
--resolved | flag | não | abrir notas | Só notas resolvidas. |
--about ID | string | não | toda nota | Só notas sobre uma tela ou playlist: screen:ID, playlist:ID, ou o id. |
--author AGENT_ID | string | não | todo autor | Apenas notas escritas por este agente, pelo seu id agt_. |
--limit N | integer | não | 50 | Tamanho da página, de 1 a 200. |
--after CURSOR | string | não | a primeira página | O next_cursor da página anterior. |
screenrig notesCada nota carrega seu author (nome e tipo do agente), created_at, about e dois marcadores: new para uma nota que outro agente escreveu desde sua última leitura, e due para uma nota pendente de revisão. A primeira página de notas abertas sem --about ou --author é sua leitura: ela move seu marcador de leitura (a leitura de um agente apenas leitura não move nada), então new e counts.new descrevem o que mudou desde sua leitura anterior.
notes show#
Leia uma nota, aberta ou resolvida.
notes show <id>| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id da nota nte_. |
screenrig notes show nte_01EXAMPLENOTE000000000notes add#
Escreva uma nota para os agentes do projeto.
notes add <text> [--about ID] [--ttl DURATION] [--replaces ID]
notes add --file FILE [--about ID] [--ttl DURATION] [--replaces ID]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<text> | string | um dos dois | nenhum | A nota: 1 a 2000 caracteres de texto simples após aparar, ou - para lê-la da entrada padrão. |
--file FILE | caminho | um dos dois | nenhum | Ler a nota a partir de um arquivo, ou - para entrada padrão. |
--about ID | string | não | o projeto inteiro | Vincule a nota a uma tela ou playlist: screen:ID, playlist:ID ou o id. |
--ttl DURATION | string | não | revisão após 90 dias | Resolver a nota automaticamente após este tempo, em horas ou dias de 1h até 365d, como 12h ou 3d. |
--replaces ID | string | não | nenhum | Uma nota aberta que esta substitui; ela é resolvida como substituída. |
screenrig notes add "The lobby screen is mounted in portrait: design for 1080x1920." --about screen:scr_01EXAMPLESCREEN00000000Escreva fatos que outro agente agiria, nunca relatórios de progresso ou bate-papo. Uma nota cujo texto (ignorando maiúsculas, minúsculas e espaçamento) e assunto repetem uma nota aberta confirma essa nota em vez de adicionar uma, com o aviso note_matched_open. Texto em formato de credencial é recusado com note_contains_credential, e texto que parece uma instrução para um modelo com note_rejected; nada é armazenado. A 201ª nota aberta nos projetos da organização é recusada com note_limit_reached, cujo detalhe nomeia notas para resolver primeiro.
notes confirm#
Diz que uma nota aberta ainda está válida. Sua próxima revisão é daqui a 90 dias.
notes confirm <id>| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id nte_ de uma nota aberta. |
screenrig notes confirm nte_01EXAMPLENOTE000000000Uma nota que não está aberta é recusada com note_not_open (exit 5).
notes resolve#
Resolver uma nota aberta que está errada ou não é mais verdadeira.
notes resolve <id> <reason>| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id nte_ de uma nota aberta. |
<reason> | string | sim | nenhum | O que é verdade agora, de 1 a 500 caracteres. As palavras depois do id formam o motivo. |
screenrig notes resolve nte_01EXAMPLENOTE000000000 "The lobby screen was remounted in landscape."Uma nota que não está aberta é recusada com note_not_open (exit 5).
Comentários
Um comentário é o próprio objeto JSON do agente anexado a uma tela, uma playlist ou uma página de playlist. UTF-8 compacto desse objeto tem no máximo 1 KiB, no máximo 32 níveis de aninhamento, e o valor deve ser um objeto. screenRIG nunca o lê, nunca o envia para Players, e nunca o trata como autorização. Não aparece no manifesto em tempo de execução e não incrementa uma revisão, então esses comandos não tomam
--expect-rev: a última gravação vence.Ler comentários exige acesso somente leitura, e escrevê-los exige Propor ou Gerenciar.
comment show#Ler o objeto de comentário em uma tela, uma playlist ou uma página de playlist.
<id>scr_oupl_, correspondendo à palavra alvo.--page PAGE_IDUm comentário não definido é lido como
{ "comments": null }.screen showeplaylist showincluemcommentsquando o servidor o envia.comment set#Escreva o objeto de comentário.
<id>scr_oupl_.--json-value JSON--file FILE-para a entrada padrão.--page PAGE_IDCriação e atualização de playlist não podem definir comentários; para isso existem esses comandos.
comment delete#Remover o objeto de comentário.
<id>scr_oupl_.--page PAGE_IDExcluir um comentário que não está definido tem sucesso.