Reintentos y resolución de trabajos
Propósito: operar trabajos asíncronos explícitamente y manejar estados de falla de manera determinista.
Flujo de interfaz de usuario
- La interfaz de usuario muestra el estado de la cola y de la tarea por cuenta.
- El usuario abre los detalles del trabajo cuando falla o se atasca.
- La interfaz de usuario permite
Trigger,RetryyResolve. - La interfaz de usuario resalta
last_error_codeylast_error_detail. - La interfaz de usuario actualiza el estado de la tarea después de la acción del trabajo.
Flujo de la biblioteca del cliente
const jobs = await api.jobs.list(accountId, { limit: 50 });
const failed = jobs.data.filter((row) => row.failed_at);
for (const job of failed) {
await api.jobs.retry(job.id);
}
const inFlight = await api.jobs.list(accountId, {
q: "imap_sync_messages",
limit: 20,
});
Flujo HTTP/curl
API_BASE_URL="https://api.inbox-manager.com"
curl -sS "${API_BASE_URL}/api/accounts/${ACCOUNT_ID}/jobs?limit=20&offset=0" \
-H "authorization: Bearer ${BEARER_TOKEN}"
curl -sS -X POST "${API_BASE_URL}/api/jobs/${JOB_ID}/trigger" \
-H "authorization: Bearer ${BEARER_TOKEN}" \
-H "content-type: application/json" \
--data '{}'
curl -sS -X POST "${API_BASE_URL}/api/jobs/${JOB_ID}/retry" \
-H "authorization: Bearer ${BEARER_TOKEN}" \
-H "content-type: application/json" \
--data '{}'
curl -sS -X POST "${API_BASE_URL}/api/jobs/${JOB_ID}/resolve" \
-H "authorization: Bearer ${BEARER_TOKEN}" \
-H "content-type: application/json" \
--data '{"note":"handled after provider maintenance window"}'
Dirección de taxonomía de errores
- El trabajador ahora registra valores
last_error_codecategorizados para:- conectividad transitoria
- autenticación
- autorización
- configuración
- validación de carga útil
- extraviado