# 📋 CHANGELOG — HAP (La-vamos Cuidando)

Todas las actualizaciones destacadas, mejoras visuales, correcciones de errores, nuevas funcionalidades y refactorizaciones realizadas en la plataforma HAP.

---

## 📌 Resumen General de Cambios

- 🌐 **Conexión Directa a Producción**: Túnel SSH en puerto 3307 que permite ejecutar el proyecto en local consumiendo la base de datos viva de `lavamoscuidando.com` en tiempo real.
- 📦 **Sincronización Local y Respaldo**: Sincronización completa de datos (599 clientes, 590 servicios, 617 autos) y multimedia (avatares, fotos de autos e insignias) con script de respaldo automático (`respaldar_produccion.sh`).
- 🚗 **Mi Garage**: Rediseño visual premium con tarjetas responsivas, categorías de vehículos y confirmaciones de eliminación.
- ⏰ **Servicios Programados**: Módulo de agendamiento futuro en 1 sola pantalla (5 pasos) con filtrado inteligente, restricción de 3h de anticipación y solución al Error 500.
- 🗺️ **Seguimiento GPS (ETA)**: Animación del Happer en mapa Leaflet matemáticamente sincronizada con la duración real de llegada.
- 🚪 **Cierre de Sesión Seguro**: Solución al fallo de logout con modal SweetAlert2 y revocación limpia de galletas y sesión.
- 🧾 **Facturación Electrónica**: Botones por servicio, verificación fiscal, envío de correo con Constancia CSF adjunta, borrador `mailto:` para el contador y botón `✅ FACTURA SOLICITADA`.
- 🎁 **Programa de Referidos**: Validación en tiempo real (`validar_referido.php`), auto-captura desde URL en registro, descuento de $50 MXN en 1er servicio y abono de +$50 MXN de crédito al referidor.
- 🏆 **Ranking Top Clientes**: Reporte interactivo de clientes con mayor volumen de servicios e ingresos globales (`top_clientes.php`).
- 🗓️ **Torre de Control & Motor Recurrente de Días HAP**: Tablero logístico para operadores con matriz de capacidad semanal y asignación AJAX de Happers (`torre_dias_hap.php`), auto-sincronización idempotente (`sincronizador_dias_hap.php`), endpoint CRON (`cron/generar_dias_hap.php`) y ciclo perpetuo al finalizar servicio vía QR.

---

## 🚀 Historial Detallado por Versión

### [v2.5.8] - 2026-08-28
#### 💳 Solución Integral de Métodos de Pago, Tokenización PCI-DSS, ETA 40-120 min y Captura Segura (`programar_servicio.php`, `hapiar.php`, `metodos_pago.php`, `charge.js`, `stripe_config.php`, `QR/code.php`)
- **Stripe Elements Integrado en Agendamiento (`programar_servicio.php`)**:
  - Incorporación del componente oficial de Stripe Elements (`card-element-prog`) para ingresar datos bancarios directamente en la pantalla de reservación.
  - Validación y tokenización en vivo mediante `stripe.createPaymentMethod` antes de enviar el formulario.
  - Almacenamiento seguro en la tabla `clientes_tarjetas` y vinculación directa al `Customer` en Stripe para evitar reingreso de datos.
  - Enlace rápido a `metodos_pago.php?return_to=programar_servicio.php` con retorno inteligente y preselección automática de la nueva tarjeta.
- **Perfeccionamiento de Flujo Express y Resiliencia (`hapiar.php`, `charge.js`, `crear_stripe_intent.php`, `stripe.php`)**:
  - Intercepción y confirmación de `PaymentIntent` soportando estados `requires_capture` y `succeeded`.
  - Captura del nombre del titular de la tarjeta y guardado automático de nuevas tarjetas tras el pago.
  - Blindaje para pedidos con 100% de descuento o `$0.00 MXN` (`CUPON_TOTAL_FREE`), evitando excepciones de monto mínimo de Stripe.
  - Actualización del tiempo de espera y telemetría de radar a **`⏱️ 40–120 min`** de llegada aproximada.
