73 lines
4.4 KiB
Markdown
73 lines
4.4 KiB
Markdown
# 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.
|