Documentación actualizada v1.0.13 - reintentos, timeouts, troubleshooting

This commit is contained in:
2026-07-03 16:10:14 -04:00
parent 174a766972
commit ed5db46168
+71 -11
View File
@@ -8,6 +8,8 @@ Plugin OSGi que obtiene automáticamente la tasa de cambio oficial del BCV (Banc
- **Doble fuente de datos**: API bcv.today + scraping directo del sitio web del BCV
- **Fallback automático**: Si la API no tiene datos recientes, scrapea el sitio del BCV
- **Reintentos automáticos**: Hasta 3 intentos con espera de 5 segundos entre ellos
- **Timeout extendido**: 30s conexión / 60s lectura para redes lentas
- **Busca hacia atrás** cuando el BCV no publica tasa para un día hábil
- **Rellena automáticamente** días sin publicación (fines de semana, feriados)
- **Ejecución manual** con rango de fechas específico
@@ -18,26 +20,40 @@ Plugin OSGi que obtiene automáticamente la tasa de cambio oficial del BCV (Banc
## Fuentes de Datos
### Flujo de Selección
```
1. Intentar API bcv.today (búsqueda hacia adelante 1-10 días)
↓ (si no encuentra)
2. Scraping directo del sitio web del BCV (hasta 3 reintentos)
↓ (si falla)
3. API bcv.today getCurrentRate() (último recurso)
```
### Fuente Principal: API bcv.today
- **Endpoint**: `https://bcv.today/api/v1/rate.json`
- **Endpoint por fecha**: `https://bcv.today/api/v1/history/YYYY-MM-DD.json`
- **Ventaja**: Rápida, estructurada
- **Desventaja**: Puede tener retraso deactualización
- **Desventaja**: Puede tener retraso de actualización
### Fuente de Respaldo: Scraping BCV
- **URL**: `https://www.bcv.org.ve/`
- **Método**: Extracción directa del HTML con regex
- **Ventaja**: Siempre actualizada (datos oficiales)
- **Desventaja**: Requiere SSL bypass y parsing de HTML
- **Reintentos**: 3 máximo con espera de 5 segundos
### Flujo de Selección
```
1. Intentar API bcv.today (búsqueda hacia adelante 1-10 días)
↓ (si no encuentra)
2. Scraping directo del sitio web del BCV
↓ (si falla)
3. API bcv.today getCurrentRate() (último recurso)
```
## Configuración de Red
### Timeouts
| Operación | Valor | Descripción |
|-----------|-------|-------------|
| Conexión | 30 segundos | Tiempo máximo para establecer conexión |
| Lectura | 60 segundos | Tiempo máximo para recibir datos |
| Reintentos | 3 | Intentos máximos antes de fallar |
| Entre reintentos | 5 segundos | Espera entre intentos |
### SSL Bypass
El sitio web del BCV usa certificados SSL que pueden no estar en el cacerts de Java. El plugin implementa SSL bypass por-conexión (no global) para evitar conflictos con iDempiere.
## Comportamiento del Proceso
@@ -80,7 +96,7 @@ com.venezuela.bcvrate/
│ ├ process/
│ │ └ BCVExchangeRateProcess.java # Lógica principal del proceso
│ └ service/
│ ├ BCVApiService.java # Cliente HTTP + scraping BCV
│ ├ BCVApiService.java # Cliente HTTP + scraping BCV + reintentos
│ └ BCVRateResponse.java # Modelo de respuesta
├ dist/
│ └ com.venezuela.bcvrate.jar # JAR compilado listo para instalar
@@ -89,6 +105,7 @@ com.venezuela.bcvrate/
├ migration/
│ ├ install_v10.sql # SQL para registrar proceso
│ └ BCV_ExchangeRateProcess_2Pack.xml # 2pack para despliegue
├ .gitignore # Archivos ignorados por git
└ build.sh # Script de build para Linux
```
@@ -98,6 +115,7 @@ com.venezuela.bcvrate/
- iDempiere v10 ejecutándose
- Acceso a consola Felix (http://servidor:8080/system/console)
- Acceso a la base de datos PostgreSQL
- Conectividad a internet (bcv.today y bcv.org.ve)
### Paso 1: Instalar JAR en Felix
1. Abrir consola Felix → **Bundles**
@@ -171,6 +189,12 @@ Crear registro en AD_TreeBar o importar 2pack con el menú configurado.
- Verificar conectividad: `curl https://bcv.today/api/v1/rate.json`
- El plugin automáticamente intenta scraping del sitio web del BCV como respaldo
### Scraping BCV falla por timeout
- El plugin reintenta hasta 3 veces con espera de 5 segundos
- Verificar conectividad: `curl https://www.bcv.org.ve/`
- Si hay proxy, configurarlo en el servidor
- El log muestra "Scraping BCV fallo despues de 3 intentos"
### Error SSL en scraping del BCV
- El plugin incluye SSL bypass para el sitio web del BCV
- Si persiste, verificar que el bundle tiene la última versión
@@ -216,11 +240,23 @@ chmod +x build.sh
### Dual Source: API + Scraping
El plugin implementa dos fuentes de datos para máxima confiabilidad:
1. **API bcv.today**: Consulta REST rápida, pero puede tener retraso deactualización
1. **API bcv.today**: Consulta REST rápida, pero puede tener retraso de actualización
2. **Scraping BCV**: Extracción directa del HTML del sitio web oficial
El flujo automático intenta la API primero y fallback al scraping si no hay datos recientes.
### Lógica de Reintentos
Cuando el scraping falla (timeout, error de conexión), el plugin reintenta automáticamente:
```java
int maxRetries = 3;
for (int attempt = 1; attempt <= maxRetries; attempt++) {
// Intentar scraping
// Si falla, esperar 5 segundos y reintentar
// Si falla 3 veces, registrar error
}
```
### SSL Bypass para Scraping
El sitio web del BCV usa certificados SSL que pueden no estar en el cacerts de Java. El plugin implementa SSL bypass por-conexión (no global) para evitar conflictos con iDempiere:
@@ -267,8 +303,32 @@ Esto evita capturar otras tasas (EUR, CNY, etc.) que aparecen en la misma págin
- Si la versión no cambia, el bundle anterior permanece activo
- Siempre incrementar `Bundle-Version` en MANIFEST.MF al actualizar
## Repositorio
El código fuente está disponible en:
- **Gitea**: https://gitea.inforcloud.net/ezerpa/eru
- **Branch principal**: master
### Clonar repositorio
```bash
git clone https://gitea.inforcloud.net/ezerpa/eru.git
```
### Actualizar código
```bash
git pull
```
## Historial de Cambios
### v1.0.13 (2026-07-03)
- Lógica de reintentos: 3 intentos máximo con espera de 5 segundos
- Timeout incrementado: 30s conexión / 60s lectura
- Logging detallado de reintentos en servidor
### v1.0.12 (2026-07-03)
- Incremento de timeout HTTP a 30s/60s
### v1.0.11 (2026-07-03)
- Fix regex scraping: captura tasa USD específicamente (no EUR)
- Regex busca después de `USD</span>` en el HTML