Releases: dccaceres/ruc-dnit
Releases · dccaceres/ruc-dnit
v1.2.0 - Mejoras Realizadas en el Proyecto
Mejoras Realizadas en el Proyecto
Módulo Main (src/main.py)
1. Importación Correcta de Módulos
- Se movió la importación de
osal inicio del archivo para evitar importaciones condicionales.
2. Manejo de Excepciones
- Se agregó manejo completo de excepciones con bloques try-catch.
- Se implementó manejo específico para interrupciones del usuario (Ctrl+C).
- Se mejoraron los mensajes de error para facilitar la depuración.
3. Simplificación de la Lógica de Configuración
- Se separó la lógica de obtención de configuración en funciones dedicadas:
get_config_from_env()para obtener configuración desde variables de entornoget_config_from_file()para obtener configuración desde archivo
- Se simplificó el flujo principal de la aplicación.
4. Validación de URL
- Se añadió función
is_valid_url()para validar el formato de las URLs antes de procesarlas. - Se implementó validación que comprueba que la URL tenga esquema y nombre de dominio válidos.
5. Mejora de Mensajes de Error
- Se actualizaron los mensajes de error para ser más informativos y útiles para el usuario.
- Se proporcionan instrucciones claras sobre cómo corregir problemas comunes.
6. Adición de Tipos a Funciones
- Se agregaron anotaciones de tipo a todas las funciones para mejorar la claridad y el soporte de IDE.
- Se tipificaron parámetros y valores de retorno de funciones.
Módulo API (src/api.py)
1. Contexto de Conexión a Base de Datos
- Se implementó un administrador de contexto (
get_db_connection()) para conexiones SQLite. - Se garantiza el cierre adecuado de conexiones incluso en caso de excepciones.
- Se agregó manejo de errores específico para operaciones de base de datos.
2. Validación de Formato de RUC
- Se creó la función
is_valid_ruc_format()para validar que los RUC contengan solo dígitos y tengan una longitud razonable. - Se integró la validación en los endpoints
/ruc/{ruc}y/buscar. - Se devuelve un código de estado HTTP 400 para entradas con formato inválido.
3. Sistema de Logging
- Se configuró un sistema de logging para registrar eventos y errores.
- Se registran errores específicos de base de datos y operaciones.
- Se utiliza el módulo
loggingde Python con nivel INFO.
4. Seguridad contra Inyección SQL
- Se mantuvieron consultas parametrizadas para prevenir inyección SQL.
- Se validan las entradas de usuarios antes de usarlas en consultas.
5. Configuración Centralizada
- Se implementó carga de variables de entorno usando
dotenv. - Se permite configurar la ruta de la base de datos mediante la variable
DB_PATH. - Se permite configurar host y puerto del servidor mediante variables
API_HOSTyAPI_PORT.
6. Manejo de Concurrencia
- Se mejoró el manejo de conexiones concurrentes a la base de datos.
- Se asegura la limpieza adecuada de recursos en cada operación.
7. Documentación Mejorada
- Se añadieron descripciones detalladas a todos los endpoints.
- Se incluyeron resúmenes y descripciones para Swagger/OpenAPI.
- Se mejoró la documentación interna de las funciones.
8. Manejo de Códigos de Estado HTTP
- Se implementaron códigos de estado HTTP apropiados:
- 400 Bad Request para entradas con formato incorrecto
- 404 Not Found para búsquedas sin resultados
- 200 OK para operaciones exitosas
Beneficios Generales de las Mejoras
- Mayor Robustez: El código ahora maneja errores de manera más efectiva.
- Mejor Seguridad: Validación de entradas y protección contra inyección SQL.
- Facilidad de Mantenimiento: Código más modular y bien documentado.
- Mejor Experiencia de Usuario: Mensajes de error más claros y validación de entradas.
- Escalabilidad: Configuración centralizada y manejo de recursos optimizado.
Full Changelog: 1.0.0...1.2.0
v1.0.0 - Lanzamiento Inicial: API de Consulta RUC y Procesador de Datos
¡Me complace anunciar la primera versión estable de Zip Downloader + API RUC! 🎉
Esta herramienta integral automatiza la descarga y procesamiento de padrones de contribuyentes y ofrece una API REST moderna para consultas rápidas.
✨ Características Principales
🚀 Procesamiento Automático de Datos
- Descarga Inteligente: Detecta y descarga automáticamente archivos
.zipdesde una URL configurada. - Conversión y Unificación: Descomprime múltiples archivos y unifica el contenido
.txten un único dataset CSV optimizado. - Validación de Datos: Sistema robusto que detecta y elimina registros corruptos o inconsistentes (generando un reporte en
error.csv). - Base de Datos SQLite: Generación automática de una base de datos
ruc.sqlitelista para consultas de alto rendimiento.
🌐 API REST (FastAPI)
- Consulta por RUC: Endpoint optimizado para obtener datos de un contribuyente específico.
- Búsqueda Avanzada: Búsqueda flexible por Razón Social o RUC parcial con paginación.
- Documentación Interactiva: Swagger UI y ReDoc integrados automáticamente.
- Monitoreo: Endpoint de salud (
/health) para verificar estado del servicio y conexión a BD.
🛠️ Herramientas y Configuración
- Interfaz de Línea de Comandos (CLI): Ejecución flexible con soporte para argumentos.
- Configuración Versátil: Soporte para configuración vía
config.ini, variables de entorno (.env) o argumentos directos.
📦 Instalación Rápida
git clone https://github.com/dccaceres/ruc-dnit.git
cd zip-downloader
pip install -r requirements.txtContributors
- Daniel Cáceres (Autor)