- **Sincronización Centralizada de Tarjetas (`stripe_config.php`)**:
  - Implementación de `obtener_o_sincronizar_tarjetas_cliente` que asegura la tabla `clientes_tarjetas` y sincroniza bidireccionalmente los PaymentMethods entre Stripe y la base de datos local.
- **Captura Segura al Escanear QR en la App del Happer (`HAPPERS/QR/code.php`)**:
  - Corrección de excepciones al procesar órdenes: captura con seguridad PaymentIntents (`pi_`), ejecuta cargos off-session para reservas programadas con PaymentMethod (`pm_`) y permite el flujo inmediato de membresías (`MEMBRESIA_CANJE`) y cupones sin intentar llamadas inválidas a Stripe.
- **Auditoría en Vivo de Stripe y Base de Datos**:
  - Balance verificado: `$2,053.20 MXN` disponibles en cuenta Live.
  - 523 órdenes procesadas con éxito por `$126,421.47 MXN`.

### [v2.5.7] - 2026-08-25
#### 🗓️ Motor Recurrente de Días HAP & Torre de Control Logística (`torre_dias_hap.php`, `sincronizador_dias_hap.php`, `cron/generar_dias_hap.php`)
- **Motor Central de Sincronización y Auto-Generación Recurrente**:
  - Implementación de [`sincronizador_dias_hap.php`](file:///Users/Dann/Server/ha-p/HAP/SISTEMA/CLIENTE/sincronizador_dias_hap.php) para asegurar que cada socio activo con Día HAP tenga siempre su próxima cita firme creada en `venta_desc`.
  - Candado estricto contra duplicados (idempotencia en BD) y protección de saldo (`lavados_disponibles`).
  - Disparador automático al concluir un servicio en [`QR/code.php`](file:///Users/Dann/Server/ha-p/HAP/SISTEMA/HAPPERS/QR/code.php) para generar el servicio de la siguiente semana (+7 días) en piloto automático.
  - Endpoint CRON [`cron/generar_dias_hap.php`](file:///Users/Dann/Server/ha-p/HAP/cron/generar_dias_hap.php) con token de seguridad.
- **Torre de Control Logística (Dashboard Operativo)**:
  - Nueva interfaz interactiva en [`ADMINISTRADOR/torre_dias_hap.php`](file:///Users/Dann/Server/ha-p/HAP/SISTEMA/ADMINISTRADOR/torre_dias_hap.php) con métricas de capacidad por día de la semana, filtros temporales (Hoy, Mañana, Próximos 7 días), semáforo de citas sin Happer y botón de sincronización en vivo.
  - Asignación y reasignación rápida de Happers mediante selector AJAX con 1 clic ([`asignar_happer_ajax.php`](file:///Users/Dann/Server/ha-p/HAP/SISTEMA/ADMINISTRADOR/asignar_happer_ajax.php)).
  - Enlaces directos a WhatsApp para contacto ágil con clientes y accesos directos en el menú de navegación y Dashboard.
- **Claridad y Agenda para Happers & Socios**:
  - En [`happer.php`](file:///Users/Dann/Server/ha-p/HAP/SISTEMA/HAPPERS/happer.php), nueva sección "Mi Agenda Programada" para citas ya asignadas y pool de servicios programados disponibles de la semana con auto-sincronización.
  - En [`membresia.php`](file:///Users/Dann/Server/ha-p/HAP/SISTEMA/CLIENTE/membresia.php), visualizador de "Proyección de Rutina Semanal" con fechas calculadas de las siguientes 3 semanas.

### [v2.3.0] - 2026-08-17
#### 💎 Lanzamiento Oficial: Ecosistema Membresía HAP (3 Planes con 15% de Descuento Anual)
- **3 Niveles de Membresía por Categoría de Vehículo (36 Lavados Anuales)**:
  - 🚗 **Membresía Chica ($495.00 MXN/mes)**: 15% de ahorro (-$1,048 MXN) sobre precio regular de $194. Cobertura exclusiva para vehículos **CHICOS**.
  - 🚙 **Membresía Mediana ($563.00 MXN/mes)**: 15% de ahorro (-$1,200 MXN) sobre precio regular de $221. Cobertura para vehículos **CHICOS y MEDIANOS**.
  - 🚐 **Membresía Grande ($597.00 MXN/mes)**: 15% de ahorro (-$1,264 MXN) sobre precio regular de $234. Cobertura Total para vehículos **CHICOS, MEDIANOS y GRANDES (SUVs)**.
- **Reglas de Jerarquía de Cobertura Estricta**:
  - Validación de categoría en backend (`procesar_membresia.php`) y en agendamiento (`programar_servicio.php`).
  - Si un usuario con membresía Chica intenta canjear un auto Mediano o Grande a $0.00 MXN, el sistema bloquea el canje no cubierto y permite pagarlo de forma individual con tarjeta.
- **Promo de Lanzamiento Exclusiva (Rifa 1 de 30 Gratis)**:
  - Banner dorado de alto impacto en [`membresia.php`](file:///Users/dann/Server/ha-p/HAP/SISTEMA/CLIENTE/membresia.php) destacando la promoción de apertura.
  - Dinámica oficial: Los primeros 30 clientes en contratar entran automáticamente a la rifa donde 1 afortunado recibirá su año completo de membresía 100% gratis.
  - Contador dinámico en tiempo real de lugares disponibles para incentivar la urgencia y conversión.
  - **Pregunta Principal**: *¿Quieres tener un DÍA HAP?* con 2 tarjetas interactivas:
    - **Opción SÍ (Recomendada)**: Despliega el configurador de día (Lun a Dom), hora preferida (8:00 AM a 4:00 PM), vehículo y dirección recurrente.
    - **Opción NO (Modo Flexible)**: Contrae los selectores y despliega la tarjeta de libertad total explicando que el cliente tiene **todos sus servicios incluidos** a costo $0.00 MXN para solicitarlos bajo demanda (sujeto a disponibilidad en zona) o programarlos con al menos 3 horas de anticipación (8:00 AM a 4:00 PM).
  - **Corrección de Scroll Móvil**: Ajuste de padding inferior (`140px`) en `.mem-wrapper` garantizando que el botón de confirmación y activación no quede tapado por la barra de navegación flotante.
- **Política de Retención y Penalizaciones por Cancelación de Membresía (`procesar_membresia.php`, `membresia.php`)**:
  - **Compromiso Anual**: Las membresías contemplan un ciclo anualizado (costo mensual $\times 12$ meses) para otorgar el precio preferente y los 36 lavados incluidos a $0.00 MXN.
  - **Penalización en Primeros 6 Meses ($\le 182$ días)**: Aplica un cargo del **70% del valor anualizado** (ej. $4,729.20 MXN en Plan Mediano).
  - **Penalización Después de 6 Meses ($> 182$ días)**: Aplica un cargo del **10% del valor anualizado** (ej. $675.60 MXN en Plan Mediano).
  - **Modal de Retención de Alto Impacto**: Presenta el desglose transparente de la penalización, los beneficios que se perderían y destaca como acción principal recomendada **`✨ MANTENER MI MEMBRESÍA ($0 CARGO)`**.
  - **Cobro Automatizado en Stripe**: Al confirmar la cancelación, se ejecuta el cobro de la penalización a la tarjeta registrada mediante `PaymentIntent` y se cancela la suscripción en Stripe.
- **Regla de Negocio: Reprogramación Preferente y Fees de Cancelación Escalonados (`stripe_cancel.php`, `reprogramar_servicio_ajax.php`, `perfil.php`, `tracking.php`)**:
  - **Invitación Prioritaria a Reagendar ($0.00 MXN)**: Cuando un usuario intenta cancelar con un Happer asignado, la interfaz despliega como opción principal destacada **`📅 REAGENDAR SERVICIO ($0)`**, permitiéndole seleccionar una nueva fecha y horario (8:00 AM – 4:00 PM con $\ge 3$h de anticipación) sin cobro de penalización.
  - **Nueva Escala de Fees de Cancelación**:
    - **Sin Happer asignado (`PENDIENTE`)**: Cancelación **100% Gratuita** ($0.00 MXN).
    - **Con Happer asignado ($\le 30$ min)**: Tarifa del **20%** por compensación de traslado y liberación del **80% restante**.
    - **Con Happer asignado ($> 30$ min)**: Tarifa del **100%** del valor del servicio ($0 reembolso) por tiempo reservado y desplazamiento del Happer.
- **Ecosistema de Radar 360° y Puntos de Happers en Zona (`buscando_happer.php`, `tracking.php`)**:
  - **Animación de Haz de Radar 360°**: En lugar de mostrar una moto acercándose ficticiamente antes de tiempo, se implementó una animación de haz de radar cónico (`conic-gradient`) giratorio de 360 grados con anillos de pulso sonar sobre el mapa.
  - **Distribución de Happers Activos en Mapa**: Marcadores animados con efecto de onda (`🛵 Happer Activo`, `Happer en Zona`, `Happer Disponible`) distribuidos en el radio circundante del cliente, simulando el rastreo en vivo de unidades.
  - **Transición Condicional de Ruta**: La moto en movimiento y la ruta punteada hacia la casa del usuario solo se activan y muestran cuando un Happer formalmente acepta el servicio y se encuentra en camino.
- **Ajustes de Navegación y UI (`tracking.php`, `review.php`)**:
  - Se cambió el texto del botón de navegación superior izquierdo de **`← Dashboard`** a **`← Inicio`** para una terminología más intuitiva y cercana al usuario.
- **Gestión y Visibilidad de Servicios Programados para Happers (`happer.php`, `aceptar_servicio_happer.php`, `aceptada.php`)**:
  - **Rediseño Mobile-First por Tarjetas Responsivas**: Se eliminaron las tablas apretadas en pantallas móviles y se implementó una arquitectura de **tarjetas móviles individuales** con tipografía de alto contraste, fecha/hora destacada, badges de estado, vehículo, dirección y botones a todo el ancho (`width: 100%`).
  - **Regla de Anticipación de 24 Horas**:
    - Si faltan $\le 24$ horas para la cita: Se habilita el botón verde **`✅ TOMAR SERVICIO`** para que el Happer pueda apartarlo y organizarse.
    - Si faltan $> 24$ horas: El botón permanece **bloqueado (`🔒 DISPONIBLE 24H ANTES`)** informando la fecha y hora exacta de desbloqueo.
  - **Blindaje en Servidor**: Validación estricta en PHP en `aceptar_servicio_happer.php` y `aceptada.php` impidiendo la toma de servicios programados fuera de la ventana permitida.
- **Corrección de Selección Predeterminada de Servicio (`programar_servicio.php`)**:
  - Se reordenó la consulta SQL y la lógica en JavaScript (`filterServicesByCarType`) para garantizar que al seleccionar cualquier categoría de vehículo (**Chico, Mediano o Grande**) siempre se preseleccione de forma prioritaria el servicio **`LAVADO HAP`** en lugar de otros servicios complementarios como *Encerado* o *Protector*.
  - Se corrigió el registro histórico de la orden `#684` de `alz860717@gmail.com` asignándole el producto correspondiente **`LAVADO HAP`** (`ID: 42`).
  - **Ocultamiento Dinámico del Bloque de Cupón**: Si el usuario canjea su membresía a `$0.00 MXN`, el contenedor del cupón se oculta automáticamente. Si se selecciona una tarjeta (o auto no cubierto), el bloque de cupón se despliega.
  - **Ajustes de Copywriting en Panel VIP (`membresia.php`)**: Botón secundario renombrado a **`🗓️ PROGRAMAR SERVICIO ($0.00)`** y retiro de la palabra *"CALIBRADO"* en la tarjeta de rutina fija para un acabado más limpio y natural.
  - **Percepción de Servicios Ilimitados**: Se eliminó el conteo de lavados restantes cuando la bolsa disponible supera el $30\%$; solo se exhibe el conteo numérico de servicios restantes cuando resta $\le 30\%$ ($\le 10$ lavados).
  - Percepción de servicios ilimitados cuando resta $>30\%$ de la bolsa anual.
  - Barra de progreso transparente activada automáticamente al restar $\le 30\%$ ($\le 10$ lavados).
  - Hub de canje instantáneo a $0.00 MXN para lavados bajo demanda y servicios programados.
  - Panel de telemetría de rutina fija semanal y gestión segura de suscripción.
- **Protección y Regla de Suspensión Estricta (`PAST_DUE`)**:
  - Detección en tiempo real de fallos de cobro de mensualidad.
  - Bloqueo inmediato de canjes a $0.00 MXN y pausa automática de días fijos de rutina.
  - Pantalla amigable de resolución en 1 clic para actualizar tarjeta y reactivar beneficios al instante.
- **Infraestructura de Facturación Recurrente**:
  - Integración nativa del Producto `Membresía HAP Anual (36 Lavados)` (`prod_V5c6mAYh09RsgQ`) y Precio Recurrente `price_1U5QslKc7j1EacEUU4eYqXaY` ($563.00 MXN / mes).
  - Creación de la tabla `clientes_membresias` y columna `membresia_id` en `venta_desc`.
  - Endpoint seguro de suscripción y webhook handler (`procesar_membresia.php`).
- **Growth Hacks e Interceptores en la App**:
  - Banner inteligente en `perfil.php` adaptativo a los 3 estados del usuario.
  - Micro-interceptores de conversión en `programar_servicio.php` y `hapiar_3.php` antes de pagar servicios individuales.
  - Acceso directo a la Membresía HAP en la sección VIP de `cuenta.php`.
- **Limpieza de UI en Dashboard**:
  - Retiro de tarjetas de Saldo Wallet e Historial en `perfil.php` para un flujo más limpio.
- **Corrección y Filtrado Estricto de Tabla de Posiciones (`ranking.php`)**:
  - Solución al error donde se mostraban usuarios globales de otros códigos postales.
  - Filtrado SQL estricto por Código Postal (`v.cp = '$user_cp'`) garantizando competencia 100% local por zona.
  - **Reinicio Mensual Dinámico**: Los puntos de la competencia ahora se reinician en 0 automáticamente el 1° de cada mes (`YEAR(v.alta) = $anio AND MONTH(v.alta) = $mes`).
  - **Regla de Elegibilidad (Mínimo 2 Servicios)**: Filtro estricto `HAVING total_lavados >= 2` para entrar a la tabla de posiciones; tarjeta interactiva con indicador de progreso para usuarios con 1 servicio (*"¡Te falta 1 para clasificar!"*).
  - **Historial y Salón de Campeones**: Creación de la tabla `ranking_cierres_mensuales` y selector de periodos para consultar resultados oficiales de meses anteriores (Julio, Junio, etc.) o el acumulado histórico total (All-Time).
  - Incorporación de selector interactivo de zonas (Zibatá 76269, Juriquilla 76230, El Refugio 76146, Palermo 72410, etc.) y modo Ranking General opcional.

### [v2.2.0] - 2026-08-17
#### 🔌 Conexión Directa a Producción, Sincronización Local y Compatibilidad PHP 8
- **Túnel SSH y Conexión en Vivo a Producción**:
  - Implementación de túnel SSH seguro en segundo plano (`conectar_produccion.sh`) que mapea el puerto `3307` directamente al MySQL de producción en `95.111.214.233`.
  - Configuración de `Connections/higo.php` con prioridad #1 hacia la base de datos de producción viva (`127.0.0.1:3307`), y fallback automático a la base de datos local (`127.0.0.1:3306` / `localhost`).
  - Configuración de `sql_mode` compatible en MySQL para evitar errores de agrupación `ONLY_FULL_GROUP_BY`.
- **Sincronización Total de Multimedia & Datos**:
  - Descarga e importación completa de la base de datos viva (599 clientes, 590 servicios, 617 vehículos).
  - Sincronización mediante `rsync` de más de 320 fotos reales de perfil (`images_clientes/`), ilustraciones de vehículos (`car1.png` a `car8.png`), evidencias de lavados y badges de gamificación.
  - Implementación de manejadores `onerror` con avatar por defecto en `perfil.php` para prevenir enlaces 404 en imágenes no cargadas.
- **Correcciones de Compatibilidad en Login (`code.php` & `login.php`)**:
  - Desactivación de excepciones estrictas de MySQLi (`mysqli_report(MYSQLI_REPORT_OFF)`) para compatibilidad total con PHP 8.1+.
  - Solución a pantalla en blanco en `code.php`: validación de peticiones POST, manejo seguro de sesiones/cookies y redirección limpia a `perfil.php`.
  - Limpieza de advertencias y tipos de variables en `login.php`.
- **Rutina de Respaldo Automático (`respaldar_produccion.sh`)**:
  - Script automatizado para clonar la base de datos de producción a la base de datos local al cierre de sesión o cuando se requiera.
- **Optimización de Entorno**:
  - Desinstalación y limpieza de dependencias temporales no utilizadas (`putty`, `sshpass`, librerías GTK/X11), manteniendo el sistema limpio con únicamente `php` y `mysql`.

---

### [v2.1.0] - 2026-08-03
#### 🎁 Módulo de Referidos HAP & Descuentos Automáticos
- **Endpoint Real-time `validar_referido.php`**:
  - Valida códigos de referido `HAPxxxxx` cruzando columnas `referido_codigo`, `ref` y hashes MD5 de `clientes` y `usuarios`.
  - Previene intentos de auto-referencia.
- **Mejoras en el Registro (`registro.php`)**:
  - Detección y auto-llenado automático de códigos compartidos mediante parámetros URL (`?ref=`, `?codigo=`, `?ref_code=`, `?referido=`).
  - Badge dinámico AJAX con respuesta visual (`✔ Código HAP82414 válido! Obtienes $50 MXN de descuento`).
  - Asignación inmediata de su propio código `referido_codigo` al nuevo cliente al registrarse.
- **Reglas de Negocio en Pedidos (`programar_servicio.php`, `validar_cupon.php`, `stripe.php`)**:
  - Aplicación automática de **$50.00 MXN de descuento** en el 1er servicio del nuevo usuario.
  - Acreditación automática de **+$50.00 MXN de crédito** a la cuenta del referidor al completarse la primera reserva (`UPDATE clientes SET referido_credito = referido_credito + 50`), registrándolo en `referidos_log`.
  - Integración de códigos de referido en `validar_cupon.php` para ser aceptados como cupones promocionales en caja.

---

### [v2.0.0] - 2026-07-27
#### 🧾 Módulo de Facturación Electrónica & Evidencias
- **Integración de Acciones en `historial_servicios.php`**:
  - Incorporación de los botones `🔍 VER DETALLES Y EVIDENCIAS ➔` y `🧾 FACTURAR SERVICIO` en cada tarjeta de servicio.
- **Flujo y Reglas de Facturación**:
  - Si el usuario NO tiene datos fiscales, muestra advertencia SweetAlert2 y redirige a `datos_facturacion.php`.
  - Si el usuario YA TIENE datos fiscales, muestra modal interactivo con la leyenda:
    > *"Tu factura está en proceso, pronto recibirás la factura con los datos de facturación proporcionados. Sigamos Happeando juntos."*
- **Backend `solicitar_factura.php`**:
  - Generación de correo HTML a `facturacion@soyhap.com` (con copia CC a `dann.arenas@outlook.com`).
  - Adjunto físico en formato **Multipart MIME Base64** de la Constancia de Situación Fiscal (`constancia_pdf`).
  - Inserción de un botón interactivo `mailto:` con la respuesta ideal pre-llenada para que el contador de HAP responda adjuntando el PDF/XML al cliente en 1 solo clic.
- **Prevención de Solicitudes Duplicadas**:
  - Adición de la columna `factura_solicitada` en la tabla `venta_desc`.
  - Cambio dinámico del botón en la interfaz a **`✅ FACTURA SOLICITADA`** (deshabilitado) tras completar la solicitud.

---

### [v1.9.0] - 2026-07-27
#### 🗺️ Sincronización ETA en Mapa de Seguimiento (`tracking.php`)
- **Cálculo de ETA en PHP**:
  - Cálculo de la diferencia exacta en segundos desde la hora actual hasta la hora pactada de llegada (`$eta_seconds_total`).
- **Animación Proporcional en JavaScript**:
  - Ajuste dinámico de la velocidad del marcador de la moto 🏍️ en el mapa Leaflet.
  - El marcador recorre la ruta a un ritmo continuo calculado en milisegundos para llegar al destino **exactamente al cumplirse la hora estimada** (independientemente si el tiempo es de 5, 20 o 45 minutos).

---

### [v1.8.0] - 2026-07-27
#### 🚪 Cierre de Sesión Seguro (`cuenta.php` & `logout.php`)
- **Solución al fallo de Logout**:
  - Implementación de la función JavaScript `salir()` con modal interactivo de confirmación en SweetAlert2.
- **Limpieza Total de Sesión**:
  - Actualización de `logout.php` para vaciar `$_SESSION`, revocar cookies de autenticación (`usuario`, `usuarioapp`) con fecha de expiración pasada y redirigir inmediatamente a `login.php`.

---

### [v1.7.0] - 2026-07-27
#### ⏰ Módulo de Programación de Servicios Futuros (`programar_servicio.php`)
- **Pantalla Única en 5 Pasos**:
  1. **Auto Guardado**: Selector de vehículos registrados.
  2. **Servicios Filtrados**: Presenta únicamente los 3 servicios principales (*Lavado HAP*, *Encerado HAP*, *Protector HAP*) según el tamaño del auto.
  3. **Dirección Guardada**: Catálogo de ubicaciones del usuario.
  4. **Fecha/Hora Futuras**: Inputs de ancho completo (`100%`) restringiendo fechas pasadas y exigiendo **3 horas mínimas de anticipación**.
  5. **Método de Pago**: Tarjetas tokenizadas en Stripe.
- **Resolución al Error HTTP 500**:
  - Desactivación de excepciones estrictas globales en MySQLi (`@mysqli_report(MYSQLI_REPORT_OFF)`).
  - Envoltura global del proceso en `try / catch (\Throwable $e)`.
  - Mapeo completo de columnas obligatorias en `venta_desc` con valores por defecto.

---

### [v1.6.0] - 2026-07-22
#### 🚗 Rediseño de Mi Garage HAP (`mis_autos.php`)
- **Línea Gráfica Premium**:
  - Tarjeta Hero *Master Blue* con degradados radiales y luces brillantes.
  - Insignias de categoría por tamaño (`CHICO`, `MEDIANO`, `GRANDE`, `CAMIONETA`).
  - Botón directo al 100% de ancho `🧽 LAVAR ESTE AUTO`.
  - Modales de confirmación con SweetAlert2 para eliminar vehículos.

---

### [v1.5.0] - 2026-07-29
#### ⭐️ Pantalla de Evaluación (`review.php`)
- Ocultamiento temporal de la sección de propinas a solicitud del equipo, incluyendo comentario interno en el código fuente para su futura integración.
