Una API moderna construida con FastAPI que permite visualizar y analizar la planilla de empleados del CSS (Caja de Seguro Social) a través de dashboards interactivos y endpoints RESTful.
- API RESTful con FastAPI para acceso a datos de empleados
- Web Scraping automatizado con Selenium y BeautifulSoup
- Base de datos MongoDB para almacenamiento eficiente
- Análisis de datos con Polars y Pandas
- Dashboards interactivos para visualización de datos
- Containerización con Docker para fácil despliegue
- Documentación automática con Swagger UI
- FastAPI: Framework web moderno y rápido
- Python 3.8+: Lenguaje de programación
- Uvicorn: Servidor ASGI de alto rendimiento
- MongoDB: Base de datos NoSQL para almacenamiento de documentos
- PyMongo: Driver oficial de Python para MongoDB
- Selenium: Automatización de navegadores web
- BeautifulSoup4: Parsing de HTML
- Polars: Manipulación de datos de alta velocidad
- Pandas: Análisis de datos
- Requests: Cliente HTTP
- Docker: Containerización
- WebDriver Manager: Gestión automática de drivers
- Python 3.8 o superior
- MongoDB instalado y ejecutándose
- Docker (opcional, para containerización)
- Chrome/Chromium (para web scraping)
git clone <repository-url>
cd css-projectpython -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activatepip install -r requirements.txtCrear un archivo .env en la raíz del proyecto:
MONGODB_URL=mongodb://localhost:27017
DATABASE_NAME=css_analytics
CSS_LOGIN_URL=https://css.gob.pa/login
CSS_USERNAME=tu_usuario
CSS_PASSWORD=tu_contraseña# Desarrollo
uvicorn app.main:app --reload
# Producción
python -m app.mainLa API estará disponible en: http://localhost:8000
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
docker build -t css-analytics .docker run -p 8000:8000 css-analyticsGET /
Verifica el estado de la API.
GET /empleados
Obtiene la lista completa de empleados del CSS.
GET /dashboard/stats
Retorna estadísticas generales de empleados.
GET /empleados/filtro?departamento=IT&salario_min=1000
Permite filtrar empleados por diferentes criterios.
- Dashboard General: Estadísticas generales de empleados
- Análisis Salarial: Distribución de salarios por departamento
- Tendencias: Evolución histórica de la planilla
- Departamentos: Análisis por área de trabajo
- Autenticación JWT implementada
- Variables sensibles en archivos
.env - Validación de datos con Pydantic
- Rate limiting para prevenir abuso
# Ejecutar tests
pytest tests/
# Con cobertura
pytest --cov=app tests/css-project/
├── app/
│ ├── __init__.py
│ ├── main.py # Punto de entrada de la aplicación
│ ├── db.py # Configuración de base de datos
│ └── services/
│ ├── workers.py # Workers para web scraping
│ └── data/ # Procesamiento de datos
├── cmd/
│ └── start.sh # Script de inicio
├── tests/ # Tests unitarios
├── .env # Variables de entorno
├── .gitignore # Archivos ignorados por git
├── Dockerfile # Configuración de Docker
├── requirements.txt # Dependencias de Python
└── README.md # Este archivo
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -m 'Añadir nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
- Implementar autenticación OAuth2
- Añadir más tipos de dashboards
- Integrar notificaciones en tiempo real
- Implementar cache con Redis
- Añadir exportación a PDF/Excel
- Crear aplicación móvil
Si encuentras algún problema, por favor crea un issue en el repositorio con:
- Descripción del problema
- Pasos para reproducir
- Comportamiento esperado
- Screenshots (si aplica)
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
- Desarrollador Principal: [Tu Nombre]
- Email: [tu-email@ejemplo.com]
- CSS de Panamá por proporcionar los datos
- Comunidad de FastAPI por la excelente documentación
- Contribuidores del proyecto
⭐ Si este proyecto te ha sido útil, ¡no olvides darle una estrella!