feat: web chat con IA, validación de pagos y OTP por correo

- Chat público en /chat con flujos de compra, recarga y credenciales
- Verificación de identidad por código OTP enviado al correo registrado
- Botones enriquecidos: cards, links, credenciales, validación de comprobante
- Gemini IA para detección de intención en texto libre
- Gemini Vision para extraer datos de foto de comprobante
- Validador de pagos cruzando IA con correos IMAP (Bancolombia)
- MercadoPago como pasarela de pago (reemplaza Wompi en el chat)
- Migraciones: payload en chat_messages, user_id en chat_contacts
- Config admin: API key Gemini, toggles IA y validación de foto

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro
2026-07-14 00:09:31 +00:00
co-authored by Claude Sonnet 4.6
parent a56a69dccb
commit 536377363c
13 changed files with 1862 additions and 95 deletions
+11 -1
View File
@@ -3,14 +3,24 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class ChatContact extends Model
{
protected $table = 'chat_contacts';
protected $fillable = ['canal', 'canal_id', 'nombre', 'telefono', 'metadata'];
protected $fillable = [
'canal', 'canal_id', 'nombre', 'telefono', 'metadata', 'user_id',
];
protected $casts = ['metadata' => 'array'];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function conversations(): HasMany
{
return $this->hasMany(ChatConversation::class, 'contact_id');