No description
| .forgejo/workflows | ||
| .github/workflows | ||
| .theia | ||
| k8s | ||
| src/weather_collector | ||
| tests | ||
| .gitignore | ||
| Dockerfile | ||
| pyproject.toml | ||
| README.md | ||
| setup.sh | ||
Aplikace pro sběr předpovědí počasí z yr.no
Tato aplikace pravidelně stahuje hodinové předpovědi počasí z API norského meteorologického institutu (yr.no) pro nakonfigurované lokality a ukládá je do PostgreSQL databáze.
Funkce
- Stahování hodinových předpovědí počasí pro nakonfigurované lokality
- Ukládání podrobných meteorologických dat (teplota, tlak, srážky, vítr, atd.)
- Spouštění jako Kubernetes cronjob v pravidelných intervalech
- Sledování změn předpovědí v čase pomocí ID dávek
Datový model
Aplikace používá následující databázový model:
locations- Informace o lokalitách (souřadnice, název, kód, atd.)forecast_batches- Informace o dávkách stahování předpovědíforecasts- Samotná data předpovědí s vazbami na lokality a dávky
Optimalizace dotazů
Databázové schéma je optimalizováno pro rychlé dotazování:
- Časové údaje jsou rozděleny na datum a hodinu v samostatných sloupcích
- Vytvořeny specializované indexy pro nejčastější dotazy
- Unikátní batch ID pro sledování změn předpovědí v čase
Konfigurace
Lokality jsou konfigurovány v config.yaml nebo pomocí Kubernetes ConfigMap:
locations:
- code: "PRAHA"
name: "Praha, Česká republika"
latitude: 50.0755
longitude: 14.4378
altitude: 235
notes: "Hlavní město České republiky"
- code: "BRNO"
name: "Brno, Česká republika"
latitude: 49.1951
longitude: 16.6068
altitude: 237
notes: "Druhé největší město v České republice"
fetch_interval_hours: 6
Nasazení
Aplikace je určena pro nasazení jako Kubernetes cronjob. Podívejte se do adresáře k8s/ pro potřebné manifesty.
Přístup k databázi
Aplikace používá existující secret database pro přístup k PostgreSQL databázi, který obsahuje následující klíče:
POSTGRES_HOST- Adresa databázového serveruPOSTGRES_DB- Název databázePOSTGRES_USER- Uživatelské jménoPOSTGRES_PASSWORD- Heslo pro přístup
Vývoj
Nastavení vývojového prostředí
# Klonování repozitáře
git clone https://github.com/username/weather-forecast-collector.git
cd weather-forecast-collector
# Vytvoření virtuálního prostředí
python -m venv venv
source venv/bin/activate # Pro Windows: venv\Scripts\activate
# Instalace závislostí
pip install -e ".[dev]"
Testování
# Spuštění všech testů
pytest
# Spuštění testů s výpisem pokrytí kódu
pytest --cov=weather_collector
Sestavení Docker obrazu
docker build -t weather-forecast-collector:latest .
Licience
MIT