Skip to content

GSOData/facilitare-esignature-system

Repository files navigation

Facilita RE Assinaturas

Sistema completo de assinatura eletrônica de documentos PDF com workflow de validação, desenvolvido em Django. Inclui gestão de usuários por níveis hierárquicos, controle por unidades e integração com processo de pagamento.

🚀 Funcionalidades Principais

📝 Gestão de Documentos

  • ✅ Upload de documentos PDF (máx. 10MB)
  • ✅ Edição de PDF com anotações de texto (posicionamento livre, cores, fontes)
  • ✅ Sugestões inteligentes de texto baseadas no histórico do usuário
  • ✅ Visualização do PDF no navegador com zoom e navegação
  • ✅ Canvas para desenho de assinatura manual
  • ✅ Geração de Manifesto/Certificado de Conclusão
  • ✅ Mesclagem da assinatura visual no PDF
  • ✅ Download de documentos assinados

🔐 Segurança e Auditoria

  • ✅ Hash SHA-256 para verificação de integridade
  • ✅ Captura de dados de auditoria (IP, User Agent, Data/Hora, Geolocalização)
  • ✅ Log de auditoria completo em JSON
  • ✅ Assinatura digital PAdES (selo do servidor) - opcional
  • ✅ UUID único para cada documento e transação
  • ✅ Protocolo de rastreamento (formato: FRE-YYYYMMDD-XXXXX)

👥 Sistema de Usuários e Permissões

  • PADRÃO: Usuários que enviam e assinam documentos
  • CP (Contas a Pagar): Recebem e validam documentos das suas unidades
  • SAF (Supervisor Adm. Financeiro): Acompanham documentos das suas unidades
  • GAF (Gerente Adm. Financeiro): Visualizam todos os documentos do sistema
  • ADMIN: Administradores com acesso total

🏢 Gestão de Unidades

  • ✅ Cadastro de unidades/filiais com sigla e nome
  • ✅ Vinculação de usuários a múltiplas unidades
  • ✅ Filtros por unidade em todas as listagens
  • ✅ Workflow de validação por unidade

✅ Workflow de Validação

  • ✅ Documentos assinados são enviados automaticamente para validação
  • ✅ Fila de documentos pendentes com alertas visuais (3+ dias amarelo, 5+ dias vermelho)
  • ✅ Validação ou rejeição com observações
  • ✅ Histórico completo de validações com filtros avançados
  • ✅ Notificação visual de documentos novos na caixa de entrada
  • ✅ Marca d'água "REJEITADO" aplicada automaticamente em documentos rejeitados

📁 Organização por Pastas

  • ✅ Pastas padrão: Caixa de Entrada, Concluído, Em Andamento, Enviados, Rascunho, Excluído, Rejeitado
  • ✅ Criação de pastas personalizadas
  • ✅ Mover documentos entre pastas
  • ✅ Contadores de documentos por pasta
  • ✅ Layout fixo estilo Outlook (sidebar e header fixos)

💳 Informações de Pagamento

  • ✅ Seleção de forma de pagamento: PIX ou Boleto
  • PIX: Cadastro de chave PIX e nome do titular
  • Boleto: Upload do arquivo PDF do boleto
  • ✅ Exibição das informações nos cards de validação e histórico
  • ✅ Botão de download separado para boletos

📧 Convites e Notificações

  • ✅ Envio de convite por email para terceiros assinarem
  • ✅ Templates de email personalizados
  • ✅ Lembretes de expiração de documentos

🔍 Portal de Verificação

  • ✅ Verificação pública de autenticidade (sem login)
  • ✅ Busca por protocolo ou UUID
  • ✅ Upload de arquivo para comparação de hash
  • ✅ Verificação de múltiplos documentos em lote

📁 Estrutura do Projeto

