Backup automatico script del 2026-04-05 07:00

This commit is contained in:
2026-04-05 07:00:02 +02:00
parent c25c309a15
commit 7594a42875
3 changed files with 108 additions and 53 deletions
+27 -8
View File
@@ -365,6 +365,15 @@ def _merge_hourly_median(hourly_by_model, single_source_keys=None, single_source
pass
break
out[key].append(_median_or_single(vals) if vals else None)
n = len(out["time"])
if n > 1:
order = sorted(range(n), key=lambda i: str(out["time"][i]))
out["time"] = [out["time"][i] for i in order]
for key in all_keys:
if key == "time":
continue
if len(out.get(key, [])) == n:
out[key] = [out[key][i] for i in order]
return out
@@ -420,6 +429,16 @@ def _merge_daily_median(daily_by_model, single_source_keys=None, single_source_m
pass
break
out[key].append(_median_or_single(vals) if vals else None)
# Ordina cronologicamente (evita buchi nel report se l'unione non era ordinata)
n = len(out["time"])
if n > 1:
order = sorted(range(n), key=lambda i: out["time"][i])
out["time"] = [out["time"][i] for i in order]
for key in all_keys:
if key == "time":
continue
if len(out.get(key, [])) == n:
out[key] = [out[key][i] for i in order]
return out
@@ -544,13 +563,14 @@ def merge_multi_model_forecast(models_data, forecast_days=10):
long_daily_times = merged_long_daily.get("time") or []
long_hourly_times = merged_long_hourly.get("time") or []
names_long = " + ".join(MODEL_NAMES.get(m, m) for m, _ in long_term_list[:3])
merged["models_used"].append(f"{names_long} (mediana) ({cutoff_day+1}-{forecast_days}d)")
start_idx = cutoff_day + 1
# Allinea al numero effettivo di giorni/orari short (non indice fisso): evita buco del 3° giorno
start_idx = len(merged["daily"]["time"])
start_hour_idx = len(merged["hourly"]["time"])
merged["models_used"].append(f"{names_long} (mediana) (giorno {start_idx + 1}-{forecast_days}d)")
for i, day_time in enumerate(long_daily_times):
day_num = i
if day_num < start_idx:
if i < start_idx:
continue
if day_num >= forecast_days:
if i >= forecast_days:
break
merged["daily"]["time"].append(day_time)
for key in daily_keys:
@@ -558,7 +578,6 @@ def merge_multi_model_forecast(models_data, forecast_days=10):
continue
arr = merged_long_daily.get(key, [])
merged["daily"][key].append(arr[i] if i < len(arr) else None)
start_hour_idx = (cutoff_day + 1) * 24
needed_hours = forecast_days * 24
for i in range(start_hour_idx, min(len(long_hourly_times), needed_hours)):
merged["hourly"]["time"].append(long_hourly_times[i])
@@ -571,9 +590,9 @@ def merge_multi_model_forecast(models_data, forecast_days=10):
long_term_model, long_term_data = long_term_list[0]
long_daily = long_term_data.get("daily", {}) or {}
long_hourly = long_term_data.get("hourly", {}) or {}
merged["models_used"].append(f"{MODEL_NAMES.get(long_term_model, long_term_model)} ({cutoff_day+1}-{forecast_days}d)")
start_idx = len(merged["daily"]["time"])
merged["models_used"].append(f"{MODEL_NAMES.get(long_term_model, long_term_model)} (giorno {start_idx + 1}-{forecast_days}d)")
long_daily_times = long_daily.get("time", []) or []
start_idx = cutoff_day + 1
for i in range(start_idx, min(len(long_daily_times), forecast_days)):
merged["daily"]["time"].append(long_daily_times[i])
for key in daily_keys: