261 lines
10 KiB
Markdown
261 lines
10 KiB
Markdown
|
|
# 🔍 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!** 🔍
|