Documentación actualizada v1.0.13 - reintentos, timeouts, troubleshooting
This commit is contained in:
@@ -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,6 +20,15 @@ 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`
|
||||
@@ -29,15 +40,20 @@ Plugin OSGi que obtiene automáticamente la tasa de cambio oficial del BCV (Banc
|
||||
- **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
|
||||
@@ -221,6 +245,18 @@ El plugin implementa dos fuentes de datos para máxima confiabilidad:
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user