# Estructura de Directorios

Vista general de la raiz del proyecto:

```text
.
|-- cloud_conversion_ui/
|-- data/
|-- docs/
|-- input/
|-- logs/
|-- prompts/
|-- references/
|-- scripts/
|-- tests/
|-- .env.example
|-- .gitignore
|-- README.md
|-- requirements.txt
|-- send.py
`-- server.py
```

## `cloud_conversion_ui/`

Interfaz grafica Streamlit.

```text
cloud_conversion_ui/
|-- Home.py
|-- components.py
|-- models.py
|-- theme.py
|-- pages/
`-- services/
```

| Ruta | Uso |
| --- | --- |
| `Home.py` | Entrada de Streamlit. |
| `pages/01_Inventario.py` | Carga, seleccion y archivado de inventarios. |
| `pages/02_Catalogos.py` | Estado y actualizacion de catalogos. |
| `pages/03_Ejecucion.py` | Ejecucion paso a paso de AWS/OCI. |
| `pages/04_Dashboard.py` | Comparativo de costos y cobertura. |
| `pages/05_Logs_Artefactos.py` | Lectura y descarga de artefactos. |
| `services/pipeline_runner.py` | Adaptador que invoca scripts existentes. |
| `services/inventory_files.py` | Gestion de archivos de inventario. |
| `services/dashboard_data.py` | Calculos del dashboard. |
| `services/artifacts.py` | Busqueda de artefactos recientes. |

## `scripts/`

Scripts operativos y utilidades compartidas.

```text
scripts/
|-- aws_fetch_offer.py
|-- aws_eda.py
|-- aws_match.py
|-- oci_fetch_offer.py
|-- oci_match.py
|-- cloud-chat.py
|-- cloud_chat_runtime.py
|-- whatsapp_chatbot.py
|-- whatsapp_send.py
|-- whatsapp_logging.py
|-- match_shared.py
`-- cloud_conversion_logging.py
```

Los scripts CLI son utiles para automatizacion, reproduccion de problemas o ejecuciones sin Streamlit.

## `data/`

Datos crudos, catalogos y resultados.

```text
data/
|-- raw/
|   |-- aws/
|   `-- oci/
|-- catalog/
|   |-- aws/
|   `-- oci/
|-- match/
|   |-- aws/
|   `-- oci/
`-- eda/
    `-- aws/
```

| Ruta | Uso |
| --- | --- |
| `data/raw/aws/index.json` | Offer AWS EC2 descargado. |
| `data/raw/oci/products.json` | Productos OCI descargados. |
| `data/catalog/aws/aws_ec2_catalog.csv` | Catalogo AWS plano. |
| `data/catalog/oci/oci_price_list.csv` | Catalogo OCI plano. |
| `data/match/aws/` | Salidas `MATCH-AWS-*.csv`. |
| `data/match/oci/` | Salidas `MATCH-OCI-*.csv`. |
| `data/eda/aws/` | Reportes Markdown de EDA AWS. |

Nota: `data/` puede ser grande. En este workspace pesa aproximadamente 8 GB.

## `input/`

Inventarios de entrada.

```text
input/
|-- done/
`-- gui_uploads/
```

| Ruta | Uso |
| --- | --- |
| `input/` | Inventarios activos disponibles para CLI/GUI. |
| `input/gui_uploads/` | Inventarios subidos desde Streamlit. |
| `input/done/` | Inventarios procesados o archivados. |

La GUI no mueve inventarios automaticamente al ejecutar matching. El archivado manual se hace desde la pagina `Inventario`.

## `logs/`

Bitacoras diarias generadas por scripts:

```text
logs/log_cloud_conversion_YYYYMMDD.txt
```

`logs/` esta en `.gitignore`. Revisa contenido antes de compartir.

## `prompts/`

Prompts usados por matching AWS y mapeo de columnas.

```text
prompts/aws_match_prompts.py
```

## `references/`

Material de referencia, notebooks y ejemplos historicos.

```text
references/
|-- Pricing-oci-example.xlsx
`-- aws-latest-json-eda-v1-1.ipynb
```

## `tests/`

Suite de pruebas Pytest.

Incluye pruebas para:

- AWS/OCI fetch y match.
- Cloud Chat.
- WhatsApp.
- Utilidades compartidas.
- Interfaz grafica y servicios UI.

Comando:

```bash
python -m pytest -q
```

## Archivos raiz

| Archivo | Uso |
| --- | --- |
| `README.md` | Entrada principal del proyecto. |
| `requirements.txt` | Dependencias Python. |
| `.env.example` | Plantilla segura de variables. |
| `.gitignore` | Exclusiones de secretos, venv, logs y caches. |
| `server.py` | Demo legacy Flask/Twilio. |
| `send.py` | Demo legacy de envio WhatsApp. |

## Que compartir

Compartir:

- Codigo fuente.
- Documentacion.
- `.env.example`.
- Datos actuales, si ya fueron revisados para uso interno.

No compartir:

- `.env`.
- `.venv/`.
- `logs/` sin revision.
- Caches de Python, Pytest, Ruff o sistema.
- Inventarios con informacion sensible no autorizada.

