Files
BrainWind/PLANO_MELHORIAS_AUDITORIA.md
T

4.4 KiB

Plano de Implementação: Melhorias no Sistema de Auditoria LLM (BrainWind)

Este documento detalha o plano estruturado para a atualização do sistema de testes e auditoria do BrainWind, focado em otimização de execução e na legibilidade didática dos resultados.


🎯 Objetivos Principais

  1. Economia e Agilidade: Permitir que o usuário escolha quais testes rodar, evitando execuções completas e longas desnecessárias.
  2. Didática de Engenharia: Transformar o resultado do teste em um "Laudo Técnico" claro, mostrando o problema, os métodos normativos e a comparação de resultados.

🛠️ Fase 1: Seleção Dinâmica de Testes (Filtros por Categoria)

Meta: Modificar a interface para permitir a seleção de cenários individuais, categorias inteiras ou todos os cenários.

1. Modificações na UI (src/components/AuditPanel.tsx)

  • Criar um novo componente de Accordion/Tree View com Checkboxes.
  • Agrupar visualmente os dados retornados por generateAllScenarios() utilizando o atributo module (Ex: "Galpões", "Pontes", "Silos").
  • Adicionar controles globais: "Selecionar Todos" e "Desmarcar Todos".

2. Gerenciamento de Estado

  • Implementar o estado selectedScenarios: AuditScenario[] no componente.
  • O botão "Executar Auditoria" passará a enviar apenas o array filtrado para a função runAudit() no runner.ts.

3. Ajustes de Validação

  • Bloquear a execução (desabilitar botão) se nenhum cenário estiver selecionado.
  • Atualizar a barra de progresso para usar a contagem de selectedScenarios.length em vez do total absoluto de testes.

📊 Fase 2: Relatório de Resultados Didático e Detalhado

Meta: Transformar o relatório de um simples "Passou/Falhou" para uma comparação técnica rica, citando a norma NBR 6123.

1. Reestruturação do Prompt (src/lib/audit/prompt-builder.ts)

  • Modificar o system prompt para exigir que a LLM preencha chaves JSON específicas obrigatórias:
    • enunciado_problema: Resumo das condições de vento (V0, Terreno, etc).
    • tabelas_nbr_consultadas: Quais tabelas/ábacos da NBR 6123 foram utilizados no cálculo teórico.
    • calculo_teorico_nbr: O resultado matemático que a norma espera.
    • resultado_app: O valor que o motor do BrainWind gerou.
    • desvio_percentual: A diferença analítica entre o App e a Norma.

2. Atualização de Tipagens (src/lib/audit/types.ts)

  • Expandir as interfaces ScenarioResult e AuditLLMResponse para suportar os novos campos detalhados do laudo.

3. Redesign do Popup de Detalhes (src/components/AuditDetailPopup.tsx)

  • Abandonar o modelo atual de logs/raw JSON.
  • Criar um Card Comparativo (Lado a Lado): Motor BrainWind (Esquerda) vs Resultado LLM/Norma (Direita).
  • Renderizar de forma estilizada as tabelas_nbr_consultadas com Badges.

4. Upgrade nas Exportações (export-audit-md.ts e export-audit-pdf.ts)

  • Adaptar o gerador de PDF/MD para incluir as novas seções. O relatório exportado deve servir como um "memorial de cálculo comparativo" validado por IA, pronto para ser entregue a uma certificadora de software.

🛡️ Fase 3: Otimização de Resiliência no Parsing (Eliminação de Alertas)

Meta: Evitar falhas de extração de JSON geradas por cálculos matemáticos da LLM contidos no bloco de raciocínio.

1. Limpeza do Bloco de Pensamento (src/lib/audit/parser.ts)

  • Implementar na função parseLLMResponse uma remoção prévia e estrita da tag <think>...</think>.
  • Isso impedirá que expressões matemáticas contendo chaves (como Cpe = max{ 0.8 }) confundam a regex de extração do JSON, eliminando alertas de Could not parse LLM response as JSON nas primeiras tentativas.
  • Garantir que apenas o conteúdo bruto pós-raciocínio seja repassado para as Regex de extração de JSON.

🚀 Ordem de Execução Sugerida

  1. Passo 1: Alterar a interface (AuditPanel.tsx) para incluir as opções de seleção de testes e gerenciar os estados.
  2. Passo 2: Melhorar o extrator (parser.ts) implementando a limpeza de blocos <think>.
  3. Passo 3: Atualizar a tipagem JSON e o prompt-builder.ts. Realizar testes individuais (com apenas 1 cenário selecionado) para validar a nova lógica.
  4. Passo 4: Refatorar o Popup (AuditDetailPopup.tsx) para exibir os novos dados.
  5. Passo 5: Finalizar ajustando a geração de PDF e MD com as novas informações estruturadas.