# Historial de versiones

## 3.1.0.73 - 2026-09-10

- Se optimizo la toma de trabajos CIC con `GET_NEXT_CIC_REQUEST_COMPANY_V2`, eliminando el candado local del monitor para el SP nuevo y manteniendolo solo para el SP historico de compatibilidad.
- Se movio la limpieza/reencolado de cola CIC fuera del camino normal del `GetNext`: ahora primero se intenta asignar trabajo pendiente y solo se ejecuta limpieza cuando no se encontro solicitud asignable.
- Se actualizaron los SP V2 del API (`GET_NEXT_CIC_REQUEST_COMPANY_V2` y `GET_NEXT_CIC_REQUEST_COMPANY_EXT_V2`) para aplicar el mismo flujo de asignacion primero y limpieza bajo demanda.
- Se redujo el riesgo de embudos con multiples hilos CIC, permitiendo que los drivers ya logueados tomen trabajo en paralelo sin esperar por consultas locales serializadas.
- Se reforzo el manejo de errores SQL transitorios durante `GetNextCICRequest`, incluyendo errores severos de comando SQL, cierres de conexion, timeouts, deadlocks y fallos temporales de Azure SQL, evitando que el monitor se detenga por incidentes recuperables.
- Se agrego detalle tecnico de `SqlException` en logs de cola, incluyendo numero SQL, severidad, estado y linea, para diagnosticar mejor fallos de base de datos en clientes.
- Se aumento a dos intentos la consulta de cola antes de devolver vacio cuando ocurre un fallo transitorio, reduciendo cortes visibles en Visual Studio o en ejecuciones desde EXE.
- Se mejoro el inicio de procesamiento CIC para que cada hilo comience a monitorear apenas completa login, sin esperar a que todos los drivers terminen de autenticarse.
- Se ajusto el flujo FVA/CIC para no reiniciar prematuramente cuando GAUDI ya tiene una aprobacion en progreso y la pagina vuelve temporalmente a la pantalla de identificacion.
- Se serializaron mejor login y firma FVA/GAUDI para evitar solicitudes simultaneas que mezclen codigos de verificacion entre hilos, manteniendo el procesamiento paralelo una vez autenticado.
- Se corrigio la seleccion de tipo DIMEX en el login FVA de CIC y CICOC para usar el option correcto aunque el formulario cargue por defecto como cedula nacional.
- Se reforzo la conexion al Hub GAUDI integrado al iniciar monitoreo para reintentar la conexion antes de bloquear el arranque de hilos.
- Se corrigio el envio de logs por correo para usar credenciales SMTP configuradas cuando existen, aun si la configuracion de credenciales por defecto viene inconsistente desde API.
- Se corrigieron textos con problemas de charset en MessageBox y mensajes visibles de la aplicacion.
- Se actualizaron reglas de ignore para evitar subir binarios generados, drivers y salidas temporales de build/evidencia al repositorio.

## 3.1.0.72 - 2026-07-08

- Se corrige la normalizacion de identificaciones CIC/CICOC para conservar caracteres alfanumericos en identificaciones tipo 5 (Pasaporte/DIDI), manteniendo la limpieza numerica y autocorreccion DIMEX solo para tipos numericos.
- Se clasifican como reintentables errores transitorios CICOC posteriores a la firma o durante la obtencion del reporte, incluyendo timeouts del renderer de Edge, `Timed out after 20 seconds` y boton de generar reporte no habilitado despues de FVA.
- Se fuerza el reencolado de trabajos CIC/CICOC cuando falla temporalmente la lectura del request por errores de transporte SQL/API, evitando cancelaciones en status 99 por fallos recuperables de base de datos.
- Se registra en actividad/debug cuando el guardado local omite tablas o columnas opcionales faltantes, incluyendo tablas CIC SBD/EAL y la columna `MorosidadMaximaPonderada`, sin detener el procesamiento.
- Se agrega script SQL de compatibilidad para crear tablas CIC activas/historicas SBD/EAL faltantes y agregar columnas opcionales sin borrar datos existentes.
- Se ajusta el boton de actualizacion para abrir `setup.exe` en lugar del manifiesto `.application`, evitando errores ClickOnce de zonas de seguridad distintas.
- Se prepara telemetria y control remoto de bloqueos SUGEF compartidos para diagnosticar y coordinar pausas por IP publica, cliente, modo CIC/CICOC, firma, maquina y request afectado.
- Se agrega carpeta manual de drivers Selenium en la pestaña Configuracion para copiar `msedgedriver.exe`, `chromedriver.exe` o ZIPs de drivers cuando la descarga automatica no sea posible; los archivos se consumen y eliminan tras copiarse correctamente al cache local.
- Se muestra la ruta de la carpeta manual de drivers en un campo fijo de solo lectura en Configuracion, con boton para copiarla al portapapeles.

## 3.1.0.70 - 2026-07-01

- Se ocultan del preview de configuracion y del resumen de soporte remoto las claves sensibles relacionadas con email/correo, SMTP, mail, credenciales, passwords, tokens, secrets y cadenas de conexion.
- Se bloquea el redimensionamiento y la maximizacion de la ventana principal para conservar el layout validado de la aplicacion.
- Se ajusta el boton de buscar actualizaciones para abrir manifiestos ClickOnce `.application` desde la URL remota con el activador de Windows, evitando ejecutar copias descargadas desde `Downloads`.
- Se ejecuta la revision automatica de drivers Selenium al arrancar sin espera inicial, y antes de iniciar monitoreo se intenta actualizar drivers si Edge/Chrome no valida contra el driver local.
- Se mejora la actualizacion de drivers Selenium en cache local: se limpian procesos desde la ruta de cache, se reintenta la copia si Windows mantiene el driver bloqueado y el dialogo muestra el detalle de errores.
- Se mantiene la normalizacion de identificaciones CIC/CICOC antes de procesar: se remueven guiones/no digitos, se ajusta cedula nacional para FVA y se corrige a DIMEX cuando una identificacion de 12 digitos iniciada en 1 viene marcada como nacional.
- Se refuerza la normalizacion tambien en rutas de carga y lectura de lotes para que CIC y CICOC usen el mismo criterio al reclamar y completar solicitudes.
- Se agrega el guardado independiente de `MorosidadMaximaPonderada` recibido desde el API en operaciones historicas locales cuando la columna existe en la base externa/local, incluyendo soporte para tablas historicas CIC, SBD y EAL.
- Se agregan rutinas de insercion para `CIC_ActiveOperationsSBD` y `CIC_ActiveOperationsEAL`, reutilizando la estructura de `CIC_ActiveOperations` y omitiendo el insert si la tabla aun no existe en la base local.

## 3.1.0.68 - 2026-06-29

- Se ajusto el login CIC/FVA para el nuevo formulario GAUDI/BCCR, ubicando de forma mas confiable el campo de identificacion y el boton `Ingresar` sin confundirlos con textos, radios o botones de cancelacion.
- Se normaliza la identificacion nacional antes de autenticar en FVA, removiendo el cero inicial cuando corresponde para evitar que CIC/CICOC digiten cedulas incompletas o con formato incorrecto.
- Se reforzo la coordinacion entre hilos durante login CIC: si una solicitud GAUDI/FVA ya esta pendiente, los demas drivers no generan nuevas solicitudes hasta que la primera se resuelva o falle de forma controlada.
- Se detectan mensajes nuevos de FVA sobre solicitudes de firma en proceso y se intenta cancelar la solicitud pendiente cuando la pantalla ofrece esa accion, evitando ciclos de reintento que mezclen codigos entre hilos.
- Se agrego recuperacion del codigo de seguridad desde GAUDI cuando Selenium no logra leerlo en pantalla, reduciendo falsos reintentos despues de que FVA muestra el codigo.
- Se valida que el login CIC realmente haya quedado autenticado antes de continuar; si falla la preparacion de un driver, se cierra ese driver y no se abren mas sesiones que puedan traslapar solicitudes FVA.
- Se ajusto el inicio de monitoreo para detener timers, heartbeat y diagnosticos si la creacion de drivers falla, dejando la aplicacion nuevamente en estado iniciable sin procesar cola a medias.
- Se agregaron protecciones CICOC para recuperar pantallas de `Acceso Denegado` y corregir redirecciones OAuth cuando un flujo queda en contexto CIC en lugar de CICOC.
- Se clasifican como reintentables los fallos transitorios CICOC/FVA/GAUDI al ejecutar submit, capturar codigo FVA o confirmar autenticacion, evitando que requests recuperables terminen en status 99 por acumulacion de intentos.

