# 🔍 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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:** ```typescript 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!** 🔍