Skip to content

Latest commit

 

History

History
291 lines (231 loc) · 9.46 KB

File metadata and controls

291 lines (231 loc) · 9.46 KB

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