## 3.1.0.67 - 2026-06-26

- Se reforzo el login CIC/FVA para escenarios donde BCCR FVA tarda en responder: se ampliaron tiempos de espera, se detecta la solicitud pendiente y se evita generar solicitudes traslapadas entre hilos durante la autenticacion.
- Se serializo mejor la toma de trabajos por timer/hilo para evitar reentradas del mismo temporizador y reducir desfases donde la cola podia mostrar mas requests en status 4 que hilos activos.
- Se corrigio la liberacion de trabajos duplicados o diferidos por espera SUGEF para devolverlos a la cola con status 1 cuando corresponda, tanto por API como por conexion directa.
- Se reforzo la actualizacion minima de status CIC cuando falla el guardado completo del request, evitando que trabajos recuperables queden pegados en status 4 por errores temporales de API/base de datos.
- Se ajusto el manejo de bloqueos SUGEF: aun con el control de espera deshabilitado, los bloqueos explicitos reportados por SUGEF se respetan para no seguir tomando trabajo durante la ventana indicada.
- Se agrego dosificacion adaptativa SUGEF en caliente, configurable por soporte remoto, para aumentar gradualmente el objetivo de submits/reportes por hora y aplicar backoff automatico cuando SUGEF reporte bloqueo/cuota.
- Se agrego historial local de experimentos SUGEF en formato TSV (`sugef-adaptive-YYYYMMDD.tsv`) con objetivo por hora, intervalo efectivo, submits de la ultima hora, bloqueos y parametros de backoff para reutilizar limites en futuras corridas.
- Se agregaron comandos remotos para consultar y controlar la dosificacion SUGEF adaptativa: `SetSugefAdaptiveThrottle`, `EnableSugefAdaptiveThrottle`, `DisableSugefAdaptiveThrottle`, `GetSugefAdaptiveHistory` y `QuerySugefAdaptiveHistory`.
- Se ampliaron las tarjetas del tab Monitoreo para mostrar reportes/solicitudes de la ultima hora, submits SUGEF/CICOC de la ultima hora y relacion submits por reporte/solicitud, con etiquetas segun modo CIC o CICOC.
- Se agrego conteo local de reportes finalizados durante la ultima hora para medir rendimiento real de la sesion, separado del total historico del lote.
- Se reforzo el diagnostico de hilos con snapshots periodicos de estados, hilos esperando SUGEF, reportes de ultima hora y total de sesion en logs tecnicos locales.
- Se mejoro el manejo de mensajes transitorios CIC/SUGEF y navegacion inesperada en generacion de reportes, devolviendo a cola casos recuperables en lugar de marcarlos prematuramente como error fatal.
- Se ajusto el flujo de JobType 6 para distinguir mejor fallback publico, no autorizados recuperables y errores fatales, reduciendo reintentos innecesarios o cierres incorrectos.
- Se corrigio el encoding de resultados al actualizar estados CIC/CICOC por API para evitar fallos por caracteres especiales en mensajes largos de diagnostico.
- Se reforzaron rutas de carga masiva/lotes por API y base de datos directa para mantener compatibilidad con clientes que usan ambos modos.
- Se amplio la validacion de drivers Selenium y navegadores para detectar incompatibilidades de version mayor antes de abrir sesiones, con mensajes mas claros para Edge/Chrome.
- Se agregaron parametros de configuracion para esperas FVA y dosificacion SUGEF: `CicFvaCodeWaitSeconds`, `CicFvaLoginConfirmationWaitSeconds`, `CicFvaPendingRequestWaitSeconds`, `SugefAdaptiveThrottleEnabled`, `SugefAdaptiveStartPerHour`, `SugefAdaptiveMaxPerHour`, `SugefAdaptiveStepPerHour`, `SugefAdaptiveRampMinutes` y `SugefAdaptiveBackoffPercent`.

