# CHANGELOG - Versión 1.5.0 (Etapa 4 - SECMCA)

## 📅 Fecha: 24 de enero 2026

## 🎯 Objetivo de la Etapa 4 - SECMCA/SIMAFIR
Migrar los endpoints de SECMCA/SIMAFIR a la nueva estructura de la API documentada, utilizando los paths `/public/v1/` para todos los métodos principales.

---

## ✅ Cambios Implementados

### 1. **Actualización de Endpoints SECMCA/SIMAFIR**

#### **Endpoint de Criterios** (`get_report_variables`)
- **ANTES:** `{url_base}{url_params}{data}`
- **AHORA:** `{url_base}public/v1/criterios/{NOMBRE_TEMA}`
- **Archivo:** `inc/api.php` línea ~106
- **Descripción:** Obtiene los criterios/parámetros disponibles para un tema específico

#### **Endpoint de Años Disponibles** (`get_years`)
- **ANTES:** `{url_base}{url_years}{years_param}/{countries_param}`
- **AHORA:** `{url_base}public/v1/obtenerAnios/{years_param}/{countries_param}`
- **Archivo:** `inc/api.php` línea ~133
- **Descripción:** Obtiene los años disponibles para una variable y país

#### **Endpoint de Años para Tipo de Cambio** (`get_years2`)
- **ANTES:** `{url_base}{url_years}{years_param}/{countries_param}`
- **AHORA:** `{url_base}public/v1/obtenerAnios/{years_param}/{countries_param}`
- **Archivo:** `inc/api.php` línea ~165
- **Descripción:** Obtiene años disponibles específicamente para variables de tipo de cambio (54, 55, 56)

#### **Endpoint de Obtención de Datos** (`get_all_data`)
- **ANTES:** `{url_base}{url_data}{data}`
- **AHORA:** `{url_base}public/v1/obtenerDatos/porCriterio/{data}`
- **Archivo:** `inc/api.php` línea ~197
- **Descripción:** Obtiene los datos según criterios especificados (cURL method)

#### **Endpoint de Obtención de Datos con Guzzle** (`get_all_data1`)
- **ANTES:** `{url_base}{url_data}{data}`
- **AHORA:** `{url_base}public/v1/obtenerDatos/porCriterio/{data}`
- **Archivo:** `inc/api.php` línea ~253
- **Descripción:** Obtiene los datos según criterios especificados (Guzzle HTTP Client method)

---

### 2. **Actualización de Endpoint de Tipo de Cambio Externo**

#### **Nueva Función:** `buildExchangeRateUrl`
- **Endpoint Nuevo:** `/public/v1/tipoCambioExterno/obtenerDatos/{variable}/{pais}?fechaInicio=dd-mm-yyyy&fechaFin=dd-mm-yyyy`
- **Archivo:** `inc/api.php` línea ~1077
- **Variables Soportadas:**
  - `54` → `NER` (Tipo de cambio oficial)
  - `55` → `NER_B` (Tipo de cambio compra)
  - `56` → `NER_S` (Tipo de cambio venta)
- **Formato de Fechas:** `dd-mm-yyyy` (query parameters)
- **Países:** Se mantiene el mapeo de IDs a códigos (CR, SV, GT, HN, NI, PA, DO, BZ)

---

## 📋 Estructura de URLs Implementadas

### **Criterios por Tema**
```
GET /public/v1/criterios/{NOMBRE_TEMA}
Ejemplo: /public/v1/criterios/INFLACION
```

### **Años Disponibles**
```
GET /public/v1/obtenerAnios/{variable}/{pais}
Ejemplo: /public/v1/obtenerAnios/IPC-IPC_MA/3-13-50
```

### **Obtener Datos por Criterio**
```
GET /public/v1/obtenerDatos/porCriterio/{pais}/{variable}/{valoracion}/{unidad}/{frecuencia}/{fecha_inicio}/{fecha_fin}
Ejemplo: /public/v1/obtenerDatos/porCriterio/3/IPC/ORIG/INDICE/MENSUAL/01-01-2020/31-12-2024
```

### **Tipo de Cambio Externo** (NUEVO)
```
GET /public/v1/tipoCambioExterno/obtenerDatos/{variable}/{pais}?fechaInicio=dd-mm-yyyy&fechaFin=dd-mm-yyyy
Ejemplo: /public/v1/tipoCambioExterno/obtenerDatos/NER/CR-SV-GT?fechaInicio=01-01-2020&fechaFin=31-12-2024
```

---

## 🔧 Archivos Modificados

