# 🎯 CEDAH Sistema HÍBRIDO - MySQL Primero

## 🚀 Flujo de Consulta Híbrido

**Prioridad inteligente:**
1. **🥇 PRIMERO:** Buscar en **nuestra base de datos MySQL**
2. **✅ Si existe:** Devolver `success: true` inmediatamente (NO consultar CEDAH)
3. **🔍 Si NO existe:** Consultar API original de CEDAH
4. **💾 Si CEDAH tiene datos:** Guardar en nuestra MySQL + devolver resultado
5. **❌ Si no existe en ningún lado:** Devolver `success: "not_exist"`

## 🎯 Ventajas del Sistema Híbrido

✅ **Respuestas ultra-rápidas** - Si la placa está en nuestra DB, no consulta CEDAH  
✅ **Crecimiento automático** - Placas nuevas de CEDAH se guardan automáticamente  
✅ **Fallback inteligente** - Si nuestra DB no tiene la placa, consulta CEDAH  
✅ **Reducción de carga** - Menos consultas al servidor original de CEDAH  
✅ **Cache persistente** - Los datos quedan guardados permanentemente  

## 🚀 Uso Rápido

```bash
# 1. Configurar base de datos (una sola vez)
mysql -u root -p < database/setup.sql
npm run migrate

# 2. Iniciar servidor híbrido
npm start
# o
npm run start-hybrid

# 3. Probar el sistema
npm run test-hybrid
```

## 📊 Ejemplos de Respuesta

### ✅ Placa encontrada en NUESTRA MySQL
```json
{
  "success": true,
  "message": "Placa encontrada en nuestra base de datos",
  "placa": "914WZ8",
  "source": "mysql_local",
  "data": {
    "data": [{
      "placa": "914WZ8",
      "tipo_transporte": "AUTO-TANQUE",
      "vigencia": "2046-01-29",
      "estatus_actual_de_unidad": "AUTORIZADO"
    }]
  }
}
```

### 🔍 Placa encontrada en CEDAH (se guarda automáticamente)
```json
{
  "success": true,
  "message": "Placa encontrada en CEDAH (guardada localmente)",
  "placa": "ABC999",
  "source": "cedah_original",
  "data": {
    "data": [{
      "placa": "ABC999",
      "tipo_transporte": "CAMIÓN",
      "vigencia": "2025-12-31",
      "estatus_actual_de_unidad": "AUTORIZADO"
    }]
  }
}
```

### ❌ Placa no existe en ningún lado
```json
{
  "success": "not_exist",
  "message": "Placa no encontrada en ninguna base de datos",
  "placa": "XYZ999",
  "source": "ambas_consultadas"
}
```

## 🔑 Endpoints Principales

```bash
# Consulta híbrida (MySQL primero, CEDAH después)
GET  /api/consultar-placa/914WZ8
POST /api/consultar-placa {"placa": "914WZ8"}

# Solo de nuestra MySQL
GET /api/listar-placas
GET /api/estatus/AUTORIZADO

# Estado del sistema
GET /health
```

## 🧪 Comandos de Prueba

```bash
# Todas las pruebas del flujo híbrido
npm run test-hybrid

# Probar placa específica
node test-hibrido.js 914WZ8

# Verificar base de datos
npm run db-test
```

## 📈 Comportamiento Inteligente

| Escenario | Acción | Resultado |
|-----------|--------|-----------|
| Placa existe en MySQL | Solo consulta MySQL | ⚡ Respuesta inmediata |
| Placa NO existe en MySQL | Consulta CEDAH | 🔍 Busca en fuente original |
| CEDAH tiene la placa | Guarda en MySQL + responde | 💾 Se almacena para futuro |
| Nadie tiene la placa | Responde not_exist | ❌ No encontrada |

## 🔧 Archivos del Sistema

- **`api-server-hibrido.js`** - Servidor principal híbrido
- **`test-hibrido.js`** - Pruebas del flujo híbrido
- **`database/`** - Módulos de MySQL
- **`cedah-api-client.js`** - Cliente para CEDAH original

## 💡 Diferencias con Otros Modos

| Modo | Comportamiento |
|------|----------------|
| **Mock** | Solo datos hardcodeados |
| **MySQL** | Solo base de datos local |
| **CEDAH** | Solo API original |
| **🎯 HÍBRIDO** | **MySQL primero, CEDAH como fallback** |

---

**🎉 ¡El sistema híbrido te da lo mejor de ambos mundos: velocidad de MySQL + cobertura completa de CEDAH!**