# sarahishtar/embalses_automatico architecture

> Architecture diagram of the GitHub repository sarahishtar/embalses_automatico, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sarahishtar/embalses_automatico
- Repository: https://github.com/sarahishtar/embalses_automatico

## Overview

This repository automates weekly updates to three Datawrapper graphics from MITECO hydrological bulletins. The `linea`, `cuencas`, and `embalses` processes run independently; each obtains and processes its relevant bulletin data, validates it, then writes graphic data and historical records. Shared download, configuration, validation, and atomic-write behavior lives in `procesos/comun.py`. The README documents the scheduled/manual runs and published outputs; the workflow implementation itself is not mapped here.

Main entry points: [`procesos/embalses.py`](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/embalses.py) (Reservoir map update), [`procesos/linea.py`](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/linea.py) (Line chart update), [`procesos/cuencas.py`](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/cuencas.py) (Basin map update), [`procesos/comun.py`](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/comun.py) (Shared download and I/O)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_processes["Update processes"]
  node_linea["Line chart update<br/>[linea.py]"]
  node_cuencas["Basin map update<br/>[cuencas.py]"]
  node_embalses["Reservoir map update<br/>[embalses.py]"]
end

subgraph group_shared["Shared runtime"]
  node_common["Shared download and I/O<br/>[comun.py]"]
end

subgraph group_storage["Published and historical data"]
  node_config["Rules and footnotes<br/>[config.json]"]
  node_coordinates["Reservoir coordinates"]
  node_linea_data["Line chart data<br/>[datos.csv]"]
  node_linea_meta["Line chart metadata<br/>[metadata.json]"]
  node_cuencas_data["Basin map data<br/>[datos.csv]"]
  node_cuencas_meta["Basin map metadata<br/>[metadata.json]"]
  node_embalses_data["Reservoir map data<br/>[datos.csv]"]
  node_embalses_meta["Reservoir map metadata<br/>[metadata.json]"]
  node_linea_history[("Line history<br/>[linea.csv]")]
  node_cuencas_history[("Basin history<br/>[cuencas.csv]")]
  node_embalses_history[("Reservoir history<br/>[embalses.csv]")]
end

subgraph group_external["External systems"]
  node_miteco["MITECO bulletin service"]
  node_datawrapper["Datawrapper"]
end

node_scheduler(("Scheduled or manual run"))

node_scheduler -->|"starts"| node_linea
node_scheduler -->|"starts"| node_cuencas
node_scheduler -->|"starts"| node_embalses
node_linea -->|"calls shared"| node_common
node_cuencas -->|"calls shared"| node_common
node_embalses -->|"calls shared"| node_common
node_common -->|"downloads PDFs"| node_miteco
node_common -->|"loads rules"| node_config
node_embalses -->|"joins coordinates"| node_coordinates
node_linea -->|"writes data"| node_linea_data
node_linea -->|"writes footnote"| node_linea_meta
node_linea -->|"appends history"| node_linea_history
node_cuencas -->|"writes data"| node_cuencas_data
node_cuencas -->|"writes footnote"| node_cuencas_meta
node_cuencas -->|"records result"| node_cuencas_history
node_embalses -->|"writes data"| node_embalses_data
node_embalses -->|"writes footnote"| node_embalses_meta
node_embalses -->|"records result"| node_embalses_history
node_datawrapper -->|"reads published CSV"| node_linea_data
node_datawrapper -->|"reads footnote"| node_linea_meta
node_datawrapper -->|"reads published CSV"| node_cuencas_data
node_datawrapper -->|"reads footnote"| node_cuencas_meta
node_datawrapper -->|"reads published CSV"| node_embalses_data
node_datawrapper -->|"reads footnote"| node_embalses_meta

