Los créditos de IA que gastó. Uno failed también puede haber gastado, y no se devuelven.
OptionalerrorSólo en ai_plan_failed: el mismo code y message que AiPlan.error. Su data, en el plan.
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.
Cuántas publicaciones en borrador tiene. Uno failed puede conservar las del intento fallido.
CUÁNTOS avisos dejó, no los avisos: ésos están en AiPlan.warnings. Con avisos sigue siendo usable.
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_accountnisocial_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
failedseguido de ungenerated. Y no se reintenta: si tu endpoint estaba caído cuando terminó,pv.aiPlans.get()sigue diciendo cómo acabó.