1. **`inc/api.php`**
   - Línea ~106: `get_report_variables()` - Actualizado a `/public/v1/criterios/`
   - Línea ~133: `get_years()` - Actualizado a `/public/v1/obtenerAnios/`
   - Línea ~165: `get_years2()` - Actualizado a `/public/v1/obtenerAnios/`
   - Línea ~197: `get_all_data()` - Actualizado a `/public/v1/obtenerDatos/porCriterio/`
   - Línea ~253: `get_all_data1()` - Actualizado a `/public/v1/obtenerDatos/porCriterio/`
   - Línea ~1077: `buildExchangeRateUrl()` - Actualizado a `/public/v1/tipoCambioExterno/obtenerDatos/`

2. **`secmca-api.php`**
   - Línea 7: Version actualizada a `1.5.0`
   - Línea 12: SECMCA_VER actualizado a `2026-01-etapa4-secmca`

---

## 🧪 Pruebas Recomendadas

### **Test 1: Criterios por Tema**
- Navegar a página de parámetros SIMAFIR
- Seleccionar un tema (ej: INFLACIÓN, TIPO_DE_CAMBIO)
- Verificar que se carguen los criterios correctamente

### **Test 2: Consulta de Datos Estándar**
- Seleccionar país, variable, fecha inicio/fin
- Ejecutar consulta
- Verificar que se muestren los datos en tabla/gráfico

### **Test 3: Tipo de Cambio Externo**
- Seleccionar variables 54, 55 o 56 (Tipo de Cambio)
- Seleccionar país(es) y rango de fechas
- Verificar que use el nuevo endpoint `/tipoCambioExterno/`
- Verificar datos en tabla/gráfico

### **Test 4: Usuarios No Logueados**
- Cerrar sesión
- Intentar acceder a páginas SIMAFIR
- Verificar que se muestre imagen de mantenimiento

---

## 🔍 Validaciones Técnicas

```bash
# Verificar que no queden referencias a endpoints antiguos
grep -r "url_params" inc/api.php
grep -r "url_years" inc/api.php  
grep -r "url_data" inc/api.php

# Verificar nuevos endpoints
grep -r "public/v1/criterios" inc/api.php
grep -r "public/v1/obtenerAnios" inc/api.php
grep -r "public/v1/obtenerDatos/porCriterio" inc/api.php
grep -r "public/v1/tipoCambioExterno" inc/api.php
```

---

## ⚠️ Notas Importantes

1. **Dependencia de URL Base**: Todas las funciones ahora usan `$this->url_base` que está configurado como:
   ```php
   $this->url_base = 'http://192.168.100.137:8081/simafir_api/ws/';
   ```

2. **Mantenimiento de Carbon Fields**: Los campos antiguos `crb_url_params`, `crb_url_years`, `crb_url_data` ya NO se usan en el código, pero se mantienen en Theme Options por compatibilidad.

3. **Retrocompatibilidad**: La función `checkForExchangeRateVariables()` detecta automáticamente cuando se usan variables de tipo de cambio (54, 55, 56) y redirige al nuevo endpoint específico.

4. **Formato de Fechas**: El endpoint de tipo de cambio usa formato `dd-mm-yyyy` en query parameters, mientras que otros endpoints usan formato path-based.

---

## 📦 Instalación

```bash
# Desactivar plugin actual
wp plugin deactivate secmca-api

# Subir nueva versión vía FTP/SFTP o:
# - Reemplazar carpeta /wp-content/plugins/secmca-api/

# Activar plugin
wp plugin activate secmca-api

# Verificar versión
wp plugin list | grep secmca-api
# Debe mostrar: Version: 1.5.0
```

---

## 🔄 Próximas Etapas

### **Etapa 4B - EMFA** (Siguiente)
- Actualizar endpoints EMFA a `/public/v1/emfa/`
- Migrar `get_charts_by_topic()` → `/public/v1/emfa/criterios/{TEMA}`
- Migrar `emfa_allData()` → `/public/v1/emfa/obtenerDatos/`

### **Etapa 4C - ESEA**
- Actualizar endpoints ESEA a `/public/v1/esea/`
- Migrar `esea_get_params()` → `/public/v1/esea/criterios/{TEMA}`
- Migrar `esea_allData()` → `/public/v1/esea/obtenerDatos/`

---

## 📞 Soporte

Para problemas o consultas:
- Revisar logs de WordPress: `wp-content/debug.log`
- Revisar logs de API: `inc/errorlog.txt`
- Revisar logs de cURL: `inc/curl_err.txt`

---

**Versión:** 1.5.0  
**Fecha:** 24 de enero 2026  
**Autor:** Codeskill.io  
**Etapa:** 4 - SECMCA/SIMAFIR Endpoint Migration
