Skip to content

ltd-estacio/automacao-ltd

Repository files navigation

🤖 Microsoft Forms Automation Tool

📋 Visão Geral

Ferramenta profissional desenvolvida em Python para automação completa de formulários Microsoft Forms. Sistema robusto com interface gráfica intuitiva que permite upload de arquivos CSV/TXT e execução de automação inteligente com detecção automática de tipos de campo.

✨ Principais Características

🎯 Detecção Inteligente de Campos

  • Identificação automática de todos os tipos de campo
  • Análise contextual de labels e estruturas
  • Suporte completo para campos condicionais
  • Mapeamento inteligente CSV ↔ Formulário

🖥️ Interface Gráfica Profissional

  • Interface moderna com Tkinter e cores aprimoradas
  • Upload drag-and-drop de arquivos
  • Visualização em tempo real do progresso
  • Logs detalhados de todas as atividades

💾 Banco de Dados SQLite3 Integrado (NOVO!)

  • Salvamento automático de todos os registros processados
  • Visualização interativa de dados em tabelas
  • Exportação de dados para CSV e TXT
  • Histórico completo com timestamps
  • Estatísticas em tempo real de registros salvos

📚 Tutorial Integrado (NOVO!)

  • Sistema de ajuda completo integrado na interface
  • Guia passo a passo para usar o software
  • Documentação detalhada dos campos CSV
  • Explicação de todas as funcionalidades
  • Dicas e boas práticas de uso

🤖 Automação Avançada

  • Preenchimento inteligente de todos os tipos de campo
  • Estratégias específicas para radio buttons complexos
  • Detecção de campos condicionais após preenchimento
  • Múltiplas tentativas para máxima confiabilidade
  • Salvamento automático no banco após cada registro

📊 Tipos de Campo Suportados

  • Texto (text, email, tel, number)
  • Área de texto (textarea)
  • Data (date, datetime-local)
  • Radio buttons (com estratégia específica para municípios)
  • Checkboxes
  • Select/Dropdown (incluindo MS Forms)
  • Combobox/Listbox
  • Upload de arquivos

🚀 Instalação

Pré-requisitos

  • Python 3.8 ou superior
  • Google Chrome instalado
  • ChromeDriver (será gerenciado automaticamente)

Instalação das Dependências

# Navegar para o diretório do projeto
cd FormAutomationPython

# Instalar dependências
pip install -r requirements.txt

# Ou instalação individual
pip install selenium chardet pandas colorlog webdriver-manager

Configuração do ChromeDriver

O sistema gerencia automaticamente o ChromeDriver, mas se preferir manual:

  1. Baixar ChromeDriver compatível com sua versão do Chrome
  2. Adicionar ao PATH do sistema

🎮 Como Usar

1. Executar a Aplicação

python main.py

2. Configurar Automação

  1. URL do Formulário: Cole a URL do Microsoft Forms
  2. Arquivo de Dados: Selecione arquivo CSV ou TXT
  3. Opções:
    • ☑️ Submeter automaticamente
    • ☑️ Modo headless (sem interface visual)
    • ⚡ Velocidade: Lenta/Normal/Rápida

3. Executar Automação

  • 🔍 Analisar Formulário: Detecta campos sem preencher
  • 🚀 Iniciar Automação: Executa automação completa
  • ⏹️ Parar Automação: Interrompe processo
  • 📚 Tutorial: Abre guia completo de como usar o software
  • 📊 Ver Banco de Dados: Visualiza dados salvos e permite exportação

4. Tutorial e Ajuda (NOVO!)

  • Clique no botão "📚 Tutorial" para acessar:
    • Introdução ao software
    • Documentação detalhada dos campos CSV
    • Guia passo a passo de uso
    • Informações sobre banco de dados
    • Dicas e boas práticas

5. Gerenciar Banco de Dados (NOVO!)

  • Clique no botão "📊 Ver Banco de Dados" para:
    • Visualizar todos os registros salvos
    • Alternar entre tabelas de Atendimentos e Boa Prática
    • Exportar dados para CSV ou TXT
    • Ver estatísticas de registros
    • Limpar dados (com confirmação)

📁 Estrutura do Projeto

FormAutomationPython/
├── main.py                 # Interface gráfica principal
├── src/
│   ├── form_automation.py  # Motor principal de automação
│   ├── field_detector.py   # Detector inteligente de campos
│   ├── field_filler.py     # Preenchedor de campos
│   ├── database/
│   │   ├── __init__.py
│   │   └── db_manager.py   # Gerenciador de banco SQLite3 (NOVO!)
│   ├── gui/
│   │   ├── __init__.py
│   │   ├── tutorial_window.py      # Janela de tutorial (NOVO!)
│   │   └── data_viewer_window.py   # Visualizador de dados (NOVO!)
│   └── utils/
│       ├── logger.py       # Sistema de logging
│       ├── config.py       # Configurações
│       └── data_processor.py # Processador de dados CSV
├── data/                   # Arquivos de dados e banco SQLite3
│   ├── atendimentos-naf.csv
│   ├── boa-pratica-naf.csv
│   └── form_data.db        # Banco de dados SQLite3 (NOVO!)
├── logs/                   # Logs da aplicação
├── config/                 # Arquivos de configuração
├── docs/                   # Documentação adicional
└── requirements.txt        # Dependências Python

📊 Formato de Dados Suportado

