Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mateogiuffra/autogs
Automatización de tareas web y una API REST, diseñada para generar y gestionar resúmenes financieros a partir de sistemas externos. Utiliza Flask, Selenium y Pandas.
https://github.com/mateogiuffra/autogs
automation css deploy dockerfile firebase firebase-database flask-api html javascript pandas poo python selenium webscraping website
Last synced: about 13 hours ago
JSON representation
Automatización de tareas web y una API REST, diseñada para generar y gestionar resúmenes financieros a partir de sistemas externos. Utiliza Flask, Selenium y Pandas.
- Host: GitHub
- URL: https://github.com/mateogiuffra/autogs
- Owner: MateoGiuffra
- Created: 2024-12-16T04:21:45.000Z (25 days ago)
- Default Branch: main
- Last Pushed: 2025-01-03T02:44:04.000Z (7 days ago)
- Last Synced: 2025-01-03T03:30:11.280Z (7 days ago)
- Topics: automation, css, deploy, dockerfile, firebase, firebase-database, flask-api, html, javascript, pandas, poo, python, selenium, webscraping, website
- Language: Python
- Homepage:
- Size: 32 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Proyecto: Sistema de Automatización y API REST para Resúmenes
## Descripción General
Este proyecto es una combinación de automatización de tareas y una API REST que permite generar y obtener un resumen financiero a partir de un sistema externo. Utiliza herramientas modernas como Flask, Selenium y Pandas para ofrecer una solución robusta y escalable.## Características Principales
- **Automatización Web**: Navega automáticamente por el sistema externo, ingresa credenciales, descarga reportes y procesa la información.
- **API REST**: Ofrece endpoints para interactuar con la automatización y obtener resúmenes financieros.
- **Procesamiento de Datos**: Analiza reportes descargados utilizando Pandas y extrae información relevante.
- **Frontend Interactivo**: Interfaz web diseñada para interactuar con los endpoints de la API. Está optimizada para dispositivos móviles,
permitiendo al usuario acceder fácilmente desde su celular y obtener los resúmenes financieros con facilidad![Muestra del GIF](./front/static/assets/muestra.gif)
## Estructura del Proyecto
```
autogs/
├── abs_path.py
├── application/
│ ├── configuration/
│ │ └── firebase_config.py
│ ├── controller/
│ │ ├── APIREST/
│ │ │ └── SummaryApi.py
│ ├── automation/
│ │ ├── date_setter/
│ │ │ ├── DateSetter.py
│ │ │ ├── DateSetterLastMonth.py
│ │ │ ├── DateSetterLastMonthToday.py
│ │ │ └── DateSetterCurrentMonth.py
│ │ ├── FileDownloader.py
│ │ ├── Login.py
│ │ ├── Report.py
│ │ ├── Summary.py
│ │ └── WebDriverManager.py
│ ├── pandas/
│ │ └── ExcelReader.py
│ ├── service/
│ │ └── SummaryService.py
│ ├── persistence/
│ │ └── SummaryDAO.py
├── front/
│ ├── static/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── js/
│ │ │ └── scripts.css
│ │ ├── assets/
│ ├── templates/
│ │ │ └── index.html
├── Dockerfile.py
├── Procfile.py
└── requirements.txt
```### Descripción de Carpetas y Archivos
- **configuration/**: Configuracion de la base de datos.
- `firebase_config.py`: Encargado de leer las credenciales para inicializar la app de firebase y crear una instancia de firestore.
- **controller/**: Implementa la API REST con Flask.
- `SummaryApi.py`: Define los endpoints `/diferenciaResumenes`, `/diferenciaResumenesHoy` y `/obtenerResumen` para interactuar con el servicio.
- **automation/**: Contiene los scripts de automatización basados en Selenium.
- `WebDriverManager.py`: Trabaja como Orquestador usando el resto de las clases. Configura el WebDriver, navega y descarga reportes.
- `DateSetter.py`: Establece rangos de fechas en formularios dependiendo lo requerido.
- `Login.py`: Realiza el inicio de sesión en el sistema externo.
- `Report.py`: Navega al reporte deseado dentro del sistema.
- `FileDownloader.py`: Descarga el archivo del reporte y verifica su existencia.
- `Summary.py`: Define la lógica del negocio. Orquesta los pasos de automatización y procesamiento de datos. Almacena los datos de valor.
- **pandas/**: Procesa los datos del reporte descargado.
- `ExcelReader.py`: Lee y analiza el archivo descargado para extraer el total. Se maneja de forma eficiente borrando al anterior
para ahorrar espacio en memoria y recursos.
- **service/**: Se encarga de interactuar con el modelo y la capa de persistencia.
- `SummaryService.py`: Interviene como intermediario entre el negocio y la persistencia de datos para asegurar consistencia en los datos.
- **persistencia/**: Se encarga de interactuar con la base de datos (firestore).
- `SummaryDAO.py`: Crea y actualiza instancias de Summary con lo suficiente para asegurar su correcto funcionamiento.
- **abs_path.py**: Define rutas absolutas para asegura que el archivo se almacene correctamente.
- **requeriments.txt**: Lista de dependencias necesarias para ejecutar el proyecto.
- **Dockerfile**: Archivo de Docker preparado para que todo funcione correctamente en produccion.
- **front/**: Un mini front para interactuar con la aplicación. Hecho solo con CSS, HTML y JavaScript para que la app sea lo menos pesado y eficiente.## Tecnologías Utilizadas
- **Flask**: Framework para construir la API REST.
- **Selenium**: Para la automatización de navegación y descargas.
- **Pandas**: Para el análisis y procesamiento de datos.
- **dotenv y decouple**: Manejo de configuraciones sensibles como credenciales y variables de entorno.## Requisitos Previos
1. **Python 3.12+**
2. Instalación de dependencias:
```bash
pip install -r requirements.txt
```
3. **Google Chrome** y su correspondiente **ChromeDriver**.
4. Configurar un archivo `.env` con las credenciales:
```env
DB_USER=usuario
DB_PASSWORD=contraseña
DB_KEY=key de firebase (tiene que estar en una sola linea)
```## Cómo Ejecutar el Proyecto
1. Clona el repositorio y navega al directorio principal:
```bash
git clone
cd carpeta_raiz
```
2. Instala las dependencias:
```bash
pip install -r requirements.txt
```
3. Ejecuta la API REST:
```bash
python -m application.controller.APIREST.SummaryApi
```
4. Accede a los endpoints:
- GET `/diferenciaResumenes`: Devuelve la diferencia entre el resumen total del mes anterior y el resumen del dia actual.
-- ``Ejemplo``: Suponiendo que hoy es 26/12/2024, entonces la resta es entre el resumen del 30/11/2024 y del 26/12/2024
- GET `/diferenciaResumenesHoy`: Devuelve la diferencia entre el resumen de hoy pero un mes atras y el resumen del dia actual.
-- ``Ejemplo``: La resta es entre el resumen del 26/11/2024 y del 26/12/2024
- GET `/obtenerResumen`: Devuelve el resumen del dia actual en formato JSON.## Ventajas del Proyecto
- **Escalabilidad**: Diseñado con una arquitectura modular para agregar nuevas funcionalidades.
- **Automatización Eficiente**: Reduce significativamente el tiempo empleado en tareas repetitivas, aumentando la productividad.
- **Fácil Integración**: Puede ser integrado en otros sistemas mediante la API REST.
- **Eficiencia**: Optimizado para consumir únicamente los recursos necesarios, garantizando un desempeño eficiente.
- **Consistencia de Datos**: Utiliza Firestore como base de datos, asegurando la consistencia, alta disponibilidad y escalabilidad de los datos en tiempo real.## Deploy
- El proyecto ya esta listo para el deploy a traves del Dockerfile.
Especificamente listo para Render ya que esta escuchando en el puerto 10000, pero podes cambiarlo segun tus necesidades.## Contacto
Cualquier consulta o mejora, no dudes en contactarme: [email protected]