Mejoras de UX/UI:
- Mensajes de progreso persistentes durante la validación
- Estadísticas reales de 'IPs Disponibles' actualizadas post-validación
- Badge de estado muestra 'No disponible' en rojo para conflictos de ping
- Mejor distribución del formulario (checkboxes agrupados)
Correcciones:
- Corregido bug que ignoraba el límite de IPs seleccionado
- Corregido ocultamiento prematuro de indicadores de carga
- Corregido desaparición rápida de mensajes de éxito
Docs:
- Actualizado manifest a v1.6.1
- Actualizado CHANGELOG.md y README.md
- Agregar validación multi-capa para garantizar IPs 100% disponibles
- Capa 1: Filtrar IPs de dispositivos registrados en UISP
- Capa 2: Filtrar IPs de servicios CRM suspendidos/finalizados (449 IPs)
- Capa 3: Validar IPs usando búsqueda de sitios con type=subscriber
- Capa 4: Verificación opcional por ping para dispositivos de terceros
Nuevos Componentes:
- src/IpValidator.php: Clase de validación por búsqueda de sitios
- Validación progresiva en frontend JavaScript
- Endpoint action=validate en public.php
Mejoras:
- CrmService.php: Filtrado mejorado de servicios suspendidos/finalizados
- IpSearchService.php: Extraer todas las IPs de ipAddressList
- Frontend: Validación progresiva de IPs con feedback visual
- Cambiar suspended=false a suspended=true en API de UISP
Correcciones:
- Corregir variable $config indefinida en handler de validación
- Corregir falsos positivos agregando parámetro type=subscriber
- Corregir IPs secundarias no detectadas
- Corregir IPs de servicios suspendidos/finalizados mostrándose disponibles
Resultados de Pruebas:
- IP 172.16.54.70 (servicio finalizado): Filtrada correctamente por capa CRM
- IP 172.16.54.58 (cliente activo): Filtrada correctamente por búsqueda de sitios
- Todas las IPs mostradas verificadas como 100% disponibles
Documentación:
- Actualizado README.md con detalles del sistema de 4 capas
- Actualizado CHANGELOG.md con notas de versión 1.6.0
- Creado walkthrough.md completo
✨ Nuevo:
- Botón "✏️ Editar" en tabla de segmentos del editor avanzado
- Modo de edición visual con título y botón dinámicos
- Campo de segmento se deshabilita durante edición (no se puede cambiar ID)
- CRUD completo: Create, Read, Update, Delete
🔧 Mejoras:
- Función addSegmentToTable() maneja creación y actualización
- 5 nuevas funciones helper para gestión de rangos:
* clearRangeContainers()
* addInitialRangeWithData() / addFinalRangeWithData()
* resetForm()
* editSegment()
- Scroll automático al inicio del formulario al editar
- Validación de duplicados solo en modo creación
- Mensajes diferenciados ("agregado" vs "actualizado")
🎨 Interfaz:
- Botón editar con estilo azul distintivo
- Indicadores visuales claros de modo edición vs agregar
- Formulario se pre-llena automáticamente con datos del segmento
Completa la funcionalidad CRUD del panel de administración de IPs.
- Corregida inicialización de editorData que impedía cargar rangos personalizados
- Corregidos errores de escape JS que rompían botones de la interfaz
- Corregida clasificación frontend que ignoraba rangos específicos por segmento
- Agregado indicador visual de modo y logs de depuración
- Eliminada columna redundante en tabla de resultados
Resuelve problemas donde los rangos admin personalizados eran ignorados.
- Agregar editor visual de configuración avanzada con protección por contraseña
- Implementar rangos de IPs administrativas personalizados por segmento
- Crear AdminRangeHelper.php para procesamiento de JSON por segmento
- Agregar botón ⚙️ de acceso rápido al editor
- Implementar modal de autenticación con validación de contraseña
- Agregar fallback inteligente a rangos globales para segmentos no configurados
Configuración avanzada:
- 3 campos nuevos en manifest.json (checkbox, JSON textarea, password)
- Editor visual completo con formularios dinámicos
- Agregar/eliminar segmentos y rangos en tiempo real
- Tabla de segmentos configurados con acciones
- Validación de cambios sin guardar
- Mensaje de éxito al guardar configuración
Backend:
- AdminRangeHelper.php: getSegmentLimits(), isAdminIpCustom(), validateConfigJson()
- IpSearchService.php: soporte para rangos personalizados con fallback
- Handler POST para guardar configuración JSON
Frontend:
- ~250 líneas de JavaScript para gestión del editor
- CSS responsive con soporte para temas claro/oscuro
- Interfaz amigable para usuarios no técnicos
Lógica de fallback:
- Checkbox desactivado → rangos globales para todos
- Checkbox activado + segmento en JSON → rangos del JSON
- Checkbox activado + segmento NO en JSON → fallback a rangos globales
Archivos creados:
- src/AdminRangeHelper.php
Archivos modificados:
- manifest.json: 3 campos nuevos, versión 1.5.0
- src/IpSearchService.php: lógica de fallback
- public.php: editor completo, modal, JavaScript
- CHANGELOG.md: entrada v1.5.0
- README.md: documentación de nuevos campos"
- Agregar sistema de modo claro/oscuro con botón toggle (☀️/🌙)
- Implementar persistencia de tema con localStorage
- Optimizar tabla para móviles (3 columnas en lugar de 5)
- Cambiar límite por defecto a 5 IPs para búsquedas más rápidas
- Mejorar tipografía de direcciones IP (más grande y negrita)
- Actualizar documentación y versión a 1.3.3
Características del modo claro/oscuro:
- Botón flotante en esquina superior derecha
- Paleta de colores profesional para tema claro
- Transiciones suaves entre temas
- Preferencia guardada automáticamente
Mejoras móviles:
- Columna "Tipo de IP" oculta en móviles
- Badge de tipo mostrado bajo la dirección IP
- Mejor distribución de espacio (40% IP, 35% Estado, 25% Acción)
- Fuentes y padding optimizados
Archivos modificados:
- public.php: Sistema de temas, optimizaciones móviles, límite por defecto
- CHANGELOG.md: entrada v1.3.3
- README.md: documentación de nuevas características
- manifest.json: actualización de versión a 1.3.3
- Agregar botón de cancelar que aparece durante el proceso de verificación por ping
- Permitir a los usuarios detener la verificación manteniendo resultados parciales
- Mejorar responsividad móvil para alineación de checkboxes
- Actualizar documentación y versión a 1.3.2
Características:
- Botón de cancelar dinámico con feedback visual
- Preserva IPs ya verificadas al cancelar
- Se oculta automáticamente al completar o cancelar
- Útil para modo de verificación "Todas las IPs"
Archivos modificados:
- public.php: UI y lógica del botón de cancelar
- CHANGELOG.md: entrada v1.3.2
- README.md: documentación de función de cancelar
- manifest.json: actualización de versión a 1.3.2