From 7b82ba68df48ddda2b2d0b235fbc092e523ceee9 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 6 May 2026 18:30:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=20=5Fanalyze=5Fsummary=20?= =?UTF-8?q?=E4=B8=AD=E6=9C=AA=E5=90=AF=E7=94=A8=E7=9A=84=20LGBM=20?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=AD=A5=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LGBM 当前默认禁用 (POLYWEATHER_LGBM_ENABLED=false),predict_lgbm_daily_high 直接返回 None,在 _analyze 中也未实际参与 DEB 计算,_analyze_summary 无需重复。 Rejected: 在 LGBM 正式启用前,_analyze_summary 不应包含会被跳过的 LGBM 调用 --- web/analysis_service.py | 43 ----------------------------------------- 1 file changed, 43 deletions(-) diff --git a/web/analysis_service.py b/web/analysis_service.py index 445f192a..d4eaf1c0 100644 --- a/web/analysis_service.py +++ b/web/analysis_service.py @@ -2792,49 +2792,6 @@ def _analyze_summary(city: str, force_refresh: bool = False) -> Dict[str, Any]: if deb_val is None: deb_val = om_today - # LGBM enhancement (same as _analyze, so DEB is a single source of truth) - if current_forecasts and deb_val is not None: - h_times = om_hourly.get("time", []) - h_temps = om_hourly.get("temperature_2m", []) - h_rad = om_hourly.get("shortwave_radiation", []) - peak_hours: list[str] = [] - if h_temps and h_times and len(h_temps) == len(h_times) and h_rad and len(h_rad) == len(h_times): - for i, ts in enumerate(h_times): - if isinstance(ts, str) and "T" in ts: - try: - dt = datetime.fromisoformat(ts) - local_h = dt.hour + dt.minute / 60.0 - except Exception: - continue - if 11 <= local_h <= 17 and (h_rad[i] and h_rad[i] > 200): - peak_hours.append(ts.split("T")[1][:5]) - first_peak_h = int(peak_hours[0].split(":")[0]) if peak_hours else 13 - last_peak_h = int(peak_hours[-1].split(":")[0]) if peak_hours else 15 - if local_hour_frac > last_peak_h: - peak_status = "past" - elif first_peak_h <= local_hour_frac <= last_peak_h: - peak_status = "in_window" - else: - peak_status = "before" - lgbm_val, _ = predict_lgbm_daily_high( - city_name=city, - current_forecasts=current_forecasts, - deb_prediction=deb_val, - current_temp=cur_temp, - max_so_far=max_so_far, - humidity=_sf(primary_current.get("humidity")), - wind_speed_kt=_sf(primary_current.get("wind_speed_kt")), - visibility_mi=_sf(primary_current.get("visibility_mi")), - local_hour=local_hour, - local_date=local_date_str, - peak_status=peak_status, - ) - if lgbm_val is not None: - current_forecasts["LGBM"] = lgbm_val - blended, _weights_info = calculate_dynamic_weights(city, current_forecasts) - if blended is not None: - deb_val = blended - settlement_today_obs = [] if use_settlement_current: explicit_obs = settlement_current.get("today_obs") or []