## 3.1.0.61 - 2026-05-28

- Se corrigio la lectura del codigo FVA de CICOC para aceptar codigos alfanumericos de tres caracteres, evitando que codigos como D07, B98 o B1A quedaran visibles en pantalla pero sin ser publicados a GAUDI integrado.
- Se agregaron trazas detalladas durante la espera del codigo FVA, incluyendo estado de pagina, elementos visibles, estado del Hub GAUDI, solicitud pendiente, edad de la solicitud, ultimo codigo capturado e intentos de aprobacion.
- Se amplio el diagnostico del coordinador GAUDI integrado para identificar si el problema esta en captura del codigo, publicacion al Hub, aprobacion local o confirmacion posterior de CICOC.
- Se elimino el reintento agresivo de login cuando ya existe una solicitud FVA pendiente, reduciendo el riesgo de generar errores por codigo en espera.
- Se agrego comando de soporte remoto para reiniciar la aplicacion de forma controlada mediante CommandType restartapplication, restartapp o reiniciaraplicacion.
- El reinicio remoto reporta primero el resultado al API, luego cierra la instancia actual y abre nuevamente el mismo ejecutable mediante un auxiliar local oculto.
- Se agrego rescate temporal del PIN solo para reinicios solicitados por soporte remoto: si el PIN esta presente, se guarda protegido con DPAPI de Windows y se restaura al abrir de nuevo, eliminando el archivo temporal inmediatamente.
- Se agrego comando de soporte remoto para cargar la firma digital usando el PIN ya digitado o restaurado localmente, sin enviar el PIN desde el API.
- Se agrego comando de soporte remoto para configurar la cantidad de hilos antes de iniciar el monitoreo.
- Se mantiene bloqueada la ejecucion arbitraria de comandos remotos; el reinicio queda como accion explicita y auditada.

## 3.1.0.56 - 2026-05-18

- Se ampliaron los comandos de soporte remoto para consultar y cambiar el estado de Debug/logs detallados sin requerir acceso interactivo al equipo remoto.
- Se agregaron comandos remotos para limpiar logs visibles de Actividad y Procesamiento antes de reproducir incidentes y recolectar evidencia mas limpia.
- Se agregaron comandos remotos de diagnostico para consultar estado runtime, estado del control de cuota SUGEF, capturar pantalla, listar evidencias recientes y traer errores recientes de procesamiento sin descargar logs completos.
- Se agrego el estado DebugEnabled al heartbeat de soporte remoto para mostrar desde Web/API si la instancia trabaja con logs detallados activos.
- Se reforzo el control de espera por cuota SUGEF para pausar la toma de nuevos trabajos cuando SUGEF indica bloqueo temporal o cuando la ventana local de llamadas esta llena.
- Se agrego trazabilidad en actividad/procesamiento para indicar cuanto tiempo falta cuando SUGEF bloquea por cuota o ventana horaria, evitando MessageBox en ejecuciones desatendidas.
- Se agregaron recuperaciones locales para elementos CIC/SUGEF que tardan en aparecer, clicks interceptados y contenido de reporte no encontrado, reduciendo relanzamientos completos de requests.
- Se mejoro el filtrado de mensajes visibles de CIC/SUGEF para no tratar textos de menu o encabezados como errores de reporte.
- Se agrego mayor granularidad de logs en modo Debug para diagnosticar seleccion de combos, clicks, carga de contenido y mensajes visibles en paginas CIC/SUGEF.
- Se ajusto el flujo de mejor reporte para controlar mejor los casos donde el autorizado falla y corresponde continuar con reporte publico.
- Se corrigio la carga de lotes para respetar el identificador de lote ingresado por el usuario en los requests, tanto via API como en guardado directo a base de datos.
- Se reviso la carga masiva de lotes por chunks y el uso de APIEndPoint para asegurar que el cliente use el endpoint configurado cuando UseAPI esta activo.
- Se corrigieron botones desenganchados en Versiones, Monitoreo y acciones relacionadas con firma/soporte remoto.
- Se agrego aviso visual de actualizacion disponible sin forzar actualizaciones automaticas al iniciar o finalizar, para clientes que dependen de su equipo de Tecnologia.
- Se mejoraron controles y visibilidad en tabs de Configuracion, Actividad, Procesamiento y Monitoreo, manteniendo controles desde Designer cuando corresponde.
- Se reforzo la lectura visual de grids y se mantuvo la proteccion de datos sensibles en configuracion.

