From 7f52e3e8ed6d34e441810f41b4c5eb0d6278298a Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Tue, 23 Jun 2026 20:14:47 +0000 Subject: [PATCH] fix: enforce min/max range separation in norm builder and enforce non-compliant overall status in analyzer --- services/aiService.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/aiService.ts b/services/aiService.ts index 0e4eef5..7689817 100644 --- a/services/aiService.ts +++ b/services/aiService.ts @@ -162,7 +162,8 @@ Sua tarefa principal é transcrever com precisão matemática e zero alucinaçã 5. **Orientação:** Rotacione mentalmente a imagem para ler corretamente. ### ANÁLISE DE CONFORMIDADE: -- Compare os valores reais extraídos com os requisitos mínimos/máximos da norma técnica declarada no certificado.`; +- Compare os valores reais extraídos com os requisitos mínimos/máximos da norma técnica declarada no certificado. +- REGRA CRÍTICA DE STATUS GERAL: Se QUALQUER item (mecânico, químico ou outro) for avaliado como "REPROVADO", o status geral do laudo ("compliance.status") DEVE ser OBRIGATORIAMENTE "NÃO CONFORME". Só atribua "CONFORME" se ABSOLUTAMENTE TODOS os itens individuais forem "OK".`; if (standardsContext && standardsContext.length > 0) { prompt += `\n\n=== BANCO DE NORMAS LOCAL (USO OBRIGATÓRIO) ===\n`; @@ -529,7 +530,7 @@ RESPONDA APENAS UM JSON VÁLIDO no seguinte formato EXATO: Regras Cruciais: 1. USE APENAS NÚMEROS (floats/ints) nos valores. NUNCA use strings como "0.25" ou "250". Use 0.25 e 250. 2. Se a norma não especifica um limite máximo ou mínimo para um elemento, coloque null (sem aspas). -3. O nome da chave dentro de mecânicos/químicos/físicos deve ser em minúsculo, sem acentos, com underscores, e deve conter a unidade ou a palavra min/max (ex: "limite_escoamento_min_mpa", "carbono_max_percentual", "espessura_min_microns"). +3. O nome da chave dentro de mecânicos/químicos/físicos deve ser em minúsculo, sem acentos, com underscores, e DEVE conter a palavra "_min_" ou "_max_" (ex: "limite_escoamento_min_mpa", "carbono_max_percentual"). Se a norma define uma FAIXA (um mínimo e um máximo) para o mesmo elemento, você DEVE criar DUAS chaves separadas (ex: "columbio_min_percentual" e "columbio_max_percentual"). NUNCA combine min e max na mesma chave. 4. Crie APENAS os grupos (mecanicos, quimicos, fisicos) que fazem sentido para a norma solicitada. 5. DEVOLVA APENAS O JSON, sem nenhuma formatação ou texto explicativo ao redor.`;