4.4 KiB
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
- Economia e Agilidade: Permitir que o usuário escolha quais testes rodar, evitando execuções completas e longas desnecessárias.
- 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 atributomodule(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()norunner.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.lengthem 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 promptpara 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
ScenarioResulteAuditLLMResponsepara 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_consultadascom 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
parseLLMResponseuma 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 deCould not parse LLM response as JSONnas 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
- Passo 1: Alterar a interface (
AuditPanel.tsx) para incluir as opções de seleção de testes e gerenciar os estados. - Passo 2: Melhorar o extrator (
parser.ts) implementando a limpeza de blocos<think>. - 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. - Passo 4: Refatorar o Popup (
AuditDetailPopup.tsx) para exibir os novos dados. - Passo 5: Finalizar ajustando a geração de PDF e MD com as novas informações estruturadas.