AGENDAMENTOS DO AI STUDIO (FASE 18) · TR3S Marketing Digital

Plano de Teste E2E dos Agendamentos

BLOCOS10
CASOS32
CRÍTICOS9
PILOTO21/09/2026
Como ler este planoCada caso descreve uma ação e o resultado esperado. Casos com código em vermelho são críticos: bloqueiam o uso com clientes reais. A execução de referência é o piloto de 21/09/2026 no cliente de QA, com cada evidência conferida na origem (banco, API, execuções do n8n e telas em produção). Nenhum cliente real foi usado.
Onde acompanharPágina de gestão no AI Studio: aistudio.tr3smarketingdigital.com.br/agendamentos. Lista, calendário, ocorrências, ações em massa e, para admin, os ajustes do agendador. Saúde pública em /api/v1/health/scheduler e no card AI Studio · Agendador do Painel Principal.

P0Pré-condições

Sem isto, qualquer falha nos casos vira falso negativo. Confira antes de rodar.

#ItemComo conferirCritério de pronto
0.1Agendador ligadoVariável SCHEDULES_ENABLED no container do Studiotrue e log do ticker ativo a cada 60 s
0.2Chave do O.SChave os-agendamentos na API v1Escopos schedules:read, schedules:write e runs:read; segredo só no cofre
0.3SaúdeGET /api/v1/health/schedulerok: true, heartbeat com menos de 3 voltas
0.4Projeto únicoCliente de QA com agente plano-de-conteudoUm projeto só, garantido pelo índice único projects_client_agent_uidx
0.5OrçamentoOrçamento de escopo schedulesUS$ 50 por mês, ativo
0.6AvisosWorkflows do n8n de aviso ao grupo internoAviso de rascunho pronto e alerta do agendador ativos
Bloco A · Criação

Quem cria, por onde, e o que o sistema recusa antes de gastar qualquer token.

A1Membro cria pela página com prévia do mês seguinte

Fase 1 sozinhoObjetivo: um membro cria o agendamento mensal e vê, antes de salvar, o texto exato que o agente vai receber.

1
AçãoNovo agendamento: cliente de QA, Plano de Conteúdo, todo dia 20 às 09:00.
EsperadoPrévia da próxima ocorrência gerando o mês seguinte, sem variável sobrando.

A2Chave do O.S cria pausado, com idempotência

Fase 1 sozinhoObjetivo: a esteira cria o agendamento padrão pausado e pode repetir a chamada sem duplicar.

1
AçãoPOST /api/v1/schedules com a chave do O.S, status pausado e Idempotency-Key.
Esperado201 na primeira chamada; a repetição devolve o mesmo agendamento.

A3Segundo recorrente no mesmo projeto é recusado

Fase 1 sozinhoObjetivo: um projeto tem no máximo um agendamento recorrente por agente.

1
AçãoCriar outro mensal de Plano de Conteúdo para o mesmo cliente.
EsperadoRecusa 409 apontando o agendamento que já existe.

A4Cliente fora do padrão é recusado

Fase 1 sozinhoObjetivo: só cliente ativo e com slug de letras e dígitos recebe agendamento.

1
AçãoCriar agendamento para um cliente inválido.
EsperadoRecusa 422 antes de gravar.
Bloco B · Disparo

O ticker de 60 s reivindica o agendamento vencido e despacha a run pela fila própria.

B1Execução única dispara e conclui

Fase 1 sozinhoObjetivo: um agendamento para daqui a 5 minutos passa por planejada, na fila, rodando e OK sem ninguém.

1
AçãoCriar um agendamento de uma vez para agora mais 5 minutos.
EsperadoNo minuto previsto a ocorrência nasce, roda e termina conferida no banco.

B2Dispersão no minuto previsto

Fase 1 sozinhoObjetivo: os agendamentos do dia 20 não disparam todos juntos; cada um tem um horário fixo dentro da janela de 60 min.

1
EsperadoHorário efetivo calculado a partir do agendamento, sempre o mesmo, e mostrado na página.
Bloco C · Execução sem humano

Run agendada nunca aprova, publica, fala com cliente ou chama ação que pede confirmação.

C1Nenhuma ação proibida nas runs agendadas

Fase 1 sozinhoObjetivo: as tools com efeito externo ficam fora da run agendada.

1
AçãoConsultar as tools usadas em todas as runs agendadas.
EsperadoNenhuma tool proibida.

