-
Notifications
You must be signed in to change notification settings - Fork 0
Script para monitorear apis y generar reporte
License
PDNMX/monitorearSistemas
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
# 🌟 API Service Data Collector ## 📋 Descripción Este proyecto consiste en tres scripts de servicio (`APIService_s1.js`, `APIService_s2.js`, y `APIService_s3.js`) diseñados para recolectar datos de diferentes endpoints. Los scripts pueden ejecutarse individualmente o en conjunto a través del archivo `index.js`. ## 🚀 Características - ✨ Recolección automatizada de datos de múltiples endpoints - 📊 Generación de archivos CSV con resultados - 🔄 Manejo de errores y registro detallado - 📝 Logging completo de operaciones - ⚡ Ejecución individual o conjunta de servicios ## 🛠️ Configuración ### Requisitos Previos ```bash node >= 14.x npm >= 6.x ``` ### Configuración del Archivo .env Crear un archivo `.env` en la raíz del proyecto con las siguientes variables pero sustituyendo las rutas de los archivos de entrada: ```env # Variables de entrada para el s1 url_proveedores_s1 = "https://api.plataformadigitalnacional.org/s1/v1/providers" url_busqueda_s1 = "https://api.plataformadigitalnacional.org/s1/v1/search" # Variables de entrada para el s2 url_busqueda_s2 = "https://api.plataformadigitalnacional.org/s2/api/v1/summary" # Variables de entrada para el s3 url_proveedores_s3 = "https://api.plataformadigitalnacional.org/s3-wrapper/api/v1/providers" url_busqueda_s3 = "https://api.plataformadigitalnacional.org/s3-wrapper/api/v1/" # variables de salida salida_s1 = "./resultados_s1" salida_s2 = "./resultados_s2" salida_s3 = "./resultados_s3" ``` ### Estructura de Directorios ``` proyecto/ ├── .env ├── index.js ├── APIService_s1.js ├── APIService_s2.js ├── APIService_s3.js ├── EndPointsAPIS/ │ ├── EndPoints_s1/ │ │ └── endpointsS1.json │ ├── EndPoints_s2/ │ │ └── endpointsS2.json │ └── EndPoints_s3/ │ └── endpointsS3.json └── resultados/ ├── resultados_s1/ ├── resultados_s2/ └── resultados_s3/ ``` ## 💻 Uso ### Ejecución Individual Para ejecutar cada servicio individualmente: ```bash node APIService_s1.js node APIService_s2.js node APIService_s3.js ``` ### Ejecución Conjunta Para ejecutar todos los servicios: ```bash node index.js ``` ## 📁 Archivos de Salida Cada servicio genera los siguientes archivos en su respectivo directorio de salida: ``` resultados_sX/ ├── resultados_sX_[fecha].csv # Resultados diarios ├── total_registros.csv # Totales acumulados └── errores_sX_[fecha].csv # Registro de errores ``` ## 📊 Formato de Archivos CSV ### resultados_sX_[fecha].csv ```csv Fecha,Proveedor,ID,Total_Registros ``` ### total_registros.csv ```csv Fecha,Total_Registros ``` ### errores_sX_[fecha].csv ```csv Fecha,Proveedor,ID,Mensaje_Error,Codigo_HTTP,Detalles ``` ##⚠️ Manejo de Errores - Los errores detallados se registran en archivos separados - El archivo principal marca registros con error como "No disponible" - Se mantiene un log completo de todas las operaciones ## 🔍 Logging El sistema utiliza `log4js` para mantener un registro detallado de: - ✅ Operaciones exitosas - ❌ Errores y excepciones - ⏱️ Tiempos de ejecución - 📝 Detalles de respuestas # Comparador de Registros por Periodo comparador.py Este script permite analizar y comparar registros de datos entre dos fechas específicas, calculando las diferencias y porcentajes de cambio para cada entidad pública. ## Características - Compara registros entre fechas específicas definidas por el usuario - Identifica automáticamente el primer y último registro con valores válidos para cada entidad - Calcula diferencias y porcentajes de cambio en los registros - Maneja correctamente valores de error y datos faltantes - Normaliza nombres de entidades para gestionar diferentes formatos y variaciones - Genera un informe detallado con observaciones claras y precisas ## Requisitos - Python 3.6 o superior - No requiere bibliotecas externas (usa solo módulos de la biblioteca estándar) ## Uso del script Para ejecutar el script de comparación de registros, utilice el siguiente comando en su terminal: ```bash python comparador.py <fecha_inicio> <fecha_fin> <archivo_origen> <archivo_destino> ``` Donde: - `comparador.py`: Es el nombre del archivo del script. - `<fecha_inicio>`: Fecha de inicio del periodo en formato YYYY-MM-DD (por ejemplo: 2025-03-16). - `<fecha_fin>`: Fecha de fin del periodo en formato YYYY-MM-DD (por ejemplo: 2025-03-20). - `<archivo_origen>`: Ruta al archivo CSV que contiene los datos históricos que desea analizar. - `<archivo_destino>`: Ruta donde se guardará el archivo CSV con los resultados del análisis. Ejemplo: ```bash python comparador.py 2025-03-16 2025-03-20 resultados_s3/s3_faltas_graves_personas_fisicas.csv analisis/resultados_comparacion_s3_fisicas.csv ``` Este comando analizará los datos históricos del archivo `s3_faltas_graves_personas_fisicas.csv` ubicado en la carpeta `resultados_s3`, comparando el periodo entre el 16 y el 20 de marzo de 2025, y guardará los resultados del análisis en el archivo `resultados_comparacion_s3_fisicas.csv` dentro de la carpeta `analisis`. ## Formato del archivo de entrada El script espera un archivo CSV con el siguiente formato: ``` FECHA_EJECUCION,HORA_EJECUCION,ENTE,TOTAL_REGISTROS,ESTATUS 2025-03-16,12:57:14,Aguascalientes,1584,Disponible 2025-03-16,12:57:14,Baja California Sur,80,Disponible ... ``` Las columnas necesarias son: - `FECHA_EJECUCION`: Fecha en formato YYYY-MM-DD - `HORA_EJECUCION`: Hora en formato HH:MM:SS - `ENTE` o `ENTE_PUBLICO`: Nombre de la entidad - `TOTAL_REGISTROS`: Número de registros (puede contener "ERROR") - `ESTATUS`: Estado del registro (p.ej. "Disponible", "No disponible/Error reportado por la API") ## Formato del archivo de salida El script generará un archivo CSV con las siguientes columnas: - `ENTE`: Nombre de la entidad - `FECHA INICIAL`: Fecha y hora del primer registro utilizado para la comparación - `FECHA FINAL`: Fecha y hora del último registro utilizado para la comparación - `REGISTROS INICIALES`: Número de registros en la fecha inicial - `REGISTROS FINALES`: Número de registros en la fecha final - `DIFERENCIA DE REGISTROS EN EL PERIODO`: Cambio en el número de registros - `PORCENTAJE DE CAMBIO`: Porcentaje de cambio respecto a los registros iniciales - `OBSERVACIONES`: Notas explicativas sobre los datos analizados ## Funcionamiento El script realiza las siguientes operaciones: 1. Lee los registros del archivo de entrada dentro del periodo especificado 2. Agrupa los registros por entidad 3. Para cada entidad: - Encuentra el primer registro con valor numérico válido - Encuentra el último registro con valor numérico válido - Calcula la diferencia y el porcentaje de cambio entre ambos - Añade observaciones relevantes sobre los datos 4. Genera un archivo CSV con los resultados ## Manejo de errores y casos especiales - Si un valor `TOTAL_REGISTROS` es "ERROR", el script lo ignora y busca otro registro con valor numérico válido - Si una entidad solo tiene valores de error, el script lo indica en las observaciones - Si solo existe un registro válido para una entidad en todo el periodo, se utiliza como valor inicial y final - Los nombres de entidades se normalizan para manejar variaciones (mayúsculas/minúsculas, espacios, guiones) - Las entidades que no tienen registros dentro del periodo no aparecen en el resultado ## Contribuciones Las contribuciones son bienvenidas. Por favor, abra un issue para discutir cambios importantes antes de enviar un pull request. ## 👥 Contribución Las contribuciones son bienvenidas. Por favor, asegúrese de: 1. Hacer fork del repositorio 2. Crear una rama para su feature 3. Hacer commit de sus cambios 4. Hacer push a la rama 5. Crear un Pull Request ## 📜 Licencia Este proyecto está bajo la licencia MIT. Ver el archivo `LICENSE` para más detalles. --- Desarrollado con ❤️ por Héctor Franco
About
Script para monitorear apis y generar reporte
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published