att
This commit is contained in:
parent
f2e091739c
commit
e568673a14
@ -523,9 +523,26 @@ def process_stores(stores_to_process, all_data, base_headers, token, is_retry=Fa
|
|||||||
all_data = []
|
all_data = []
|
||||||
failed_stores = []
|
failed_stores = []
|
||||||
|
|
||||||
|
# Estatísticas para relatório final
|
||||||
|
stats = {
|
||||||
|
"total_lojas": len(STORES),
|
||||||
|
"lojas_sucesso_primeira": 0,
|
||||||
|
"lojas_falha_inicial": [],
|
||||||
|
"lojas_recuperadas_retry": [],
|
||||||
|
"lojas_falha_final": [],
|
||||||
|
"registros_inseridos": 0,
|
||||||
|
"registros_deletados": 0,
|
||||||
|
"duplicatas_removidas": 0,
|
||||||
|
"pedidos_unicos": 0
|
||||||
|
}
|
||||||
|
|
||||||
# Primeira passagem: processar todas as lojas
|
# Primeira passagem: processar todas as lojas
|
||||||
failed_stores, TOKEN = process_stores(STORES, all_data, BASE_HEADERS, TOKEN)
|
failed_stores, TOKEN = process_stores(STORES, all_data, BASE_HEADERS, TOKEN)
|
||||||
|
|
||||||
|
# Guardar lojas que falharam na primeira tentativa
|
||||||
|
stats["lojas_falha_inicial"] = failed_stores.copy()
|
||||||
|
stats["lojas_sucesso_primeira"] = len(STORES) - len(failed_stores)
|
||||||
|
|
||||||
# Retry das lojas que falharam
|
# Retry das lojas que falharam
|
||||||
retry_round = 0
|
retry_round = 0
|
||||||
while failed_stores and retry_round < FAILED_STORES_MAX_RETRIES:
|
while failed_stores and retry_round < FAILED_STORES_MAX_RETRIES:
|
||||||
@ -544,13 +561,23 @@ while failed_stores and retry_round < FAILED_STORES_MAX_RETRIES:
|
|||||||
BASE_HEADERS["authorization"] = TOKEN
|
BASE_HEADERS["authorization"] = TOKEN
|
||||||
BASE_HEADERS["x-authorization"] = TOKEN
|
BASE_HEADERS["x-authorization"] = TOKEN
|
||||||
|
|
||||||
|
# Guardar lojas antes do retry para comparar depois
|
||||||
|
lojas_antes_retry = set(failed_stores)
|
||||||
|
|
||||||
# Tentar processar as lojas que falharam (is_retry=True para evitar duplicação)
|
# Tentar processar as lojas que falharam (is_retry=True para evitar duplicação)
|
||||||
stores_to_retry = failed_stores.copy()
|
stores_to_retry = failed_stores.copy()
|
||||||
failed_stores, TOKEN = process_stores(stores_to_retry, all_data, BASE_HEADERS, TOKEN, is_retry=True)
|
failed_stores, TOKEN = process_stores(stores_to_retry, all_data, BASE_HEADERS, TOKEN, is_retry=True)
|
||||||
|
|
||||||
|
# Identificar lojas que foram recuperadas neste retry
|
||||||
|
lojas_recuperadas = lojas_antes_retry - set(failed_stores)
|
||||||
|
stats["lojas_recuperadas_retry"].extend(lojas_recuperadas)
|
||||||
|
|
||||||
if not failed_stores:
|
if not failed_stores:
|
||||||
print(f"\n[SUCESSO] Todas as lojas foram processadas com sucesso no retry {retry_round}!")
|
print(f"\n[SUCESSO] Todas as lojas foram processadas com sucesso no retry {retry_round}!")
|
||||||
|
|
||||||
|
# Guardar lojas que falharam definitivamente
|
||||||
|
stats["lojas_falha_final"] = failed_stores.copy()
|
||||||
|
|
||||||
# Resumo final das lojas que ainda falharam
|
# Resumo final das lojas que ainda falharam
|
||||||
if failed_stores:
|
if failed_stores:
|
||||||
print(f"\n{'=' * 60}")
|
print(f"\n{'=' * 60}")
|
||||||
@ -587,6 +614,7 @@ if all_data:
|
|||||||
print(f"[AVISO] Removidas {duplicates_removed} linhas duplicadas de all_data")
|
print(f"[AVISO] Removidas {duplicates_removed} linhas duplicadas de all_data")
|
||||||
all_data = unique_data
|
all_data = unique_data
|
||||||
|
|
||||||
|
stats["duplicatas_removidas"] = duplicates_removed
|
||||||
print(f"Total de registros após deduplicação: {len(all_data)}")
|
print(f"Total de registros após deduplicação: {len(all_data)}")
|
||||||
|
|
||||||
print(f"\nConectando ao banco de dados...")
|
print(f"\nConectando ao banco de dados...")
|
||||||
@ -600,6 +628,7 @@ if all_data:
|
|||||||
|
|
||||||
# Obter lista única de pedidos para deletar
|
# Obter lista única de pedidos para deletar
|
||||||
unique_orders = list(set([record["Pedido"] for record in all_data]))
|
unique_orders = list(set([record["Pedido"] for record in all_data]))
|
||||||
|
stats["pedidos_unicos"] = len(unique_orders)
|
||||||
print(f"Total de pedidos únicos a processar: {len(unique_orders)}")
|
print(f"Total de pedidos únicos a processar: {len(unique_orders)}")
|
||||||
|
|
||||||
# Deletar registros existentes em lotes de 500
|
# Deletar registros existentes em lotes de 500
|
||||||
@ -617,6 +646,7 @@ if all_data:
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
print(f" Deletados {deleted_count} registros (lote {i//batch_size + 1}/{(len(unique_orders)-1)//batch_size + 1})...")
|
print(f" Deletados {deleted_count} registros (lote {i//batch_size + 1}/{(len(unique_orders)-1)//batch_size + 1})...")
|
||||||
|
|
||||||
|
stats["registros_deletados"] = deleted_count
|
||||||
print(f"Total de registros deletados: {deleted_count}")
|
print(f"Total de registros deletados: {deleted_count}")
|
||||||
|
|
||||||
# Query de inserção
|
# Query de inserção
|
||||||
@ -676,6 +706,7 @@ if all_data:
|
|||||||
# Commit final
|
# Commit final
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
|
stats["registros_inseridos"] = records_inserted
|
||||||
print(f"\n✓ Dados salvos com sucesso no banco de dados!")
|
print(f"\n✓ Dados salvos com sucesso no banco de dados!")
|
||||||
print(f"Total de registros inseridos: {records_inserted}")
|
print(f"Total de registros inseridos: {records_inserted}")
|
||||||
|
|
||||||
@ -688,3 +719,52 @@ if all_data:
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
print("\nNenhum dado encontrado para salvar.")
|
print("\nNenhum dado encontrado para salvar.")
|
||||||
|
|
||||||
|
# ===============================
|
||||||
|
# 6) RELATÓRIO FINAL
|
||||||
|
# ===============================
|
||||||
|
|
||||||
|
print("\n")
|
||||||
|
print("=" * 70)
|
||||||
|
print(" RELATÓRIO FINAL DE EXECUÇÃO")
|
||||||
|
print("=" * 70)
|
||||||
|
|
||||||
|
print("\n📊 ESTATÍSTICAS DE LOJAS:")
|
||||||
|
print(f" Total de lojas processadas: {stats['total_lojas']}")
|
||||||
|
print(f" Lojas com sucesso na 1ª tentativa: {stats['lojas_sucesso_primeira']}")
|
||||||
|
print(f" Lojas que falharam inicialmente: {len(stats['lojas_falha_inicial'])}")
|
||||||
|
print(f" Lojas recuperadas após retry: {len(stats['lojas_recuperadas_retry'])}")
|
||||||
|
print(f" Lojas que falharam definitivamente: {len(stats['lojas_falha_final'])}")
|
||||||
|
|
||||||
|
if stats['lojas_recuperadas_retry']:
|
||||||
|
print(f"\n Lojas recuperadas no retry:")
|
||||||
|
for loja in stats['lojas_recuperadas_retry']:
|
||||||
|
print(f" - {loja}")
|
||||||
|
|
||||||
|
if stats['lojas_falha_final']:
|
||||||
|
print(f"\n Lojas com falha definitiva:")
|
||||||
|
for loja in stats['lojas_falha_final']:
|
||||||
|
print(f" - {loja}")
|
||||||
|
|
||||||
|
print("\n📦 ESTATÍSTICAS DE DADOS:")
|
||||||
|
print(f" Pedidos únicos processados: {stats['pedidos_unicos']}")
|
||||||
|
print(f" Duplicatas removidas (memória): {stats['duplicatas_removidas']}")
|
||||||
|
print(f" Registros deletados do banco: {stats['registros_deletados']}")
|
||||||
|
print(f" Registros inseridos no banco: {stats['registros_inseridos']}")
|
||||||
|
|
||||||
|
# Calcular taxa de sucesso
|
||||||
|
taxa_sucesso = ((stats['total_lojas'] - len(stats['lojas_falha_final'])) / stats['total_lojas'] * 100) if stats['total_lojas'] > 0 else 0
|
||||||
|
|
||||||
|
print("\n📈 RESUMO:")
|
||||||
|
print(f" Taxa de sucesso: {taxa_sucesso:.1f}%")
|
||||||
|
|
||||||
|
if len(stats['lojas_falha_final']) == 0:
|
||||||
|
print(f" Status: ✓ SUCESSO TOTAL")
|
||||||
|
elif len(stats['lojas_falha_final']) < stats['total_lojas']:
|
||||||
|
print(f" Status: ⚠ SUCESSO PARCIAL")
|
||||||
|
else:
|
||||||
|
print(f" Status: ✗ FALHA TOTAL")
|
||||||
|
|
||||||
|
print("\n" + "=" * 70)
|
||||||
|
print(" FIM DO RELATÓRIO")
|
||||||
|
print("=" * 70)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user