No description
Find a file
Radek 101b0cdb0c
All checks were successful
Build and Test / test (push) Successful in 18s
Build and Test / build (push) Successful in 2m35s
all tests removed
2025-04-10 18:58:10 +02:00
.forgejo/workflows all tests removed 2025-04-10 18:58:10 +02:00
.github/workflows Initial import 2025-04-10 17:51:08 +02:00
.theia Initial import 2025-04-10 17:51:08 +02:00
k8s Initial import 2025-04-10 17:51:08 +02:00
src/weather_collector Initial import 2025-04-10 17:51:08 +02:00
tests Initial import 2025-04-10 17:51:08 +02:00
.gitignore Initial import 2025-04-10 17:51:08 +02:00
Dockerfile Initial import 2025-04-10 17:51:08 +02:00
pyproject.toml Initial import 2025-04-10 17:51:08 +02:00
README.md Initial import 2025-04-10 17:51:08 +02:00
setup.sh Initial import 2025-04-10 17:51:08 +02:00

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 serveru
  • POSTGRES_DB - Název databáze
  • POSTGRES_USER - Uživatelské jméno
  • POSTGRES_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