|
Documentação
Marcar uma demonstraçãoPlataforma
PlataformaMCPCLIAPI
Workflows
GuiasChangelog

Boas-vindas

  • Visão geral
  • Autenticação
  • Erros e códigos de estado
  • Assinaturas de webhook

Localização

  • Visão geral
  • Criar jobs
  • Bloquear chaves não traduzíveis
  • Acompanhar um grupo de jobs
  • Obter um trabalho
  • Listar tarefas
  • Entrega de webhooks
  • Progresso em tempo real (WebSocket)

Pipeline

  • Visão geral
  • Edição por IA pré-localização
  • Revisão humana
  • avaliação por IA (post-edit)
  • Reformular para soar natural
  • Verificação por retrotradução
  • Configurar o pipeline
  • Observar execuções do pipeline

Provisionamento

  • Visão geral
  • Criar uma tarefa de aprovisionamento
  • Tipos de fonte
  • O que a IA extrai
  • Entrega de webhook
  • Progresso em tempo real (WebSocket)

Síncrono

  • Localize
  • Recognize

Gestão do motor

  • Sugestões do motor

Observar execuções do pipeline

Cada etapa ativa do pipeline deixa um registo no job, para que possa ver o que correu em vez de apenas confiar que correu.

Ativou algumas etapas do pipeline — talvez pré-edição para limpar a origem e retrotradução para detetar desvios — e um job voltou completed_with_warnings. Que etapa falhou? O revisor humano chegou a pegá-lo, ou deixou expirar o prazo? Quanto custaram as etapas extra? Um pipeline que executa várias etapas de IA e humanas por idioma é exatamente o tipo de coisa que se transforma numa caixa-preta: sai um resultado e fica-se a acreditar que as etapas intermédias fizeram o seu trabalho.

Aqui não lhe pedem um ato de fé. Cada etapa ativa escreve um registo no array steps[] do job — que etapa, com que estado, com que custo, quando começou e quando terminou. Lê o que cada etapa fez; não parte do princípio de que correu. Esse é todo o objetivo desta página.

Ainda não conhece o pipeline? Comece pela Visão geral do pipeline.

Nesta página

  • Onde ficam os registos
  • O array steps
  • Mapear um stepId para uma etapa
  • Estado da etapa: concluído, falhado, ignorado
  • Como uma falha numa etapa se torna um aviso no job

Onde ficam os registos#

O array steps[] é um campo do job de localização. Não precisa de o pedir à parte — vem sempre que lê o job:

text
GET /jobs/localization/:jobId

Autentique-se com a sua chave de API no cabeçalho X-API-Key. O endpoint completo, os valores de estado do job e o payload outputData são abordados na página do job individual; esta página centra-se num campo dessa resposta — o histórico por etapa — e no que ele lhe mostra.

A regra, por isso, é simples: cada job que lê já traz o seu próprio registo de auditoria. Um job sem pipeline ativado mostra um único registo, porque a localização principal corre sempre. Ative duas etapas opcionais e passa a ter três registos. O array cresce com o pipeline, uma entrada por etapa, pela ordem em que as etapas correram.

O array steps#

Cada entrada em steps[] é o registo de uma etapa. Estes são os campos a ler para auditar uma execução — que etapa foi, com que resultado, com que custo e em que momento:

json
"steps": [
  {
    "stepId": "preEdit",
    "type": "action",
    "status": "completed",
    "errorMessage": null,
    "costUsd": 0.0012,
    "externalRefType": null,
    "externalRefId": null,
    "externalRefUrl": null,
    "createdAt": "2026-03-16T10:30:01.000Z",
    "startedAt": "2026-03-16T10:30:01.000Z",
    "completedAt": "2026-03-16T10:30:02.000Z"
  },
  {
    "stepId": "localize",
    "type": "action",
    "status": "completed",
    "errorMessage": null,
    "costUsd": 0.0184,
    "externalRefType": null,
    "externalRefId": null,
    "externalRefUrl": null,
    "createdAt": "2026-03-16T10:30:02.000Z",
    "startedAt": "2026-03-16T10:30:02.000Z",
    "completedAt": "2026-03-16T10:30:05.000Z"
  }
]
CampoDescrição
stepIdA que etapa do pipeline este registo corresponde. Veja a tabela de mapeamento abaixo.
typeO tipo de etapa. action para uma etapa automatizada.
statuscompleted, failed ou skipped para esta etapa — independentemente do estado do job.
errorMessagePorque é que esta etapa falhou. null, a menos que status seja failed.
costUsdQuanto custou esta etapa, em USD — um número JSON ou null.
externalRefType, externalRefId, externalRefUrlUm apontador para um registo externo para etapas que entregam trabalho a terceiros — a etapa de revisão humana. null para etapas totalmente automatizadas.
createdAt, startedAt, completedAtQuando a etapa foi criada, recolhida e concluída.

Cada registo também inclui um campo outputData — o conteúdo que essa etapa produziu, com a mesma estrutura do outputData do job. Esse payload é a tradução, não o registo de auditoria, por isso está documentado na página do job individual juntamente com o outputData ao nível do job; os campos acima são os que lê para ver o que o pipeline fez.

