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 sys
import requests import requests
import pyodbc import pyodbc
import subprocess
from datetime import datetime, timedelta from datetime import datetime, timedelta
# Detectar sistema operacional # Detectar sistema operacional
IS_WINDOWS = sys.platform.startswith('win') 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 # Caminho baseado no sistema operacional
if IS_WINDOWS: if IS_WINDOWS:
# Windows - caminho UNC direto
OUTPUT_DIR_BASE = r"\\10.77.77.11\Contabilidade\AUTOMAÇÃO\NotadeDebito" OUTPUT_DIR_BASE = r"\\10.77.77.11\Contabilidade\AUTOMAÇÃO\NotadeDebito"
else: else:
# Linux/Kubernetes - volume montado pelo PV
OUTPUT_DIR_BASE = "/mnt/contabilidade/AUTOMAÇÃO/NotadeDebito" OUTPUT_DIR_BASE = "/mnt/contabilidade/AUTOMAÇÃO/NotadeDebito"
DB_CONN = ( DB_CONN = (
@ -28,59 +23,25 @@ DB_CONN = (
"PWD=88253332Wa@;" "PWD=88253332Wa@;"
) )
# 🔧 Montar compartilhamento de rede # 🔧 Verificar acesso ao compartilhamento
def mount_network_share(): def check_storage_access():
if IS_WINDOWS: """Verifica se o diretório de armazenamento está acessível"""
# No Windows, o compartilhamento de rede já está acessível diretamente print("📁 Verificando acesso ao armazenamento...")
print("📁 Windows detectado - usando caminho UNC diretamente.")
return True
print("📁 Linux detectado - montando compartilhamento de rede...") # Verificar se o diretório base existe
try: base_dir = OUTPUT_DIR_BASE.rsplit(os.sep, 1)[0] if os.sep in OUTPUT_DIR_BASE else OUTPUT_DIR_BASE
# Criar ponto de montagem se não existir
os.makedirs(MOUNT_POINT, exist_ok=True)
# Verificar se já está montado if os.path.exists(base_dir):
result = subprocess.run(['mountpoint', '-q', MOUNT_POINT], capture_output=True) print(f"✅ Diretório base acessível: {base_dir}")
if result.returncode == 0: # Criar diretório de saída se não existir
print("✅ Compartilhamento já está montado.") os.makedirs(OUTPUT_DIR_BASE, exist_ok=True)
return True print(f"✅ Diretório de saída pronto: {OUTPUT_DIR_BASE}")
# 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.")
return True return True
else: 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 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 # 1⃣ Token
def get_token(): def get_token():
@ -220,9 +181,9 @@ def download_pdf(token, franchise_id, doc_id, image_name, invoice_date):
# 🚀 Main # 🚀 Main
def main(): def main():
# Montar compartilhamento de rede # Verificar acesso ao armazenamento
if not mount_network_share(): if not check_storage_access():
print("❌ Não foi possível montar o compartilhamento. Abortando.") print("❌ Não foi possível acessar o armazenamento. Abortando.")
return return
try: try:
@ -230,7 +191,7 @@ def main():
conn = pyodbc.connect(DB_CONN) conn = pyodbc.connect(DB_CONN)
cursor = conn.cursor() 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) data_especifica = datetime(2025, 10, 27)
todos = get_all_documents(token) todos = get_all_documents(token)
documentos = filter_documents_by_date(todos, data_especifica, data_especifica) documentos = filter_documents_by_date(todos, data_especifica, data_especifica)
@ -251,10 +212,8 @@ def main():
except Exception as e: except Exception as e:
print(f"❌ Erro durante execução: {e}") print(f"❌ Erro durante execução: {e}")
import traceback
finally: traceback.print_exc()
# Desmontar compartilhamento de rede
unmount_network_share()
if __name__ == "__main__": if __name__ == "__main__":
main() main()