This commit is contained in:
daniel.rodrigues 2025-10-31 11:03:01 -03:00
parent 502b15e1ed
commit 90507471de

View File

@ -2,22 +2,17 @@ import os
import sys
import requests
import pyodbc
import subprocess
from datetime import datetime, timedelta
# Detectar sistema operacional
IS_WINDOWS = sys.platform.startswith('win')
# Configurações de rede
NETWORK_SHARE = "//10.77.77.11/Contabilidade"
MOUNT_POINT = "/mnt/contabilidade"
SMB_USERNAME = "andrey.cunha" # ⚠️ ALTERE AQUI (apenas para Linux)
SMB_PASSWORD = "88253332Wa@" # ⚠️ ALTERE AQUI (apenas para Linux)
# Caminho baseado no sistema operacional
if IS_WINDOWS:
# Windows - caminho UNC direto
OUTPUT_DIR_BASE = r"\\10.77.77.11\Contabilidade\AUTOMAÇÃO\NotadeDebito"
else:
# Linux/Kubernetes - volume montado pelo PV
OUTPUT_DIR_BASE = "/mnt/contabilidade/AUTOMAÇÃO/NotadeDebito"
DB_CONN = (
@ -28,59 +23,25 @@ DB_CONN = (
"PWD=88253332Wa@;"
)
# 🔧 Montar compartilhamento de rede
def mount_network_share():
if IS_WINDOWS:
# No Windows, o compartilhamento de rede já está acessível diretamente
print("📁 Windows detectado - usando caminho UNC diretamente.")
return True
# 🔧 Verificar acesso ao compartilhamento
def check_storage_access():
"""Verifica se o diretório de armazenamento está acessível"""
print("📁 Verificando acesso ao armazenamento...")
print("📁 Linux detectado - montando compartilhamento de rede...")
try:
# Criar ponto de montagem se não existir
os.makedirs(MOUNT_POINT, exist_ok=True)
# Verificar se o diretório base existe
base_dir = OUTPUT_DIR_BASE.rsplit(os.sep, 1)[0] if os.sep in OUTPUT_DIR_BASE else OUTPUT_DIR_BASE
# Verificar se já está montado
result = subprocess.run(['mountpoint', '-q', MOUNT_POINT], capture_output=True)
if result.returncode == 0:
print("✅ Compartilhamento já está montado.")
return True
# Montar o compartilhamento
mount_cmd = [
'sudo', 'mount', '-t', 'cifs',
NETWORK_SHARE,
MOUNT_POINT,
'-o', f'username={SMB_USERNAME},password={SMB_PASSWORD},iocharset=utf8'
]
result = subprocess.run(mount_cmd, capture_output=True, text=True)
if result.returncode == 0:
print("✅ Compartilhamento montado com sucesso.")
if os.path.exists(base_dir):
print(f"✅ Diretório base acessível: {base_dir}")
# Criar diretório de saída se não existir
os.makedirs(OUTPUT_DIR_BASE, exist_ok=True)
print(f"✅ Diretório de saída pronto: {OUTPUT_DIR_BASE}")
return True
else:
print(f"❌ Erro ao montar: {result.stderr}")
print(f"❌ Diretório não acessível: {base_dir}")
if not IS_WINDOWS:
print("⚠️ ATENÇÃO: No Kubernetes, certifique-se de que o PersistentVolume está montado em /mnt/contabilidade")
return False
except Exception as e:
print(f"❌ Erro ao montar compartilhamento: {e}")
return False
# 🔧 Desmontar compartilhamento de rede
def unmount_network_share():
if IS_WINDOWS:
# No Windows não precisa desmontar
print("📁 Windows - nenhuma ação necessária.")
return
print("📁 Desmontando compartilhamento de rede...")
try:
result = subprocess.run(['sudo', 'umount', MOUNT_POINT], capture_output=True, text=True)
if result.returncode == 0:
print("✅ Compartilhamento desmontado com sucesso.")
else:
print(f"⚠️ Aviso ao desmontar: {result.stderr}")
except Exception as e:
print(f"⚠️ Erro ao desmontar compartilhamento: {e}")
# 1⃣ Token
def get_token():
@ -220,9 +181,9 @@ def download_pdf(token, franchise_id, doc_id, image_name, invoice_date):
# 🚀 Main
def main():
# Montar compartilhamento de rede
if not mount_network_share():
print("❌ Não foi possível montar o compartilhamento. Abortando.")
# Verificar acesso ao armazenamento
if not check_storage_access():
print("❌ Não foi possível acessar o armazenamento. Abortando.")
return
try:
@ -230,7 +191,7 @@ def main():
conn = pyodbc.connect(DB_CONN)
cursor = conn.cursor()
# Filtrar apenas notas do dia 29-10-2025
# Filtrar apenas notas do dia 27-10-2025
data_especifica = datetime(2025, 10, 27)
todos = get_all_documents(token)
documentos = filter_documents_by_date(todos, data_especifica, data_especifica)
@ -251,10 +212,8 @@ def main():
except Exception as e:
print(f"❌ Erro durante execução: {e}")
finally:
# Desmontar compartilhamento de rede
unmount_network_share()
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()