fix: corregir pipeline de validación de pagos

- GeminiVisionService: eliminar thinkingConfig (rompe modelos flash),
  reducir maxOutputTokens 8192→512, timeout 20→40s, default gemini-2.0-flash
- PublicChat: detectar correctamente errores de Gemini (__error/__parse_error)
  que antes pasaban el guard if(!$datosPago) por ser arrays truthy
- PagoValidadorService: tolerancia de hora 0→3 min, remitente >=2→>=1 palabra
- CorreoImapService: break→continue en correos fuera de ventana (IMAP no
  garantiza orden cronológico), fetchSize *4→*2 para evitar timeout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro
2026-07-31 05:00:23 +00:00
co-authored by Claude Sonnet 4.6
parent fc17e57624
commit d88f67ab5b
4 changed files with 13 additions and 11 deletions
+5 -2
View File
@@ -23,6 +23,7 @@ use App\Models\Tarifas;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
@@ -563,8 +564,10 @@ class PublicChat extends Component
$datosPago = app(\App\Services\GeminiVisionService::class)->extraerPago($base64, $mimeType);
if (! $datosPago) {
$this->guardarMensajeBot($this->convId, "No pude leer el comprobante. Intenta con una foto mas clara.");
if (! $datosPago || isset($datosPago['__error']) || isset($datosPago['__parse_error'])) {
$detalle = $datosPago['__error'] ?? ($datosPago['__parse_error'] ?? '');
Log::warning('[PublicChat] Gemini error: ' . $detalle);
$this->guardarMensajeBot($this->convId, "No pude leer el comprobante. Intenta con una foto mas clara o con mejor iluminación.");
$this->cargarMensajes();
return;
}