Interface AiPlanChange

Un plan de IA TERMINÓ: salió (ai_plan_generated) o se rindió (ai_plan_failed).

Es lo que te ahorra preguntar por el plan cada pocos segundos: espera a este evento y lee el plan una vez con pv.aiPlans.get(). Sólo trae ids y números, nunca el prompt ni lo generado.

No trae id_account ni social_network, igual que IntegrationErrorChange: un plan puede abarcar varias redes y cuelga de la organización.

Un fallo transitorio devuelve el plan a la cola y no manda nada, así que cada plan manda uno de los dos, nunca un failed seguido de un generated. Y no se reintenta: si tu endpoint estaba caído cuando terminó, pv.aiPlans.get() sigue diciendo cómo acabó.

interface AiPlanChange {
    credits_spent: number;
    error?: { code: number; message: string };
    field: "ai_plan_generated" | "ai_plan_failed";
    id_ai_plan: string;
    id_organization: string;
    state: "generated" | "failed";
    template: PlannerTemplateName;
    total_publications: number;
    warnings: number;
}

Properties

credits_spent: number

Los créditos de IA que gastó. Uno failed también puede haber gastado, y no se devuelven.

error?: { code: number; message: string }

Sólo en ai_plan_failed: el mismo code y message que AiPlan.error. Su data, en el plan.

field: "ai_plan_generated" | "ai_plan_failed"
id_ai_plan: string
id_organization: string
state: "generated" | "failed"

El estado en que terminó. Siempre cuadra con field: generated o failed.

De qué salió el plan: el mismo valor que AiPlan.template. La lista crece.

total_publications: number

Cuántas publicaciones en borrador tiene. Uno failed puede conservar las del intento fallido.

warnings: number

CUÁNTOS avisos dejó, no los avisos: ésos están en AiPlan.warnings. Con avisos sigue siendo usable.