entregas_app/docs/LOGS_DETALHADOS_DEBUG_SALVA...

10 KiB

🔍 LOGS DETALHADOS PARA DEBUG DO ERRO "Falha ao salvar fotos localmente"

🎯 OBJETIVO

Adicionar logs detalhados em todo o processo de salvamento de fotos para identificar exatamente onde está ocorrendo o erro LoadBundleFromServerRequestError e "Falha ao salvar fotos localmente".

🔧 LOGS IMPLEMENTADOS

1. CompleteDeliveryScreen.tsx - Processo de Salvamento

Arquivo: src/screens/main/CompleteDeliveryScreen.tsx Linhas: 494-559

Logs Adicionados:

console.log('🚨 DEBUG - INICIANDO SALVAMENTO LOCAL DE FOTOS');
console.log('🚨 Total de fotos:', photos.length);
console.log('🚨 Fotos:', photos);
console.log('🚨 Assinatura:', signature ? 'Presente' : 'Ausente');
console.log('🚨 delivery.outId:', delivery.outId);
console.log('🚨 currentInvoice.transactionId:', currentInvoice.transactionId);
console.log('🚨 photoUploadService importado com sucesso');
console.log('🚨 Iniciando salvamento de fotos...');
console.log(`🚨 Salvando foto ${i + 1}/${photos.length}:`, photoPath);
console.log(`🚨 Foto ${i + 1} salva com ID:`, uploadId);
console.log('🚨 Salvando assinatura...');
console.log('🚨 Assinatura salva com ID:', signatureUploadId);
console.log('🚨 URLs temporárias criadas:', { uploadedPhotoUrls, signatureUrl });

Logs de Erro:

console.error('❌ Erro ao salvar fotos localmente:', err);
console.error('❌ Stack trace:', err.stack);
console.error('❌ Error message:', err.message);
console.error('❌ Error name:', err.name);

2. photoUploadService.ts - Função addPhotoToUpload

Arquivo: src/services/photoUploadService.ts Linhas: 38-86

Logs Adicionados:

console.log('🚨 DEBUG - addPhotoToUpload INICIADO');
console.log('🚨 deliveryId:', deliveryId);
console.log('🚨 transactionId:', transactionId);
console.log('🚨 localPath:', localPath);
console.log('🚨 uploadId gerado:', uploadId);
console.log('🚨 photoUpload objeto criado:', photoUpload);
console.log('🚨 Salvando no banco de dados...');
console.log('🚨 Salvo no banco de dados com sucesso');
console.log('🚨 Adicionado à fila local');
console.log('🚨 Iniciando processamento da fila...');

Logs de Erro:

console.error('🚨 ERRO em addPhotoToUpload:', error);
console.error('🚨 Stack trace:', error.stack);
console.error('🚨 Error message:', error.message);
console.error('🚨 Error name:', error.name);

3. database.ts - Função savePhotoUpload

Arquivo: src/services/database.ts Linhas: 542-590

Logs Adicionados:

console.log('🚨 DEBUG - savePhotoUpload INICIADO');
console.log('🚨 photoUpload recebido:', photoUpload);
console.log('🚨 usingSQLite:', usingSQLite);
console.log('🚨 Preparando query SQL...');
console.log('🚨 Query SQL:', query);
console.log('🚨 Parâmetros:', params);
console.log('🚨 Executando query...');
console.log('🚨 Query executada com sucesso:', result);
console.log('🚨 Foto salva no SQLite:', photoUpload.id);

Logs de Erro:

console.error('❌ ERRO em savePhotoUpload:', error);
console.error('❌ Stack trace:', error.stack);
console.error('❌ Error message:', error.message);
console.error('❌ Error name:', error.name);
console.error('❌ Error code:', error.code);

4. database.ts - Função executeQuery

Arquivo: src/services/database.ts Linhas: 56-99

Logs Adicionados:

