1. Sumário executivo
O Vetorizador PRO é um aplicativo desktop para Windows, construído sobre Electron, que auxilia na extração assistida de polígonos a partir de imagens de mapa, PDFs de matrícula e shapefiles, com apoio de um núcleo determinístico em Rust/WebAssembly.
A aplicação adota persistência local-first: não há backend em nuvem próprio, telemetria enviada ao fabricante nem sincronização remota dos dados do usuário. As comunicações externas são chamadas pontuais a serviços públicos governamentais e de geocodificação, detalhadas na Seção 3.
2. Arquitetura da solução
- Runtime: Electron 44.x, com Chromium e Node.js empacotados.
- Frontend: HTML, CSS e JavaScript compilados via Vite, com
contextIsolation: true,nodeIntegration: falseesandbox: true. - Núcleo geométrico: módulo Rust compilado para WebAssembly, executado localmente.
- Backend embarcado: servidor HTTP Node.js vinculado somente a
127.0.0.1, sem exposição à rede. - IA assistiva local: OCR e visão computacional executados no dispositivo, sem serviço de IA em nuvem.
- Sem backend proprietário remoto: arquivos e resultados operacionais não são enviados ao fabricante.
3. Superfície de comunicação externa
As chamadas usam a pilha de rede do Chromium por meio de electron.net, respeitando proxy e PAC configurados no Windows.
| Destino | Protocolo | Finalidade | Dados enviados |
|---|---|---|---|
geoserver.car.gov.br | HTTPS/443 | Consulta WFS pública do SICAR | Bounding box e UF |
acervofundiario.incra.gov.br | HTTPS/443 | Consulta WFS do SIGEF/INCRA | Bounding box e UF |
nominatim.openstreetmap.org | HTTPS/443 | Geocodificação | Texto de busca ou latitude/longitude |
api.opentopodata.org | HTTPS/443 | Consulta altimétrica SRTM | Lista de coordenadas |
- Imagens, PDFs, shapefiles e geometrias vetorizadas não são enviados a esses serviços.
- O servidor local não é acessível por outras máquinas da rede.
- Não há analytics, telemetria, crash reporting ou verificação remota de licença.
- As rotas locais
/api/*validam origem e rejeitam chamadas cross-site típicas contra localhost.
4. Persistência e tratamento de dados
- Execuções, presets, camadas e delimitações de APP são mantidos localmente em IndexedDB e localStorage.
- Não existe sincronização, backup remoto ou banco central do fabricante.
- GeoJSON, Shapefile, DOCX, PDF e planilhas são gerados localmente, sob ação do usuário.
- Documentos e dados geoespaciais permanecem sob controle da instalação local.
5. Segurança do runtime Electron
| Controle | Configuração | Efeito |
|---|---|---|
contextIsolation | true | Isola a página do contexto privilegiado do Electron. |
nodeIntegration | false | Impede acesso direto do renderer às APIs Node.js. |
sandbox | true | Reduz a superfície de ataque do processo de renderização. |
| API privilegiada | contextBridge | Expõe somente operações específicas e controladas. |
| Navegação externa | Allowlist explícita | Bloqueia navegação arbitrária e abertura irrestrita de janelas externas. |
| DevTools em produção | Desabilitado por padrão | Evita console aberto no pacote final, com reabertura apenas por variável de ambiente controlada. |
webview e permissões | Bloqueados/negados | Reduz capacidades não necessárias no renderer publicado. |
| Atualização | Sem auto-update | Mantém instalação e atualização sob controle de TI. |
5.1 Controles adicionais do shell local
- Respostas HTML locais incluem
Content-Security-Policy,X-Content-Type-Options: nosniff,Referrer-Policy,X-Frame-Options,Cross-Origin-Opener-PolicyeCross-Origin-Resource-Policy. - A diretiva
wasm-unsafe-evalestá presente apenas para permitir a instanciação do módulo Rust/WebAssembly local; isso não amplia origens remotas permitidas. - Bibliotecas operacionais críticas do shell desktop são servidas localmente a partir de
vendor/, sem dependência de CDN em tempo de uso. - Fluxos de DOM com dados externos em pontos sensíveis evitam interpolação direta com
innerHTML.
6. Licenciamento e modelo comercial
- Código-fonte próprio distribuído sob licença MIT.
- Núcleo Rust/WASM sob dupla licença MIT/Apache-2.0.
- Distribuição gratuita, sem bloqueio comercial ou validação remota de licença.
Consulte a relação completa de licenças e componentes.
7. Dependências principais
| Componente | Licença | Uso |
|---|---|---|
| Electron | MIT | Runtime desktop |
| Leaflet / Leaflet.Draw | BSD-2 / MIT | Mapa e desenho de ROI |
| Turf.js | MIT | Operações geoespaciais |
| PDF.js | Apache-2.0 | Renderização de PDF |
| shpjs / shp-write | MIT | Leitura e exportação de Shapefile |
| PaddleOCR / PaddlePaddle | Apache-2.0 | OCR e assistência local |
| ExcelJS | MIT | Exportação de planilhas |
| sharp | Apache-2.0 | Processamento de imagem local |
8. Vulnerabilidades conhecidas
| Escopo | Ferramenta | Resultado na data do dossiê |
|---|---|---|
| Aplicativo principal | npm audit --omit=dev | 0 vulnerabilidades |
Serviço auxiliar api/ | npm audit --omit=dev | 0 vulnerabilidades |
9. Instalação e privilégios
- Instalador NSIS por usuário, sem exigir privilégios administrativos.
- Pacote MSIX assinado disponível para Microsoft Store ou sideload corporativo.
- Não instala serviços do Windows, tarefas agendadas ou drivers.
10. Checklist para avaliação de TI
| Item | Situação |
|---|---|
| Instalação e execução sem privilégios administrativos | Atendido |
| Somente loopback local, sem portas expostas à rede | Atendido |
| Comunicação externa restrita a HTTPS e destinos identificados | Atendido |
| Proxy corporativo resolvido pela pilha do Chromium | Atendido |
| Sem telemetria ou envio de arquivos ao fabricante | Atendido |
| Operação local sem dependência de nuvem | Atendido |
| Renderer isolado e em sandbox | Atendido |
| Bloqueio de abuso cross-site contra localhost | Atendido |
| Assets operacionais servidos localmente, sem CDN runtime | Atendido |
| DevTools fechadas por padrão no pacote final | Atendido |
| Sem atualização automática silenciosa | Atendido |
| Assinatura do MSIX 1.3.5.0 | Válida e confiável no ambiente verificado |
| Pacote MSIX 1.3.x.0 | Gerar e validar para a próxima submissão |