Scavengr - Herramienta Python para Extracción de Metadatos de Bases de Datos
Author: Jason Rivera
Description: Scavengr es una herramienta CLI para extraer, validar y documentar metadatos de bases de datos con inteligencia automática

## 🚀 Características Principales

Extrae esquemas, genera DBML, crea diccionarios y produce informes analíticos

🔍

### Extracción de Metadatos

Soporte para PostgreSQL, MySQL/MariaDB y SQL Server. Extracción completa de tablas, columnas, tipos de datos, relaciones e índices.

📊

### Diccionarios de Datos Profesionales

Formato Excel avanzado con 19 campos especializados. Análisis de sensibilidad automático y descripciones inteligentes.

✅

### Validación de Esquemas DBML

Validación exhaustiva de sintaxis, estructura y consistencia. Detección de errores en tablas, relaciones y claves. Validaciones proactivas de calidad (CamelCase, tipos, índices, autoreferences).

📈

### Reportes Analíticos

Score de calidad en 7 dimensiones. Análisis estadístico y recomendaciones priorizadas por impacto.

⚡

### Sistema de Caché Inteligente

Caché automático de metadatos con TTL de 24 horas. Reducción del 90% en tiempo de extracciones subsecuentes. Serialización Pickle o JSON.

## ✅ Flujo de Trabajo Típico

Configuración simple y comandos intuitivos

### 1. Configuración Inicial

`# Una sola vez
scavengr init`

### 2. Extraer Esquema

`scavengr extract -o schema.dbml`

### 3. Validar

`scavengr validate -i schema.dbml`

### 4. Documentar

`scavengr dictionary -i schema.dbml -o dict.xlsx`

## ⚡ Instalación

Múltiples formas de instalar y comenzar a usar Scavengr

### Desde PyPI (Recomendado)

`# Instalación básica
pip install scavengr
# Verificar instalación
scavengr --version
# Configuración inicial
scavengr init`

### Desde Fuente (Desarrollo)

`# Clonar repositorio
git clone https://github.com/JasRockr/Scavengr.git
cd Scavengr
# Instalar en modo desarrollo
pip install -e .`

## 🎯 Uso Básico

Comandos principales y ejemplos prácticos

### Configuración Rápida

`# Generar archivo .env automáticamente
scavengr init
# O configuración global
scavengr init --global`

### Extraer y Validar

`# Extraer esquema completo
scavengr extract -o mi-esquema.dbml
# Con caché (90% más rápido)
scavengr extract --cache -o mi-esquema.dbml
# Validar estructura
scavengr validate -i mi-esquema.dbml`

### Generar Documentación

`# Diccionario de datos
scavengr dictionary -i schema.dbml -o diccionario.xlsx
# Reporte analítico
scavengr report -i schema.dbml -o reporte.xlsx`

## ✅ Validación y Calidad de Código (v0.0.4)

Type hints completos • 0 errores mypy • 282/282 tests pasando • 74% coverage

### 🔍 Type Checking

`# Validar tipos de datos (mypy strict)
python -m mypy scavengr/ --strict
# Resultado esperado:
Success: no issues found`

### 🧪 Ejecutar Tests

`# Tests unitarios e integración
python -m pytest tests/ -v
# Con cobertura
python -m pytest tests/ --cov=scavengr`

### 📊 Validación Completa

`# Type checking + Tests + Linting
python -m mypy scavengr/ --strict && \
python -m pytest tests/ -v && \
python -m flake8 scavengr/`

### 🎨 Formateo Automático

`# Black - Formateador
python -m black scavengr/
# isort - Organizar imports
python -m isort scavengr/`

### 📈 Análisis de Coverage

`# Generar reporte HTML
python -m pytest tests/ \
--cov=scavengr \
--cov-report=html
# Abrir: htmlcov/index.html`

### 🚀 Instalación Desarrollo

`# Con todas las dependencias
pip install -e ".[dev]"
# Pre-commit hooks
pre-commit install`

### 📋 Métricas de Calidad

0
Errores Mypy
51/51
Tests Pasando
100%
Type Coverage
33
Archivos Tipados