click node_linea "https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/linea.py"
click node_cuencas "https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/cuencas.py"
click node_embalses "https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/embalses.py"
click node_common "https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/comun.py"
click node_config "https://github.com/sarahishtar/embalses_automatico/blob/main/config/config.json"
click node_coordinates "https://github.com/sarahishtar/embalses_automatico/blob/main/referencias/embalses_coordenadas.csv"
click node_linea_data "https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/linea/datos.csv"
click node_linea_meta "https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/linea/metadata.json"
click node_cuencas_data "https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/cuencas/datos.csv"
click node_cuencas_meta "https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/cuencas/metadata.json"
click node_embalses_data "https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/embalses/datos.csv"
click node_embalses_meta "https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/embalses/metadata.json"
click node_linea_history "https://github.com/sarahishtar/embalses_automatico/blob/main/historicos/linea.csv"
click node_cuencas_history "https://github.com/sarahishtar/embalses_automatico/blob/main/historicos/cuencas.csv"
click node_embalses_history "https://github.com/sarahishtar/embalses_automatico/blob/main/historicos/embalses.csv"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_linea,node_cuencas,node_embalses toneBlue
class node_common toneAmber
class node_config,node_coordinates,node_linea_data,node_linea_meta,node_cuencas_data,node_cuencas_meta,node_embalses_data,node_embalses_meta,node_linea_history,node_cuencas_history,node_embalses_history toneMint
class node_miteco,node_datawrapper toneRose
class node_scheduler toneIndigo
```

## Components

### Update processes

- [Line chart update](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/linea.py): `procesos/linea.py`
- [Basin map update](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/cuencas.py): `procesos/cuencas.py`
- [Reservoir map update](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/embalses.py): `procesos/embalses.py`

### Shared runtime

- [Shared download and I/O](https://github.com/sarahishtar/embalses_automatico/blob/main/procesos/comun.py): `procesos/comun.py`

### Published and historical data

- [Rules and footnotes](https://github.com/sarahishtar/embalses_automatico/blob/main/config/config.json): `config/config.json`
- [Reservoir coordinates](https://github.com/sarahishtar/embalses_automatico/blob/main/referencias/embalses_coordenadas.csv): `referencias/embalses_coordenadas.csv`
- [Line chart data](https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/linea/datos.csv): `graficos/linea/datos.csv`
- [Line chart metadata](https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/linea/metadata.json): `graficos/linea/metadata.json`
- [Basin map data](https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/cuencas/datos.csv): `graficos/cuencas/datos.csv`
- [Basin map metadata](https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/cuencas/metadata.json): `graficos/cuencas/metadata.json`
- [Reservoir map data](https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/embalses/datos.csv): `graficos/embalses/datos.csv`
- [Reservoir map metadata](https://github.com/sarahishtar/embalses_automatico/blob/main/graficos/embalses/metadata.json): `graficos/embalses/metadata.json`
- [Line history](https://github.com/sarahishtar/embalses_automatico/blob/main/historicos/linea.csv): `historicos/linea.csv`
- [Basin history](https://github.com/sarahishtar/embalses_automatico/blob/main/historicos/cuencas.csv): `historicos/cuencas.csv`
- [Reservoir history](https://github.com/sarahishtar/embalses_automatico/blob/main/historicos/embalses.csv): `historicos/embalses.csv`

### External systems

- **MITECO bulletin service**
- **Datawrapper**

### Other components

- **Scheduled or manual run**

## Connections

- Scheduled or manual run → Line chart update: starts (evidence: `README.md`)
- Scheduled or manual run → Basin map update: starts (evidence: `README.md`)
- Scheduled or manual run → Reservoir map update: starts (evidence: `README.md`)
- Line chart update → Shared download and I/O: calls shared (evidence: `procesos/linea.py`)
- Basin map update → Shared download and I/O: calls shared (evidence: `procesos/cuencas.py`)
- Reservoir map update → Shared download and I/O: calls shared (evidence: `procesos/embalses.py`)
- Shared download and I/O → MITECO bulletin service: downloads PDFs (evidence: `procesos/comun.py`)
- Shared download and I/O → Rules and footnotes: loads rules (evidence: `procesos/comun.py`)
- Reservoir map update → Reservoir coordinates: joins coordinates (evidence: `procesos/embalses.py`)
- Line chart update → Line chart data: writes data (evidence: `README.md`)
- Line chart update → Line chart metadata: writes footnote (evidence: `README.md`)
- Line chart update → Line history: appends history (evidence: `README.md`)
- Basin map update → Basin map data: writes data (evidence: `README.md`)
- Basin map update → Basin map metadata: writes footnote (evidence: `README.md`)
- Basin map update → Basin history: records result (evidence: `README.md`)
- Reservoir map update → Reservoir map data: writes data (evidence: `README.md`)
- Reservoir map update → Reservoir map metadata: writes footnote (evidence: `README.md`)
- Reservoir map update → Reservoir history: records result (evidence: `README.md`)
- Datawrapper → Line chart data: reads published CSV (evidence: `README.md`)
- Datawrapper → Line chart metadata: reads footnote (evidence: `README.md`)
- Datawrapper → Basin map data: reads published CSV (evidence: `README.md`)
- Datawrapper → Basin map metadata: reads footnote (evidence: `README.md`)
- Datawrapper → Reservoir map data: reads published CSV (evidence: `README.md`)
- Datawrapper → Reservoir map metadata: reads footnote (evidence: `README.md`)