facilita_re_esignature/
├── facilita_re/              # Configurações do projeto Django
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── assinaturas/              # App principal de assinaturas
│   ├── models.py             # Documento, Pasta, DocumentoCP, SugestaoTexto
│   ├── services.py           # SignatureService, DocumentoService
│   ├── views.py              # Views e APIs
│   ├── forms.py              # Formulários
│   ├── urls.py               # Rotas
│   ├── email_service.py      # Serviço de envio de emails
│   ├── signals.py            # Sinais Django
│   ├── utils.py              # Utilitários (Rate Limiting)
│   └── management/commands/  # Comandos personalizados
│       ├── criar_pastas_padrao.py
│       ├── expirar_documentos.py
│       └── migrar_documentos_pastas.py
├── usuarios/                 # App de gestão de usuários
│   ├── models.py             # Usuario, Unidade, TipoUsuario
│   ├── views.py              # Login, Cadastro, Perfil, Admin
│   ├── forms.py              # Formulários de usuário
│   └── admin.py              # Configuração do Admin
├── templates/                # Templates HTML
│   ├── base.html
│   ├── assinaturas/
│   │   ├── home.html
│   │   ├── upload.html
│   │   ├── editar_pdf.html
│   │   ├── assinar.html
│   │   ├── documento_assinado.html
│   │   ├── enviar_convite.html
│   │   ├── verificar_*.html
│   │   └── validacao/
│   │       ├── lista_pendentes.html
│   │       ├── validar.html
│   │       └── historico.html
│   ├── usuarios/
│   │   ├── login.html
│   │   ├── cadastro.html
│   │   ├── perfil.html
│   │   └── admin/
│   └── emails/
├── certificates/             # Certificados PAdES
├── media/                    # Uploads de documentos
├── static/                   # Arquivos estáticos
├── logs/                     # Logs do sistema
├── requirements.txt
├── manage.py
├── iniciar_servidor.bat      # Script para iniciar servidor
└── servico_windows.py        # Serviço Windows

🛠️ Instalação

1. Criar ambiente virtual

python -m venv venv
venv\Scripts\activate  # Windows
# ou
source venv/bin/activate  # Linux/Mac

2. Instalar dependências

pip install -r requirements.txt

3. Criar diretórios necessários

mkdir certificates media static logs

4. Configurar variáveis de ambiente (opcional)

Para assinatura PAdES:

set SIGNATURE_CERT_PATH=caminho/para/seu/certificado.pfx
set SIGNATURE_CERT_PASSWORD=sua_senha

5. Executar migrações

python manage.py migrate

6. Criar pastas padrão

python manage.py criar_pastas_padrao

7. Criar superusuário

python manage.py createsuperuser

8. Executar o servidor

Desenvolvimento:

python manage.py runserver 8001

Produção (Waitress):

python -m waitress --port=8001 facilita_re.wsgi:application

Ou use o script:

iniciar_servidor.bat

Acesse: http://localhost:8001

📋 API Endpoints

Documentos

Endpoint Método Descrição
/ GET Página inicial com lista de documentos
/upload/ GET/POST Upload de novos documentos
/editar/<uuid>/ GET Editor de PDF com anotações
/api/editar/<uuid>/ POST Salvar anotações no PDF
/assinar/<uuid>/ GET Página de assinatura
/api/assinar/<uuid>/ POST Processar assinatura
/documento/<uuid>/assinado/ GET Ver documento assinado
/download/<uuid>/ GET Download do documento
/documento/<uuid>/mover/ POST Mover documento para pasta

Validação

Endpoint Método Descrição
/validacao/ GET Lista de documentos pendentes
/validacao/<uuid>/ GET/POST Validar/Rejeitar documento
/validacao/historico/ GET Histórico de validações

Verificação

Endpoint Método Descrição
/verificar/ GET Portal de verificação
/verificar/<uuid>/ GET Verificação pública
/api/verificar/<uuid>/hash/ POST Verificar hash do arquivo
/api/verificar/arquivo/ POST Verificar arquivo por upload

Pastas

Endpoint Método Descrição
/criar_pasta/ POST Criar pasta personalizada
/editar_pasta/<id>/ POST Editar nome da pasta
/excluir_pasta/<id>/ POST Excluir pasta vazia

Sugestões

Endpoint Método Descrição
/api/sugestoes/ GET Buscar sugestões de texto
/api/sugestoes/ POST Registrar nova sugestão

🔒 Segurança

  • Hash SHA-256: Verificação de integridade para cada documento
  • Log de Auditoria: IP, User Agent, timestamp e geolocalização
  • Assinatura PAdES: Selo digital invisível (quando configurado)
  • CSRF Protection: Em todas as requisições POST
  • Rate Limiting: Proteção contra abuso de requisições
  • UUID: Identificadores únicos não sequenciais
  • Protocolo: Rastreamento com formato padronizado

⚖️ Base Legal

Este sistema está em conformidade com:

  • MP 2.200-2/2001: Infraestrutura de Chaves Públicas Brasileira
  • Lei 14.063/2020: Lei da Assinatura Eletrônica

🔧 Comandos de Gestão

# Criar pastas padrão para todos os usuários
python manage.py criar_pastas_padrao

# Expirar documentos vencidos
python manage.py expirar_documentos

# Migrar documentos existentes para pastas
python manage.py migrar_documentos_pastas

🖥️ Instalação como Serviço Windows

# Instalar serviço
instalar_servico.bat

# Gerenciar serviço
gerenciar_servico.bat

# Desinstalar serviço
desinstalar_servico.bat

📝 Licença

Este projeto é proprietário da Facilita RE.

👨‍💻 Desenvolvido por

Facilita RE - Sistema de Assinaturas Eletrônicas

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors