Prevent double-confirmation of same payment by different users
- Create pagos_confirmados table to track consumed email receipts - PagoValidadorService now validates: valor + fecha + hora (±10min) + llave Bancolombia - Each matched email is hashed (sha1 body+date) and marked as used; a second match returns estado=ya_usado instead of confirmado - Add partial remitente name matching against the registered user's name - GeminiVisionService prompt now extracts llave (@xxx) from the receipt image - TelegramBotService shows distinct message for ya_usado state Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
157691e166
commit
ba4ec8b6cf
@@ -115,15 +115,16 @@ class GeminiVisionService
|
||||
Analiza esta imagen de comprobante de pago bancario o transferencia.
|
||||
|
||||
Extrae los siguientes campos:
|
||||
- banco: nombre del banco (Bancolombia, Nequi, Davivienda, etc.)
|
||||
- banco: nombre del banco emisor (Bancolombia, Nequi, Davivienda, Banco de Bogota, etc.)
|
||||
- valor: monto en numeros enteros sin simbolos ni puntos (ej: 50000)
|
||||
- referencia: numero de referencia o transaccion (si existe)
|
||||
- fecha: fecha en formato dd/mm/yyyy
|
||||
- hora: hora en formato HH:mm (si existe)
|
||||
- remitente: nombre de quien envia el dinero (si aparece)
|
||||
- llave: llave de pago Bancolombia o Nequi del destinatario, empieza con @ (ej: @leon8909). Solo si aparece en el comprobante.
|
||||
|
||||
Responde UNICAMENTE con un JSON valido, sin markdown, sin explicacion:
|
||||
{"banco": "...", "valor": 50000, "referencia": "...", "fecha": "...", "hora": "...", "remitente": "..."}
|
||||
{"banco": "...", "valor": 50000, "referencia": "...", "fecha": "...", "hora": "...", "remitente": "...", "llave": "..."}
|
||||
|
||||
Si no encuentras un campo, usa null para ese campo.
|
||||
Si la imagen NO es un comprobante de pago, responde exactamente: {"error": "no_es_comprobante"}
|
||||
@@ -156,6 +157,7 @@ PROMPT;
|
||||
'fecha' => $json['fecha'] ?? null,
|
||||
'hora' => $json['hora'] ?? null,
|
||||
'remitente' => $json['remitente'] ?? null,
|
||||
'llave' => $json['llave'] ?? null,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user