# Cloud Conversion

Cloud Conversion es un proyecto Python para apoyar evaluaciones de migracion cloud. Descarga y transforma catalogos de precios de AWS y OCI, compara inventarios de servidores contra shapes cloud, genera archivos `MATCH-*` con recomendaciones y costos, y ofrece una interfaz grafica local en Streamlit para operar el pipeline sin depender de comandos manuales.

La ruta recomendada para arquitectos es la interfaz grafica. Los scripts CLI siguen disponibles para automatizacion, troubleshooting o ejecuciones controladas.

## Quick Start

1. Crear y activar ambiente virtual:

```bash
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```

2. Configurar variables opcionales:

```bash
cp .env.example .env
```

3. Abrir la interfaz grafica:

```bash
streamlit run cloud_conversion_ui/Home.py
```

4. En la GUI:

- Selecciona o sube un inventario en `Inventario`.
- Actualiza catalogos en `Catalogos` si necesitas precios recientes.
- Ejecuta `AWS Match` y `OCI Match` en `Ejecucion`.
- Revisa costos y cobertura en `Dashboard`.
- Descarga CSVs, EDA y logs en `Logs y Artefactos`.

## Flujo Operativo

### Interfaz grafica

La aplicacion Streamlit vive en `cloud_conversion_ui/` y usa `cloud_conversion_ui/Home.py` como entrada. Es el camino recomendado para uso diario porque agrupa inventarios, catalogos, ejecucion, resultados y descargas en una sola consola local.

Al ejecutar matching desde la GUI, los inventarios no se archivan automaticamente. Internamente la GUI llama los pipelines con `move_to_done=False`; si quieres archivar un inventario, hazlo desde la pagina `Inventario`.

### Scripts CLI

Los scripts estan en `scripts/`. El pipeline AWS tipico es:

```bash
python scripts/aws_fetch_offer.py
python scripts/aws_eda.py
python scripts/aws_match.py --inventory input/inventario.xlsx --skip-llm
```

El pipeline OCI tipico es:

```bash
python scripts/oci_fetch_offer.py
python scripts/oci_match.py --inventory input/inventario.xlsx --skip-llm
```

## Documentacion

- [Despliegue Local/VM](docs/DEPLOYMENT.md)
- [Guia de la Interfaz Grafica](docs/UI_GUIDE.md)
- [Scripts y Comandos](docs/SCRIPTS.md)
- [Diccionario de Datos](docs/DATA_DICTIONARY.md)
- [Estructura de Directorios](docs/DIRECTORY_STRUCTURE.md)

## Comandos Utiles

| Comando | Uso |
| --- | --- |
| `streamlit run cloud_conversion_ui/Home.py` | Inicia la GUI local. |
| `python scripts/aws_match.py --help` | Muestra parametros de AWS Match. |
| `python scripts/oci_match.py --help` | Muestra parametros de OCI Match. |
| `python scripts/cloud-chat.py --ask "Cuanto cuesta m7a.xlarge en virginia?"` | Consulta el catalogo AWS desde CLI. |
| `python scripts/whatsapp_chatbot.py` | Inicia webhook Flask para WhatsApp Cloud Chat. |
| `python -m pytest -q` | Ejecuta la suite de pruebas. |

## Datos y Seguridad

- `.env` contiene secretos locales y no debe subirse.
- `.env.example` es la plantilla segura para compartir.
- Los datos actuales se conservan para uso interno, pero antes de publicar el repo se debe revisar sensibilidad de inventarios, clientes, precios y logs.
- `data/` puede ser grande; en este workspace pesa aproximadamente 8 GB.
- `logs/`, `.venv/`, caches y archivos temporales estan ignorados por Git.

## Validacion antes de Compartir

Ejecuta:

```bash
python -m pytest -q
python scripts/aws_match.py --help
python scripts/oci_match.py --help
python scripts/aws_eda.py --help
python scripts/cloud-chat.py --help
python scripts/whatsapp_send.py --help
streamlit run cloud_conversion_ui/Home.py
```

Para validar Streamlit en una VM, confirma que el navegador abre la pagina inicial y que el sidebar muestra `Inventario`, `Catalogos`, `Ejecucion`, `Dashboard` y `Logs y Artefactos`.

