Saltar al contenido

Tareas de IA y progreso

Inicia una tarea y consulta su progreso. La generación, la revisión, la importación y los diagramas comparten un sistema asíncrono.

POST/ai/start

Inicia una tarea y devuelve su identificador.

Parámetros

NombreTipoObligatorioDescripción
typestringobligatoriogenerateSop | generateChart | reviewSop | applySuggestions | importDocument | generateFlow
paramsobjectobligatorioParámetros específicos del tipo; consulta la tabla.

Ejemplo de respuesta

Json
{ "jobId": "JOB_UUID" }

Tipos y parámetros

Parámetros

NombreTipoObligatorioDescripción
generateSop{ orgNodeId, prompt }opcionalCrea un SOP preliminar en el equipo indicado.
generateChart{ prompt }opcionalGenera una estructura de organigrama.
reviewSop{ sopId }opcionalRevisa la versión accesible y devuelve la identidad de su contenido.
applySuggestions{ sopId, review }opcionalEnvía el objeto review anterior, incluido sourceVersionId y sourceContentHash. No uses una revisión obsoleta.
importDocument{ orgNodeId, documentBase64, mimeType }opcionalapplication/pdf | text/plain | text/markdown; base64 ≤ 50 MB.
generateFlow{ flowId, prompt }opcionalAñade un diagrama a un flujo en borrador que puedas editar.

Los identificadores son UUID. Los prompts aceptan entre 5 y 5000 caracteres. review incluye summary, improvements y opcionalmente missingSteps, además de la identidad del contenido revisado.

GET/ai/progress/:jobId

Flujo SSE de la tarea de tu sesión. Los mensajes contienen status, no eventos job.done.

Parámetros

NombreTipoObligatorioDescripción
statusrunning | done | erroropcionalCierra el flujo al terminar o fallar.
resultobjectopcionalResultado específico del tipo.
errorstringopcionalMensaje de error cuando falla.

Ejemplo de respuesta

Json
data: {"status":"running","stage":"generating","message":"Writing steps…","progress":40}

data: {"status":"done","stage":"done","message":"Done","progress":100,"result":{}}
GET/ai/status/:jobId

Consulta el estado con la misma sesión cuando se interrumpe el flujo. Un resultado ya caducado puede no estar disponible.

Ejemplo de respuesta

Json
{ "id":"JOB_UUID", "status":"running", "stage":"generating", "message":"Writing steps…", "progress":40 }

Ejemplo de revisión

// Run on the SOPFlow application origin with a signed-in session.
const response = await fetch("/ai/start", {
  method: "POST", credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ type: "reviewSop", params: { sopId: "SOP_UUID" } }),
});
if (!response.ok) throw new Error(await response.text());
const { jobId } = await response.json();
const stream = new EventSource("/ai/progress/" + jobId, { withCredentials: true });
stream.onmessage = event => {
  const job = JSON.parse(event.data);
  console.log(job.stage, job.message, job.progress);
  if (job.status === "done") { console.log(job.result); stream.close(); }
  if (job.status === "error") { console.error(job.error); stream.close(); }
};
stream.onerror = () => {
  stream.close();
  // Check /ai/status/:jobId with the same session before offering a retry.
};

Gestionar interrupciones del progreso

Inicia una tarea y conserva jobId. Procesa status y cierra el flujo al terminar o fallar. Si se desconecta, consulta el estado con la misma sesión autorizada.

No inicies otra generación solo por perder la conexión. Comprueba la tarea original y revisa resultado, cuota y destino antes de aplicar contenido.