// @requires classification.js fallback.js const promptItems = $('Code - Preparar Prompt IA').all(); const responseItems = $input.all(); return responseItems.map((responseItem, index) => { const original = (promptItems[index] && promptItems[index].json) || {}; const httpJson = responseItem.json || {}; if (httpJson.error) { return { json: { ...original, aiClassification: buildFallbackClassification('ai_error') } }; } let raw = null; try { const content = httpJson.choices && httpJson.choices[0] && httpJson.choices[0].message && httpJson.choices[0].message.content; raw = content ? JSON.parse(content) : null; } catch (e) { raw = null; } // Passa o ticket pra validacao poder aplicar a guarda deterministica "tecnico interno nunca // vira WAITING_VENDOR" (logic/classification.js -> isWaitingForInternalTechnician). Sem // isso a validacao so olha o JSON cru, nunca os fatos do proprio chamado. const validation = validateAiClassification(raw, original.ticket); let aiClassification; if (validation.valid) { aiClassification = validation.data; } else { const isSemanticConflict = validation.errors.some((e) => e.includes('tecnico interno')); aiClassification = buildFallbackClassification(isSemanticConflict ? 'ai_semantic_conflict' : 'invalid_json'); } return { json: { ...original, aiClassification } }; });