console.log('🚨 DEBUG - executeQuery INICIADO');
console.log('🚨 Query:', query);
console.log('🚨 Parâmetros:', params);
console.log('🚨 usingSQLite:', usingSQLite);
console.log('🚨 db existe:', !!db);
console.log('🚨 Verificando tipo de query...');
console.log('🚨 É SELECT?', isSelect);
console.log('🚨 Executando SELECT com getAllAsync...');
console.log('🚨 SELECT executado com sucesso, resultado:', result);
console.log('🚨 Executando INSERT/UPDATE/DELETE com runAsync...');
console.log('🚨 INSERT/UPDATE/DELETE executado com sucesso, resultado:', result);

Logs de Erro:

console.error("❌ ERRO em executeQuery:", error);
console.error("❌ Stack trace:", error.stack);
console.error("❌ Error message:", error.message);
console.error("❌ Error name:", error.name);
console.error("❌ Error code:", error.code);

5. database.ts - Inicialização do SQLite

Arquivo: src/services/database.ts Linhas: 10-53 e 104-129

Logs Adicionados:

console.log("🚨 DEBUG - Iniciando inicialização do SQLite...");
console.log("🚨 Verificando SQLite.openDatabaseAsync...");
console.log("🚨 Abrindo banco de dados...");
console.log("🚨 Banco de dados aberto:", !!db);
console.log("🚨 Testando banco de dados...");
console.log("✅ Teste do banco bem-sucedido");
console.log("✅ SQLite (expo-sqlite) inicializado com sucesso!");
console.log('🚨 Resultado da inicialização:', success);
console.log('🚨 usingSQLite definido como:', usingSQLite);
console.log('🚨 sqliteInitialized definido como:', sqliteInitialized);

Logs de Erro:

console.error("❌ ERRO ao inicializar SQLite:", error);
console.error("❌ Stack trace:", error.stack);
console.error("❌ Error message:", error.message);
console.error("❌ Error name:", error.name);
console.error("❌ Error code:", error.code);

🎯 FLUXO DE LOGS ESPERADO

Sucesso:

LOG  🚨 DEBUG - INICIANDO SALVAMENTO LOCAL DE FOTOS
LOG  🚨 Total de fotos: 2
LOG  🚨 Fotos: ["file:///path/to/photo1.jpg", "file:///path/to/photo2.jpg"]
LOG  🚨 Assinatura: Presente
LOG  🚨 delivery.outId: 6518
LOG  🚨 currentInvoice.transactionId: 12345
LOG  🚨 photoUploadService importado com sucesso
LOG  🚨 Iniciando salvamento de fotos...
LOG  🚨 Salvando foto 1/2: file:///path/to/photo1.jpg
LOG  🚨 DEBUG - addPhotoToUpload INICIADO
LOG  🚨 deliveryId: 6518
LOG  🚨 transactionId: 12345
LOG  🚨 localPath: file:///path/to/photo1.jpg
LOG  🚨 uploadId gerado: upload_1234567890_abc123
LOG  🚨 photoUpload objeto criado: { id: "upload_1234567890_abc123", ... }
LOG  🚨 Salvando no banco de dados...
LOG  🚨 DEBUG - savePhotoUpload INICIADO
LOG  🚨 photoUpload recebido: { id: "upload_1234567890_abc123", ... }
LOG  🚨 usingSQLite: true
LOG  🚨 Preparando query SQL...
LOG  🚨 Query SQL: INSERT OR REPLACE INTO photo_uploads ...
LOG  🚨 Parâmetros: ["upload_1234567890_abc123", "6518", 12345, ...]
LOG  🚨 Executando query...
LOG  🚨 DEBUG - executeQuery INICIADO
LOG  🚨 Query: INSERT OR REPLACE INTO photo_uploads ...
LOG  🚨 Parâmetros: ["upload_1234567890_abc123", "6518", 12345, ...]
LOG  🚨 usingSQLite: true
LOG  🚨 db existe: true
LOG  🚨 Verificando tipo de query...
LOG  🚨 É SELECT? false
LOG  🚨 Executando INSERT/UPDATE/DELETE com runAsync...
LOG  🚨 INSERT/UPDATE/DELETE executado com sucesso, resultado: { lastInsertRowId: 1, changes: 1 }
LOG  🚨 Query executada com sucesso: { rows: { _array: [], length: 0 }, insertId: 1, rowsAffected: 1 }
LOG  🚨 Foto salva no SQLite: upload_1234567890_abc123
LOG  🚨 Salvo no banco de dados com sucesso
LOG  🚨 Adicionado à fila local
LOG  🚨 Foto 1 salva com ID: upload_1234567890_abc123
LOG  ✅ Fotos e assinatura salvas localmente para upload posterior

