# scripts/plot_temperature.py
from __future__ import annotations

from pathlib import Path
from datetime import timedelta

import matplotlib.pyplot as plt
import pandas as pd

from meteo.dataset import load_raw_csv


CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_DIR = Path("figures")


def main() -> None:
    if not CSV_PATH.exists():
        print(f"⚠ Fichier introuvable : {CSV_PATH}")
        print("   Assurez-vous d'avoir généré le dataset minuté.")
        return

    # Chargement du dataset minuté
    df = load_raw_csv(CSV_PATH)
    print(f"Dataset minuté chargé : {CSV_PATH}")
    print(f"  Lignes   : {len(df)}")
    print(f"  Colonnes : {list(df.columns)}")
    print(f"  Période  : {df.index[0]} → {df.index[-1]}")
    print()

    # On ne garde que les N derniers jours pour un premier graphique
    last_n_days = 7
    end = df.index.max()
    start = end - pd.Timedelta(days=last_n_days)
    df_slice = df.loc[start:end]

    if df_slice.empty:
        print("⚠ Aucun point dans l'intervalle choisi.")
        return

    # Moyenne horaire pour lisser un peu la courbe
    df_hourly = df_slice.resample("1H").mean()

    print(f"Intervalle tracé : {df_hourly.index[0]} → {df_hourly.index[-1]}")
    print(f"Nombre de points (moyenne horaire) : {len(df_hourly)}")

    OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
    output_path = OUTPUT_DIR / "temperature_last_7_days.png"

    plt.figure()
    plt.plot(df_hourly.index, df_hourly["temperature"])
    plt.xlabel("Temps (UTC)")
    plt.ylabel("Température (°C)")
    plt.title("Température - Moyenne horaire sur les 7 derniers jours")
    plt.grid(True)
    plt.tight_layout()
    plt.savefig(output_path, dpi=150)
    print(f"✔ Figure sauvegardée dans : {output_path.resolve()}")

    # Optionnel : afficher la fenêtre graphique si vous lancez ça depuis un environnement graphique
    # plt.show()


if __name__ == "__main__":
    main()
