mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.4 KiB
6.4 KiB
Instruções de Deploy - Módulo TCE
📋 Resumo das Alterações
O módulo TCE foi implementado com funcionalidades de:
- Upload e organização de arquivos por processo/pasta/subpasta
- Verificação de tamanho de arquivos (≤5MB)
- Aplicação de OCR (preparado, mas simulado)
- Assinatura digital com certificado A1 (.pfx) - IMPLEMENTADO
- Geração de arquivos .p7s
- Visualização de PDFs
🔧 Instalação no Servidor de Produção
1. Atualizar o Código
cd /caminho/do/sapl
git pull origin 3.1.x
2. Instalar Dependências Python
# Ativar o virtualenv do SAPL (ajuste o caminho conforme necessário)
source /opt/venv/bin/activate # ou o caminho do seu venv
# Instalar bibliotecas necessárias
pip install pyhanko==0.31.0
pip install pyhanko-certvalidator==0.29.0
pip install cryptography>=43.0.3
OU use o arquivo requirements:
pip install -r /caminho/para/tce_requirements.txt
3. Executar Migrações do Banco de Dados
python manage.py migrate
Migrações criadas:
0001_initial.py- Estrutura inicial (TceProcesso, TcePasta, TceArquivo, etc)0002_tcearquivo_subpasta.py- Campo subpasta em TceArquivo0003_tcepasta_subpastas_customizadas.py- Campo para subpastas customizadas
4. Coletar Arquivos Estáticos
python manage.py collectstatic --noinput
5. Criar Diretórios de Upload
# Criar diretórios para arquivos TCE
mkdir -p /caminho/do/media/tce/arquivos
mkdir -p /caminho/do/media/tce/reduzidos
mkdir -p /caminho/do/media/tce/ocr
mkdir -p /caminho/do/media/tce/assinados
mkdir -p /caminho/do/media/tce/p7s
# Dar permissões adequadas (ajuste o usuário conforme necessário)
chown -R www-data:www-data /caminho/do/media/tce
chmod -R 755 /caminho/do/media/tce
6. Reiniciar Serviços
# Para Apache
sudo systemctl restart apache2
# OU para Nginx + Gunicorn/uWSGI
sudo systemctl restart gunicorn # ou uwsgi
sudo systemctl restart nginx
📁 Arquivos Criados/Modificados
Novos Arquivos:
-
Modelos:
/sapl/tce/models.py- Modelos TceProcesso, TcePasta, TceArquivo, TceAssinatura, TceLog
-
Views:
/sapl/tce/admin_views.py- Views e APIs do módulo TCE
-
URLs:
/sapl/tce/urls.py- Rotas do módulo
-
Templates:
/sapl/templates/admin/tce/admin_index.html- Dashboard TCE/sapl/templates/admin/tce/processo_detail.html- Detalhes do processo/sapl/templates/admin/tce/subpasta_detail.html- Detalhes da subpasta (com wizard de upload)/sapl/templates/admin/tce/change_form.html- Formulário admin/sapl/templates/admin/tce/change_list.html- Lista admin/sapl/templates/admin/tce/app_index.html- Índice do app
-
Template Filters:
/sapl/tce/templatetags/tce_filters.py- Filtros customizados
-
Migrações:
/sapl/tce/migrations/0001_initial.py/sapl/tce/migrations/0002_tcearquivo_subpasta.py/sapl/tce/migrations/0003_tcepasta_subpastas_customizadas.py
Arquivos Modificados:
/sapl/templates/admin/base_site.html- Navbar do SAPL no admin
🔐 Configurações de Segurança
Permissões de Arquivos
# Em settings.py, verificar:
MEDIA_ROOT = '/caminho/do/media'
MEDIA_URL = '/media/'
# Limite de upload (opcional)
FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880 # 5MB
DATA_UPLOAD_MAX_MEMORY_SIZE = 5242880 # 5MB
Configuração do Servidor Web
Para Apache (.htaccess ou VirtualHost):
# Permitir upload de arquivos PDF e certificados
<Directory /caminho/do/media/tce>
Options -Indexes
AllowOverride None
Require all granted
# Apenas permitir acesso a arquivos específicos
<FilesMatch "\.(pdf|p7s)$">
Require all granted
</FilesMatch>
</Directory>
Para Nginx:
location /media/tce/ {
alias /caminho/do/media/tce/;
# Apenas permitir download de PDFs e p7s
location ~ \.(pdf|p7s)$ {
add_header Content-Disposition "inline";
}
# Bloquear acesso a outros arquivos
location ~ \.(pfx|p12)$ {
deny all;
}
}
🧪 Testar a Instalação
1. Verificar se as bibliotecas foram instaladas:
python -c "from pyhanko.sign import signers; print('✓ PyHanko OK')"
python -c "from pyhanko_certvalidator import ValidationContext; print('✓ Certvalidator OK')"
2. Acessar o módulo:
http://seu-servidor.com/tce/admin/
3. Testar funcionalidades:
- Criar um processo - Dashboard TCE > Novo Processo
- Criar pastas/subpastas - Dentro do processo
- Upload de arquivo - Com wizard de 5 abas
- Assinatura digital - Na aba 4 do wizard (requer certificado .pfx)
- Geração .p7s - Na aba 5 do wizard
⚠️ Problemas Conhecidos e Soluções
Erro: "Biblioteca de assinatura não instalada"
Solução:
pip install pyhanko pyhanko-certvalidator
sudo systemctl restart gunicorn # ou seu servidor WSGI
Erro de permissão ao fazer upload
Solução:
chown -R www-data:www-data /caminho/do/media/tce
chmod -R 755 /caminho/do/media/tce
Erro 404 ao visualizar arquivo
Solução:
Verificar se a rota está registrada em urls.py:
path('arquivo/<uuid:arquivo_id>/visualizar/', admin_views.visualizar_arquivo, name='visualizar_arquivo'),
JSONField não encontrado (Django < 3.1)
O código já está preparado com fallback:
try:
from django.db.models import JSONField
except ImportError:
from django.contrib.postgres.fields import JSONField
📊 Monitoramento
Logs para verificar:
# Logs do Django
tail -f /var/log/sapl/django.log
# Logs do servidor web
tail -f /var/log/apache2/error.log # Apache
tail -f /var/log/nginx/error.log # Nginx
Verificar uploads:
ls -lah /caminho/do/media/tce/arquivos/
ls -lah /caminho/do/media/tce/assinados/
ls -lah /caminho/do/media/tce/p7s/
🔄 Rollback (se necessário)
Se precisar reverter as alterações:
# Reverter migrações
python manage.py migrate tce 0000_initial # ou zero
# Reverter código
git revert <commit_hash>
git push
📞 Suporte
Em caso de dúvidas ou problemas:
- Verificar logs do servidor
- Testar em ambiente de desenvolvimento primeiro
- Verificar se todas as dependências foram instaladas
- Confirmar permissões de arquivos e diretórios
Data de criação: 03/10/2025 Versão do SAPL: 3.1.x Última atualização: Após merge com branch principal