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.
- ✅ 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
- ✅ 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)
- ✅ 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
- ✅ 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
- ✅ 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
- ✅ 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)
- ✅ 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
- ✅ Envio de convite por email para terceiros assinarem
- ✅ Templates de email personalizados
- ✅ Lembretes de expiração de documentos
- ✅ 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
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
python -m venv venv
venv\Scripts\activate # Windows
# ou
source venv/bin/activate # Linux/Macpip install -r requirements.txtmkdir certificates media static logsPara assinatura PAdES:
set SIGNATURE_CERT_PATH=caminho/para/seu/certificado.pfx
set SIGNATURE_CERT_PASSWORD=sua_senhapython manage.py migratepython manage.py criar_pastas_padraopython manage.py createsuperuserDesenvolvimento:
python manage.py runserver 8001Produção (Waitress):
python -m waitress --port=8001 facilita_re.wsgi:applicationOu use o script:
iniciar_servidor.batAcesse: http://localhost:8001
| 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 |
| 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 |
| 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 |
| 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 |
| Endpoint | Método | Descrição |
|---|---|---|
/api/sugestoes/ |
GET | Buscar sugestões de texto |
/api/sugestoes/ |
POST | Registrar nova sugestão |
- 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
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
# 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# Instalar serviço
instalar_servico.bat
# Gerenciar serviço
gerenciar_servico.bat
# Desinstalar serviço
desinstalar_servico.batEste projeto é proprietário da Facilita RE.
Facilita RE - Sistema de Assinaturas Eletrônicas