C2Tentativa forçada é barrada

Fase 1 sozinhoObjetivo: mesmo que o modelo tente, a ação proibida não executa.

1
EsperadoA chamada volta como erro e a tool não roda.
Bloco D · Saída

O que a equipe recebe: rascunho no painel, conversa no projeto e aviso no grupo interno.

D1Rascunho orgânico no painel

Fase 1 sozinhoObjetivo: a run grava o plano do mês como rascunho no Painel de Planejamentos.

1
EsperadoPlano AAAA-MM orgânico em rascunho, ligado à conversa da run.

D2Outro membro abre a conversa

Fase 1 sozinhoObjetivo: a conversa da run fica no projeto, visível para a equipe.

1
AçãoOutro membro abre a conversa da run.
EsperadoAcesso liberado, com as mensagens e o projeto.

D3Aviso de rascunho pronto no grupo interno

Fase 1 sozinhoObjetivo: quem avisa a equipe é o agendador, com o link da conversa.

Defeito encontrado no pilotoO aviso chegou ao grupo nas duas runs, mas o link apontava para uma rota que não existe e abria página 404. Corrigido para o mesmo link da página e coberto por teste.
1
EsperadoMensagem no grupo interno com cliente, período e link que abre a conversa.

D4Aprovação interna pendente

Fase 1 sozinhoObjetivo: o rascunho entra na fila de aprovação com os lembretes de 1 h e 24 h.

1
EsperadoAprovação pendente criada para a conversa da run.

D5Aprovação no chat gera Doc e tarefas

Fase 1 sozinhoObjetivo: a aprovação interna continua no chat, onde nascem o Google Doc, as tarefas e o aprovado interno.

1
AçãoRevisar o rascunho no chat e aprovar.
EsperadoDoc no Drive, tarefas no ClickUp e plano em aprovado interno.
Bloco E · Atraso e recuperação

Pausa geral no horário do disparo; dentro da janela a run sai atrasada, fora dela vira perdida.

E1Dentro da janela, roda atrasado

Fase 1 sozinhoObjetivo: sair da pausa geral dentro da janela de recuperação faz a run acontecer.

1
AçãoLigar a pausa geral antes do disparo e soltar alguns minutos depois.
EsperadoNada dispara durante a pausa; ao soltar, a run sai e conclui.

E2Fora da janela, perdida e avisada

Fase 1 sozinhoObjetivo: passou da janela, a ocorrência vira perdida, sem gastar token, e a equipe é avisada.

Defeito encontrado no pilotoO agendamento de uma vez ficou ativo e sem próxima data depois de perdido, inflando o contador de ativos. Corrigido: agora conclui.
1
EsperadoOcorrência perdida com o motivo e alerta no grupo interno.
Bloco F · Falha, retentativa e suspensão

Uma falha ganha uma retentativa em 60 min; duas ocorrências falhas seguidas suspendem.

F1Falha, retentativa e contador

Fase 1 sozinhoObjetivo: a primeira falha marca a retentativa; a segunda conta como falha do agendamento.

Defeito encontrado no pilotoNa primeira falha, o agendamento de uma vez já aparecia como concluído, com a retentativa ainda planejada, e não podia mais ser pausado. Corrigido: só conclui quando a retentativa termina. A retentativa de agendamento pausado ou arquivado passou a ser cancelada.
1
AçãoForçar a falha da run (teto de custo baixo).
EsperadoRetentativa 60 min depois; na segunda falha, falhas seguidas igual a 1.

F2Duas ocorrências falhas suspendem

Fase 1 sozinhoObjetivo: dois slots seguidos com falha suspendem o agendamento e avisam o O.S.

1
EsperadoAgendamento suspenso, alerta e evento schedule.paused.

F3Run órfã fecha como órfã

Fase 1 sozinhoObjetivo: uma run interrompida por restart ou deploy não fica presa em execução.

1
AçãoReiniciar o Studio no meio de uma run agendada.
EsperadoEm até 5 min a ocorrência fecha como falha com motivo órfã.
Bloco G · Custo

Teto por ocorrência, checado a cada volta do agente, e orçamento mensal próprio.

G1Teto baixo para a run antes da tool

Fase 1 sozinhoObjetivo: a run para quando o custo passa do teto, antes de gravar qualquer coisa.

1
AçãoAgendamento com teto de US$ 0,10.
EsperadoFalha por teto de custo, sem tool executada.

G2Orçamento sem saldo bloqueia sem contar falha

Fase 1 sozinhoObjetivo: sem saldo no mês, a ocorrência é bloqueada e não suspende o agendamento.

1
EsperadoOcorrência bloqueada por orçamento, sem run e sem somar falha.

G3Alerta de orçamento gravado

Fase 1 sozinhoObjetivo: passar do limite do orçamento gera o alerta do mês.

1
EsperadoAlerta de orçamento gravado uma vez por período.
Bloco H · API, MCP e eventos

O O.S e os assistentes consultam e controlam os agendamentos pela API v1.

H1Chave do O.S cria pausado

Fase 1 sozinhoObjetivo: o kickoff do M05 cria o agendamento padrão sem ligar o custo sozinho.

1
EsperadoAgendamento nasce pausado e a equipe liga pela página.

H2MCP lista e controla

Fase 1 sozinhoObjetivo: as tools de agendamento aparecem no MCP respeitando os escopos da chave.

1
EsperadoTools de agendamento listadas; rodar agora oculto sem o escopo de runs.

H3Evento assinado chega ao consumidor

Fase 1 sozinhoObjetivo: a conclusão da ocorrência chega assinada a quem assinou o evento.

1
EsperadoEntrega de schedule.occurrence.succeeded com assinatura válida.
Bloco I · Saúde

Heartbeat velho nunca aparece verde.

I1Saúde verde com o ticker vivo

Fase 1 sozinhoObjetivo: o endpoint público mostra o agendador rodando.

1
Esperadook: true com o último tick recente.

I2Heartbeat velho responde falso

Fase 1 sozinhoObjetivo: agendador parado aparece como problema, nunca como verde.

1
Esperadook: false e stale: true com heartbeat velho.

I3Card no Painel Principal

Fase 1 sozinhoObjetivo: o card do agendador no Hub reflete a saúde.

1
EsperadoCard AI Studio · Agendador operacional com o agendador ligado.
Bloco J · Página de gestão

Onde a equipe liga, pausa, acompanha e ajusta os agendamentos.

J1Faixa de topo, filtros e abas

Fase 1 sozinhoObjetivo: resumo, custo do mês, saúde, lista com filtros na URL, calendário e ocorrências.

1
EsperadoContadores, custo contra o orçamento, tick do agendador e as três abas funcionando.

J2Ativar selecionados

Fase 1 sozinhoObjetivo: ligar de uma vez os agendamentos propostos pelo kickoff.

1
AçãoMarcar os pausados e clicar em Ativar selecionados.
EsperadoTodos ativos, com a próxima data calculada.

J3Ajustes só para admin

Fase 1 sozinhoObjetivo: pausa geral, teto padrão e orçamento ficam com o admin.

1
AçãoMembro tenta abrir e salvar os ajustes.
Esperado403 para o membro; a tela não oferece o botão.

J4Badge no chat e aba do projeto

Fase 1 sozinhoObjetivo: a conversa da run mostra que é agendada, e o projeto lista os seus agendamentos.

1
EsperadoBadge Agendado com link para o agendamento; aba do projeto legível.

J5Celular

Fase 1 sozinhoObjetivo: a página funciona a 390 px, sem rolagem lateral.

1
EsperadoLista em cartões e cabeçalho sem estourar a largura.

GOLDENGolden set agendado

Qualidade do rascunho gerado sem humano, na rubrica 0 a 5 do Studio.

#CasoResultadoNota
1Briefing completo5 posts, funil 40/40/20, acentuação correta, zero travessão, tudo apoiado no briefing4,6
2Segunda amostra, briefing completoMesma qualidade; lacunas declaradas. O caso de briefing mínimo não foi exercitado4,6
3Plano do mês já aprovadoPulado no preflight, sem run e sem token5,0

OKCritérios de aceite

O agendador atende clientes reais quando todos os itens abaixo forem verdadeiros.

  • Todos os casos críticos aprovados na execução mais recente.
  • Nenhuma ação proibida em run agendada (C1).
  • Nenhuma ocorrência aberta há mais de 2 h depois do horário.
  • Golden set com média maior ou igual a 4 e zero dado inventado.
  • Saúde verde conferida da VPS e card do Hub operacional (I1 e I3).
  • Aviso no grupo interno com link que abre a conversa (D3).