Há duas coisas que estes registos lhe dão e que um único bloco outputData não dá. Primeiro, o custo é discriminado por etapa, não apenas totalizado por job — por isso, quando ativa a retrotradução e a fatura muda, pode ver exatamente que etapa a fez subir. Segundo, o tempo é por etapa — um registo humanEdit cujos startedAt e completedAt estão separados por horas diz-lhe que a espera foi do humano, não do motor.

Leia steps pelo stepId, não pela posição

Os registos aparecem por ordem de execução, mas não indexe o array pela posição — as etapas que correram dependem das que ativou, por isso a posição não é estável entre jobs. Encontre uma etapa pelo respetivo stepId (steps.find(s => s.stepId === "humanEdit")). O conjunto de valores stepId é fixo; o conjunto presente em cada job depende do que ativou.

Mapear um stepId para uma etapa#

Cada stepId identifica uma etapa do pipeline. Esta é a tabela de correspondência entre o valor no registo, a etapa que representa e a página que documenta o que essa etapa faz:

stepIdEtapa
preEditEdição por IA antes da localização
localizeLocalização principal
humanEditRevisão humana pós-localização
postEditavaliação por IA pós-localização
rephraseReformular para soar natural
backTranslationVerificação por retrotradução

localize é o único stepId que aparece em todos os jobs, com pipeline ou sem ele — é a etapa principal de tradução, e corre sempre. As outras cinco só aparecem quando ativa essa etapa no motor ou no pedido.

Estado da etapa: concluído, falhado, ignorado#

Cada etapa tem o seu próprio status, definido independentemente do job e de todas as outras etapas. Há três valores:

status da etapaSignificado
completedA etapa correu e produziu o respetivo resultado.
failedA etapa correu e deu erro. errorMessage diz porquê.
skippedA etapa não chegou ao fim desta vez, embora estivesse ativada.

completed e failed leem-se como seria de esperar. skipped é o que merece uma pausa, porque não é o mesmo que "desativada". Uma etapa que nunca ativou não produz registo nenhum. Um registo skipped significa que a etapa estava ativada, mas foi passada à frente por uma razão definida pelo pipeline — o caso mais claro é a revisão humana: se a janela de revisão fechar sem resposta humana, essa etapa fica marcada como skipped e a tradução por IA segue como final. O registo continua lá, por isso a omissão fica visível em vez de passar despercebida.

O estado de uma etapa não é o estado do job

Uma etapa failed nem sempre significa um job failed. A maioria das etapas opcionais não é crítica: quando uma falha, o respetivo registo fica como failed, o motor transporta o último resultado válido para a frente e o job continua a terminar com outputData. O estado de job resultante — completed_with_warnings — é explicado na página do job individual. O estado da etapa diz-lhe o que aconteceu numa etapa; o estado do job diz-lhe se recebeu uma tradução.

Como uma falha numa etapa se torna um aviso no job#

Quando uma etapa não crítica falha, a falha aparece em dois sítios ao mesmo tempo — e são duas perspetivas sobre o mesmo evento. O registo em steps[] fica como failed com um errorMessage — essa é a vista detalhada. A mesma falha também surge como uma entrada no array warnings de topo do job — essa é a vista resumida em que o seu código de tratamento de estado se baseia para ramificar:

json
{
  "id": "ljb_A1b2C3d4E5f6G7h8",
  "status": "completed_with_warnings",
  "outputData": { "title": "Hallo" },
  "warnings": [
    { "step": "backTranslation", "message": "Back-translation check did not complete" }
  ],
  "steps": [
    { "stepId": "localize", "type": "action", "status": "completed", "errorMessage": null, "costUsd": 0.0184, "completedAt": "2026-03-16T10:30:05.000Z" },
    { "stepId": "backTranslation", "type": "action", "status": "failed", "errorMessage": "Back-translation check did not complete", "costUsd": 0.0031, "completedAt": "2026-03-16T10:30:11.000Z" }
  ]
}

Cada entrada de warnings é { step, message }, em que step é o mesmo stepId que encontraria no registo falhado. Por isso, os dois arrays estão alinhados: warnings é a lista curta do que correu mal, e steps[] é onde vai buscar o detalhe por trás de cada caso. Leia warnings para decidir se deve sinalizar o idioma para revisão humana; leia o registo steps[] correspondente quando quiser o errorMessage, o custo e o timing por trás disso.

Este é o mecanismo por trás de completed_with_warnings: a tradução principal foi concluída com êxito, por isso tem outputData utilizável, mas pelo menos uma etapa não crítica deixou um registo failed e um aviso correspondente. Trate o resultado como pronto a publicar e os avisos como um sinal de qualidade que vale a pena mostrar. Só um status do job de failed significa que não há tradução para ler — e essa decisão, com a tabela completa de estados do job, encontra-se na página do job individual.

A saúde agregada das etapas é uma superfície separada

steps[] responde à pergunta "o que fez o pipeline neste job". Quando quer ver a tendência ao longo de muitos jobs — com que frequência a pré-edição falha, com que frequência a retrotradução corrige uma tradução — isso é uma questão agregada, e a resposta está na página Reports, não numa resposta por job. Aqui, registos por job; ali, agregações.

Passos seguintes#

Obter um job individual
A resposta completa do job onde estas steps aparecem, mais os valores de estado do job a usar nas suas ramificações
Configurar o pipeline
Decida que etapas correm, por motor ou por pedido — e, por isso, que steps vai ver
Reports
Taxas agregadas de sucesso das etapas e débito em todos os jobs

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 12 dias·7 min de leitura