## 3.1.0.53 - 2026-05-15

- Se agrego soporte remoto para registrar instancias de MonitorSUGEF, enviar heartbeat al API y ejecutar comandos autorizados desde CiclonWeb/API.
- Se agregaron comandos remotos para consultar estado, version, resumen de configuracion, firma cargada, logs de actividad/procesamiento/FVA, evidencias, inicio/detencion de monitoreo y actualizacion de plantillas/drivers.
- Se agrego identificador persistente de instancia local para equipos remotos sin depender de la firma digital cargada.
- Se agrego tab de Soporte remoto desde el Designer para mostrar estado de conexion y trazabilidad local de comandos recibidos.
- Se bloquearon en fase 1 los comandos remotos de carga/descarga de firma para evitar operaciones sensibles fuera del flujo normal.
- Se corrigio el boton Cargar firma para usar el flujo completo de validacion/autorizacion y habilitar correctamente el inicio de monitoreo.
- Se corrigio el boton Ver PIN para alternar entre mostrar y ocultar el PIN.
- Se mantuvo la confirmacion de comandos sensibles del lado web/API, evitando depender de una persona frente al equipo remoto.

## Cambios acumulados desde 3.1.0.47

- Se integro el firmador GAUDI dentro de MonitorSUGEF para autenticacion y firma de documentos sin depender de Firmador BCCR.exe.
- Se agrego switch de configuracion para alternar en tiempo de ejecucion entre GAUDI integrado y firmador externo configurado.
- Se homologaron los flujos de carga de firma para operar con GAUDI integrado o firmador externo.
- Se automatizo la captura y publicacion interna del codigo FVA para login CICOC y firma de declaracion/autorizacion.
- Se agrego diagnostico GAUDI para listar certificados, firmar prueba, conectar al Hub y aprobar o rechazar solicitudes pendientes.
- Se agrego actualizacion de drivers Selenium desde API, con descarga de ZIP, extraccion del ejecutable y cache local por navegador/version.
- Se agrego actualizacion y cache local de plantillas XLSX descargadas desde API/Web App.
- Se agrego boton para abrir el Firmador BCCR configurado cuando GAUDI integrado esta deshabilitado.
- Se agrego boton para revisar versiones y se movieron acciones de actualizacion de plantillas/drivers al tab de Configuracion.
- Se agrego bloqueo de prompts de permisos del navegador para reducir intervencion visual durante ejecucion automatizada.
- Se reforzo CICOC con validacion de telefono de 8 digitos, correo valido y limpieza de caracteres invisibles en datos de contacto.
- Se corrigio el tratamiento de datos CICOC para tasas en escala 0 a 100, plazos y tipo de identificacion.
- Se ajusto la generacion de reporte CICOC para hacer clic en Generar Reporte Crediticio y persistir el resultado final.
- Se corrigieron reintentos donde solicitudes CICOC exitosas podian quedar repitiendose por no persistir estado/reporte correctamente.
- Se ajusto el manejo de errores fatales CICOC para marcar status 99 cuando la solicitud trae datos invalidos que no se pueden corregir localmente.
- Se mejoro el login CICOC/FVA para reducir esperas innecesarias en SeleccionarEntidad y detectar mejor pantallas cargadas.
- Se agrego logging tecnico diario en formato TSV con tags filtrables para Procesamiento, Actividad y FVA/GAUDI.
- Se agrego evidencia de errores Selenium con captura, HTML o texto segun el punto de fallo.
- Se ajusto el log de procesamiento para usar cola y refresco periodico, reduciendo bloqueos de UI durante ejecuciones con muchos hilos.
- Se separaron los mensajes de Procesamiento y Actividad en la interfaz.
- Se agrego boton para abrir directamente la carpeta local de logs.
- Se agrego estadistica real de reportes por minuto en el log de procesamiento.
- Se ajusto la detencion del monitoreo para no tomar nuevos trabajos y dejar terminar los que ya estan en proceso.
- Se agrego control en caliente para habilitar o deshabilitar la espera por limite SUGEF.
- Se evito tomar nuevos trabajos de la cola mientras SUGEF esta en espera por cuota o ventana horaria.
- Se optimizo la espera entre trabajos para consultar la cola casi de inmediato cuando hay procesamiento activo.
- Se reforzo el login CIC/FVA para evitar carreras entre hilos y escritura simultanea del archivo de autorizacion.
- Se agrego soporte para DIMEX/extranjeros en login CIC.
- Se agrego trazabilidad del lote al cargar cada request.
- Se agrego validacion inicial de navegador compatible para CIC/SUGEF y bloqueo de inicio si no hay navegador compatible.
- Se muestra en log si se utilizara Edge o Chrome.
- Se muestran versiones instaladas, versiones minimas requeridas y drivers incluidos.
- Se migro el flujo de Lotes/procesamiento masivo para usar API CIClon en creacion de lotes, carga bulk, reintentos, cancelacion y exports XLSX cuando UseAPI esta activo.
- Se ajusto la carga bulk de Lotes para enviar CICRequest en chunks con progreso por bloque confirmado y reintentos seguros por RequestID.
- Se integro el flujo asincrono de jobs del API para exportaciones XLSX de lotes, con polling, descarga al completar y fallback al endpoint sincrono anterior.
- Se ajustaron tabs, logs, monitoreo, versiones, GAUDI y configuracion para mejorar visibilidad, scrolls y evitar controles fuera de pantalla.
- Se corrigio el refresco de grids de monitoreo al moverlos a nuevo tabset.
- Se corrigieron colores de grids de monitoreo para que las filas se lean seleccionadas o no.
- Se ajusto el grid de configuracion para ocultar/ofuscar llaves sensibles como ConnectionString.
- Se corrigio la carga inicial del checkbox de Debug para reflejar la configuracion descargada del API.
- Se corrigio el charset de textos visibles en mensajes y controles principales.
- Se elimino el splitter del tab Principal y se devolvieron sus controles al tab para simplificar el mantenimiento visual.
- Se fijo el tamano del form y se habilitaron scrolls donde corresponde para evitar desubicacion por anchors.
- Se agrego limpieza automatica de procesos msedgedriver/chromedriver propios al iniciar y antes de compilar, evitando bloqueos de archivos de drivers.

## 3.1.0.46 y anteriores

- Monitoreo de cola de solicitudes CIC desde el backend de CICLON.
- Procesamiento paralelo configurable de solicitudes mediante instancias de navegador Selenium.
- Autenticacion con firma digital y uso del Firmador BCCR para ingreso a CIC/SUGEF.
- Consulta, autorizacion y generacion de reportes CIC/SUGEF para personas fisicas y juridicas.
- Procesamiento de reportes publicos, privados, compactos y flujos masivos segun tipo de trabajo.
- Carga masiva de solicitudes desde archivos Excel con asignacion de lote, prioridad y usuario.
- Seguimiento de lotes con estado, cantidad de registros, duracion y distribucion visual por estado.
- Reintento de reportes con error y cancelacion de reportes pendientes por lote.
- Descarga y exportacion de resultados de lotes procesados.
- Generacion y almacenamiento de documentos/reporte en HTML, PDF y plantillas Excel de salida.
- Integracion con base de datos interna y API de configuracion/cola de CICLON.
- Configuracion por cliente para rutas de firmador, reportes, autorizacion, correo y parametros operativos.
- Logging principal y secundario de actividad de procesamiento.
- Soporte de envio/gestion de resultados con informacion de usuario solicitante y cliente.
