// @requires fallback.js return $input.all().map((item) => { const data = item.json; if (data.resolucao === 'cache' && data.memory) { const m = data.memory; const isFallback = m.ai_classification === 'AI_FALLBACK'; return { json: { ...data, aiClassification: { classification: m.ai_classification, actionable_today: m.ai_classification === 'ACTIONABLE_NOW' || m.ai_classification === 'UNASSIGNED_ACTIONABLE', confidence: Number(m.ai_confidence || 0), blocker_type: m.blocker_type || null, waiting_for: m.waiting_for || null, next_action: m.next_action || 'Revisar chamado', suggested_action_type: 'technical_action', business_risk: 'medium', reason: m.last_ai_reason || 'Classificacao reaproveitada do cache.', evidence: [], // Precisa refletir de verdade o que foi cacheado -- um AI_FALLBACK cacheado // continua sendo fallback (senao a politica de elegibilidade em cooldown.js // nao aplicaria a exclusao/override certos numa segunda execucao com cache). is_fallback: isFallback, fallback_reason: isFallback ? 'cached_ai_fallback' : null, }, }, }; } return { json: { ...data, aiClassification: buildFallbackClassification('ai_max_candidates_cap') } }; });