Skip to content

Releases: dccaceres/ruc-dnit

v1.2.0 - Mejoras Realizadas en el Proyecto

06 Feb 23:58

Choose a tag to compare

Mejoras Realizadas en el Proyecto

Módulo Main (src/main.py)

1. Importación Correcta de Módulos

  • Se movió la importación de os al 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 entorno
    • get_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 logging de 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_HOST y API_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

05 Feb 02:03

Choose a tag to compare

¡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 .zip desde una URL configurada.
  • Conversión y Unificación: Descomprime múltiples archivos y unifica el contenido .txt en 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.sqlite lista 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.txt

Contributors

  • Daniel Cáceres (Autor)