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
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| type | string | obligatorio | generateSop | generateChart | reviewSop | applySuggestions | importDocument | generateFlow |
| params | object | obligatorio | Parámetros específicos del tipo; consulta la tabla. |
Ejemplo de respuesta
{ "jobId": "JOB_UUID" }Tipos y parámetros
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| generateSop | { orgNodeId, prompt } | opcional | Crea un SOP preliminar en el equipo indicado. |
| generateChart | { prompt } | opcional | Genera una estructura de organigrama. |
| reviewSop | { sopId } | opcional | Revisa la versión accesible y devuelve la identidad de su contenido. |
| applySuggestions | { sopId, review } | opcional | Envía el objeto review anterior, incluido sourceVersionId y sourceContentHash. No uses una revisión obsoleta. |
| importDocument | { orgNodeId, documentBase64, mimeType } | opcional | application/pdf | text/plain | text/markdown; base64 ≤ 50 MB. |
| generateFlow | { flowId, prompt } | opcional | Añ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
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| status | running | done | error | opcional | Cierra el flujo al terminar o fallar. |
| result | object | opcional | Resultado específico del tipo. |
| error | string | opcional | Mensaje de error cuando falla. |
Ejemplo de respuesta
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
{ "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.
};