CSV de Exemplo

Estado,Municipio,DataAtendimento,ModalidadeAtendimento,TipoUsuario,AtendimentoConclusivo,TipoAtendimento
Alagoas - AL,AL - SEUNE - Maceió,28/09/2025,Remoto,Microempreendedor Individual,Sim,Auxílio à elaboração e orientações sobre a Declaração de Ajuste Anual do IRPF
Alagoas - AL,AL - UNEAL - Arapiraca,29/09/2025,Presencial,Pessoa Física,Não,Auxílio à inscrição e Informações cadastrais de CPF

Mapeamento Inteligente

O sistema mapeia automaticamente baseado em:

  • Correspondência de nomes entre colunas CSV e labels do formulário
  • Análise de conteúdo dos dados de amostra
  • Padrões específicos para cada tipo de campo
  • Posição relativa dos campos no formulário

🔧 Configurações Avançadas

Velocidades de Automação

  • Lenta: Máxima confiabilidade (2-3s entre campos)
  • Normal: Equilibrio performance/confiabilidade (1s entre campos)
  • Rápida: Máxima velocidade (0.5s entre campos)

Estratégias Específicas

🏛️ Campos de Município

  • Detecção automática de instituições (Estácio, SEUNE, UNEAL, CESMAC)
  • Múltiplas estratégias de busca para radio buttons
  • Busca global por texto quando necessário

📅 Campos de Data

  • Conversão automática DD/MM/AAAA → AAAA-MM-DD
  • Suporte a múltiplos formatos de entrada
  • Validação de datas

💾 Banco de Dados SQLite3 (NOVO!)

Salvamento Automático

  • Todos os registros processados são automaticamente salvos no banco de dados
  • Persistência de dados mesmo se a automação for interrompida
  • Histórico completo com timestamps de inserção

Estrutura do Banco

Tabela: atendimentos_naf

  • id, estado, municipio, data_atendimento, modalidade_atendimento
  • tipo_usuario, atendimento_conclusivo, tipo_atendimento, data_insercao

Tabela: boa_pratica_naf

  • id, titulo, data_ocorrencia, trimestre, link_acesso, estado
  • municipio, responsavel, email_responsavel, grupo_educacional
  • tipo_boa_pratica, acao_sazonal, categorias, data_insercao

Funcionalidades do Banco

  • Visualização interativa de todos os registros
  • Exportação para CSV e TXT
  • Estatísticas em tempo real
  • Limpeza de dados com confirmação
  • Filtro por tipo de formulário

Localização

  • Arquivo do banco: data/form_data.db
  • Criado automaticamente na primeira execução
  • Portável e pode ser copiado para backup

📋 Logs e Relatórios

Sistema de Logging

  • Logs em tempo real na interface
  • Arquivos de log detalhados em /logs/
  • Níveis: INFO, WARNING, ERROR, SUCCESS, DEBUG
  • Logs de banco de dados: Confirmação de salvamento

Relatórios de Automação

  • Campos detectados: Número total de campos identificados
  • Taxa de sucesso: Percentual de campos preenchidos com sucesso
  • Tempo de execução: Duração total da automação
  • Detalhes por campo: Log específico de cada preenchimento
  • Registros salvos: Confirmação de salvamento no banco

🛠️ Solução de Problemas

Problemas Comuns

"Nenhum campo detectado"

  • ✅ Aguardar carregamento completo do formulário
  • ✅ Verificar se URL está correta
  • ✅ Tentar modo não-headless para debug visual

"Erro de mapeamento"

  • ✅ Verificar formato do arquivo CSV
  • ✅ Confirmar que colunas têm nomes descritivos
  • ✅ Usar primeiro o modo "Analisar Formulário"

"Campo não preenchido"

  • ✅ Verificar se valor está no formato correto
  • ✅ Para radio buttons, confirmar se opção existe
  • ✅ Aumentar velocidade para "Lenta" para debug

"ChromeDriver não encontrado"

  • ✅ Instalar: pip install webdriver-manager
  • ✅ Atualizar Chrome para versão mais recente
  • ✅ Verificar conexão com internet

Debug Avançado

  1. Modo não-headless: Ver automação em tempo real
  2. Logs detalhados: Verificar arquivo em /logs/
  3. Modo análise: Usar "Analisar Formulário" primeiro

🔒 Segurança e Privacidade

Dados Locais

  • Todos os dados permanecem no computador local
  • Nenhuma transmissão para servidores externos
  • Logs criptografados (opcional)

Automação Ética

  • Respeita robots.txt e políticas do site
  • Velocidade controlada para não sobrecarregar servidor
  • User-agent identificado como automação

📄 Licença

Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

🤝 Contribuição

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📞 Suporte

Para suporte e dúvidas:

  • 📧 Email: [inserir email de suporte]
  • 📋 Issues: Use o sistema de issues do GitHub
  • 📖 Documentação: Consulte a pasta /docs/

🏆 Reconhecimentos

  • Selenium - Framework de automação web
  • Tkinter - Interface gráfica
  • Python Community - Ecossistema incrível

Desenvolvido com ❤️ usando Python + Selenium

About

Ferramenta profissional desenvolvida em Python para automação completa de formulários Microsoft Forms. Sistema robusto com interface gráfica intuitiva que permite upload de arquivos CSV/TXT e execução de automação inteligente com detecção automática de tipos de campo.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors