Pular para o conteúdo principal

Server-Sent Events (SSE)

O progresso do processamento é transmitido em tempo real por Server-Sent Events, permitindo acompanhar cada etapa da pipeline sem polling.

Endpoint

GET /projects/:id/status

A conexão permanece aberta durante o processamento e envia uma mensagem a cada atualização de progresso.

Formato das mensagens

Cada mensagem é um JSON:

{
"stepId": "enrich",
"projectId": "uuid",
"progress": 75,
"stepStatus": "active",
"message": "Gerando legendas para o clipe 3/8...",
"status": "Processando"
}
CampoTipoDescrição
stepIdstringEtapa atual da pipeline (ver tabela abaixo)
projectIdstringID do projeto
progressnumberProgresso da etapa (0–100)
stepStatusstringactive, done ou failed
messagestringMensagem descritiva do momento atual
statusstringStatus geral do projeto

Etapas da pipeline

stepIdEtapa
analyzeAnálise da URL
downloadDownload do vídeo
trimCorte do intervalo
audioExtração de áudio
fast_transcribeTranscrição rápida
clipsGeração de cortes
enrichLegendas e enriquecimento
publishPublicação final

A descrição de cada etapa está em Pipeline de processamento.

Status do projeto

StatusSignificado
AguardandoNa fila de processamento
ProcessandoPipeline em execução
ConcluídoProcessamento finalizado
FalhouErro no processamento
CanceladoCancelado pelo usuário

Exemplo de consumo

const es = new EventSource(`/api/projects/${id}/status`);

es.onmessage = (event) => {
const msg = JSON.parse(event.data);

if (msg.stepId) {
// atualizar o progresso da etapa na interface
}

if (["Concluído", "Falhou", "Cancelado"].includes(msg.status)) {
es.close();
}
};

es.onerror = () => {
es.close();
};

:::tip Encerre a conexão Feche o EventSource ao receber um status terminal (Concluído, Falhou, Cancelado) para liberar a conexão. :::


Próximos passos: Projetos · Pipeline do worker