# Melhorias v1.0 → v1.1 — Elevor NFe Automation

**Data:** 01/06/2026  
**Ambiente:** Homologação  
**Resultado do teste v1.1:** 14/14 success (100%)

---

## Antes (v1.0 — teste 31/05/2026)

| Métrica | v1.0 |
|---|---|
| Taxa de sucesso | 1/14 (7%) |
| Failed (timeout) | 6 |
| Aguardando associação | 7 |
| Duração total do lote | ~24 min (com falhas) |

**Problemas identificados:**

1. `"Escriturar todos"` disparava todos os webhooks ao mesmo tempo → ERP não suportava 6+ sessões Puppeteer simultâneas
2. Script v13 digitava o `c_prod` do XML no dropdown do ERP (ex: `PR310E110V`), mas o ERP só conhece o `codigo_elevor` (ex: `12014`) → 0 resultados, nota ficava `aguardando_associacao`
3. IA match não detectava voltagem embutida em códigos de produto (ex: `14062220V`)
4. Logs de job só visíveis em modal bloqueante
5. Seção chamada "Gaveta" (pouco descritivo)
6. Sem painel de configuração — credenciais e URLs gerenciadas apenas via `.env` e n8n

---

## Depois (v1.1 — teste 01/06/2026)

| Métrica | v1.1 |
|---|---|
| Taxa de sucesso | 14/14 (100%) |
| Failed | 0 |
| Aguardando associação | 0 |
| Duração total do lote | ~13 min |
| Tempo médio por nota | ~59,5 s |

---

## Correções aplicadas

### A — Bug crítico: Script Browserless v14

**Arquivo:** `/opt/elevor-automation/browserless-escriturar-v14.js`

| | v13 (antes) | v14 (depois) |
|---|---|---|
| Campo buscado no dropdown ERP | `c_prod` do XML (`PR310E110V`) | `codigo_elevor` mapeado (`12014`) |
| Wait após digitar | 2 s | 3 s (AJAX do RadComboBox) |
| Debug em falha | — | `modal_html`, itens visíveis, screenshot |
| Screenshot | sempre | só quando `hasError = true` |

**Impacto:** eliminou todos os `aguardando_associacao` do lote.

```javascript
// v14 — usa o código Elevor mapeado, não o c_prod do XML
const codigoElevor = mapaElevor[prod.c_prod] || prod.c_prod;
await page.type(drlInput, codigoElevor, { delay: 15 });
await sleep(3000); // aguarda AJAX do RadComboBox
```

---

### B — Processamento serial obrigatório

**Workflow:** `elevor-escriturar-dispatcher` (`gzW0D89LvPy4y8u4`)

- `"Escriturar todos"` **removido** do dashboard — não disparava mais webhooks, mas confundia
- Dispatcher agora também recupera `failed` com `last_error ILIKE '%timeout%'` e `retry_count < 3`
- Timeout do Browserless: 120 s → **180 s**

**Impacto:** eliminou todos os timeouts de sobrecarga.

---

### C — IA match: voltagem e acentos

**Workflow:** `elevor-ia-match` (`FyprplJ8gG6Up5iI`)

- `norm()` — normaliza acentos antes de comparar (`masseira` = `Masseira`)
- `extrairVoltagem()` — detecta tensão em `c_prod` E `x_prod` (regex `110|127|220|380`)
- Prompt marca **⚡** quando voltagem detectada e instrui: *"voltagem é fator DECISIVO — nunca confundir 110V com 220V"*

---

### D — Logs ao vivo inline

Cada quadro do dashboard ganhou um painel colapsável com os logs mais recentes (polling 3 s).  
O painel **"Escriturando agora"** fica aberto por padrão com indicador `● ao vivo`.

---

### E — Renomear "Gaveta" → "Fila de Escrituração"

Label dinâmico no cabeçalho:
- `"1 documento na fila · dispatcher processa em breve"`
- `"N documentos na fila · processados 1 por vez"`

---

### F — Sala de Controle ⚙️

Botão fixo no canto inferior direito do dashboard. Abre um drawer lateral com todos os parâmetros do sistema:

| Seção | Campos |
|---|---|
| Ambiente | Toggle homologação / produção |
| ERP Homologação | URL, login, senha + **Testar conexão** |
| ERP Produção | URL, login, senha |
| Parâmetros ERP | Empresa, funcionário, natureza |
| APIs | Chave Anthropic |
| Infraestrutura | IP VPS, Browserless URL, domínio, MinIO bucket/pasta |

**Persistência:** tabela `app.config_sistema` (16 chaves, PostgreSQL)

**Workflows novos:**

| Workflow | ID | Endpoint |
|---|---|---|
| elevor-config-get | `qb5btBZ216OICkDf` | `GET /webhook/elevor/config` |
| elevor-config-save | `PKHqljuP5rgO63hc` | `POST /webhook/elevor/config/save` |
| elevor-config-testar-erp | `Po2u6vs4koXxdaq4` | `POST /webhook/elevor/config/testar-erp` |

---

## Arquivos alterados

| Arquivo | Ação |
|---|---|
| `/opt/elevor-automation/browserless-escriturar-v14.js` | NOVO |
| `/opt/elevor-automation/dashboard/index.html` | MODIFICADO (backup: `.bak-v1.1`) |

---

## Backup v1.0

Snapshot completo em `/opt/elevor-automation/versoes/v1.0-importacao/`:
- Workflows JSON (14 workflows)
- Scripts Browserless
- Dump do banco (`schema-app.sql`, `data-produto_mapeamento.sql`)
- Documentação completa (`DOCUMENTACAO-COMPLETA.md`, 52 KB)

---

*Gerado automaticamente em 01/06/2026 — Sistema Elevor NFe Automation v1.1*