Erro:

LOG  🚨 DEBUG - INICIANDO SALVAMENTO LOCAL DE FOTOS
LOG  🚨 Total de fotos: 2
LOG  🚨 Fotos: ["file:///path/to/photo1.jpg", "file:///path/to/photo2.jpg"]
LOG  🚨 Assinatura: Presente
LOG  🚨 delivery.outId: 6518
LOG  🚨 currentInvoice.transactionId: 12345
LOG  🚨 photoUploadService importado com sucesso
LOG  🚨 Iniciando salvamento de fotos...
LOG  🚨 Salvando foto 1/2: file:///path/to/photo1.jpg
LOG  🚨 DEBUG - addPhotoToUpload INICIADO
LOG  🚨 deliveryId: 6518
LOG  🚨 transactionId: 12345
LOG  🚨 localPath: file:///path/to/photo1.jpg
LOG  🚨 uploadId gerado: upload_1234567890_abc123
LOG  🚨 photoUpload objeto criado: { id: "upload_1234567890_abc123", ... }
LOG  🚨 Salvando no banco de dados...
LOG  🚨 DEBUG - savePhotoUpload INICIADO
LOG  🚨 photoUpload recebido: { id: "upload_1234567890_abc123", ... }
LOG  🚨 usingSQLite: false  ← AQUI ESTÁ O PROBLEMA!
LOG  ❌ SQLite não está disponível para salvar foto
LOG  ❌ ERRO em savePhotoUpload: Error: SQLite not available
LOG  ❌ Stack trace: Error: SQLite not available
LOG  ❌ Error message: SQLite not available
LOG  ❌ Error name: Error
LOG  ❌ Error code: undefined
LOG  🚨 ERRO em addPhotoToUpload: Error: SQLite not available
LOG  🚨 Stack trace: Error: SQLite not available
LOG  🚨 Error message: SQLite not available
LOG  🚨 Error name: Error
LOG  🚨 Erro ao salvar foto 1: Error: SQLite not available
LOG  ❌ Erro ao salvar fotos localmente: Error: SQLite not available
LOG  ❌ Stack trace: Error: SQLite not available
LOG  ❌ Error message: SQLite not available
LOG  ❌ Error name: Error

🧪 COMO TESTAR

  1. Execute o app e faça login
  2. Vá para uma entrega e tire fotos
  3. Clique em "Finalizar envio de nota"
  4. Analise os logs com prefixo 🚨 para identificar onde está falhando
  5. Procure por:
    • usingSQLite: false - Problema na inicialização do SQLite
    • db existe: false - Problema na abertura do banco
    • SQLite.openDatabaseAsync não é uma função - Problema na importação
    • LoadBundleFromServerRequestError - Problema de bundle/importação

🔍 POSSÍVEIS CAUSAS DO ERRO

1. SQLite não inicializado:

  • usingSQLite: false
  • Causa: Falha na inicialização do SQLite
  • Solução: Verificar logs de inicialização

2. Banco de dados não aberto:

  • db existe: false
  • Causa: Falha ao abrir o banco de dados
  • Solução: Verificar permissões e espaço em disco

3. Importação falhada:

  • SQLite.openDatabaseAsync não é uma função
  • Causa: Problema com expo-sqlite
  • Solução: Verificar instalação do pacote

4. LoadBundleFromServerRequestError:

  • Causa: Problema de bundle/importação dinâmica
  • Solução: Verificar se o import está funcionando

Com esses logs detalhados, poderemos identificar exatamente onde está o problema! 🔍