From d97bb764803db7db933217b2699087d1dd423107 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 13 May 2026 21:14:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20city=5Fdaily=5Fmax=20?= =?UTF-8?q?=E8=A1=A8=E5=8F=8A=20upsert=20=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=97=A5=E6=9C=80=E9=AB=98=E5=B7=B2=E6=94=B9=E7=94=A8=20intrad?= =?UTF-8?q?ay=5Fpath=5Fsnapshots=5Fstore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data_collection/settlement_sources.py | 11 ---- src/data_collection/weather_sources.py | 65 ----------------------- src/database/db_manager.py | 32 ----------- 3 files changed, 108 deletions(-) diff --git a/src/data_collection/settlement_sources.py b/src/data_collection/settlement_sources.py index 9e464b3a..03441e84 100644 --- a/src/data_collection/settlement_sources.py +++ b/src/data_collection/settlement_sources.py @@ -377,17 +377,6 @@ class SettlementSourceMixin: ) except Exception: logger.exception("airport_obs_log append failed for cwa") - try: - from src.database.db_manager import DBManager - today = datetime.now().strftime("%Y-%m-%d") - tc = payload["current"]["temp"] - if tc is not None: - DBManager().upsert_daily_max( - icao="466920", temp_c=tc, obs_date=today, - obs_time=str(obs_time_raw or "").strip(), - ) - except Exception: - pass return payload except Exception as exc: logger.warning(f"CWA settlement fetch failed: {exc}") diff --git a/src/data_collection/weather_sources.py b/src/data_collection/weather_sources.py index bb34e59e..632f1e67 100644 --- a/src/data_collection/weather_sources.py +++ b/src/data_collection/weather_sources.py @@ -883,19 +883,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour ) except Exception: logger.exception("airport_obs_log append failed for metar cluster city={}", city_lower) - # 更新日最高 - try: - today = datetime.now().strftime("%Y-%m-%d") - for row in cluster_data: - icao = row.get("icao") - temp_c = row.get("temp_c") if "temp_c" in row else row.get("temp") - if icao and temp_c is not None: - DBManager().upsert_daily_max( - icao=icao, temp_c=temp_c, obs_date=today, - obs_time=str(row.get("obs_time") or ""), - ) - except Exception: - pass def _attach_china_official_nearby( self, results: Dict, city_lower: str, use_fahrenheit: bool @@ -944,15 +931,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour ) except Exception: logger.exception("airport_obs_log append failed for jma city={}", city_lower) - try: - today = datetime.now().strftime("%Y-%m-%d") - if icao and row.get("temp") is not None: - DBManager().upsert_daily_max( - icao=icao, temp_c=row.get("temp"), obs_date=today, - obs_time=str(row.get("obs_time") or ""), - ) - except Exception: - pass def _attach_knmi_official_nearby( self, results: Dict, city_lower: str, use_fahrenheit: bool @@ -978,17 +956,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour ) except Exception: logger.exception("airport_obs_log append failed for knmi city={}", city_lower) - try: - today = datetime.now().strftime("%Y-%m-%d") - icao_kn = str(rows[0].get("icao") or "EHAM") if rows else "" - temp_kn = rows[0].get("temp") if rows else None - if icao_kn and temp_kn is not None: - DBManager().upsert_daily_max( - icao=icao_kn, temp_c=temp_kn, obs_date=today, - obs_time=str(rows[0].get("obs_time") or ""), - ) - except Exception: - pass def _attach_fmi_official_nearby( self, results: Dict, city_lower: str, use_fahrenheit: bool @@ -1015,15 +982,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour ) except Exception: logger.exception("airport_obs_log append failed for fmi city={}", city_lower) - try: - today = datetime.now().strftime("%Y-%m-%d") - if icao and row.get("temp") is not None: - DBManager().upsert_daily_max( - icao=icao, temp_c=row.get("temp"), obs_date=today, - obs_time=str(row.get("obs_time") or ""), - ) - except Exception: - pass def _attach_hko_obs_official_nearby( self, results: Dict, city_lower: str, use_fahrenheit: bool @@ -1049,17 +1007,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour ) except Exception: logger.exception("airport_obs_log append failed for hko_obs city={}", city_lower) - try: - today = datetime.now().strftime("%Y-%m-%d") - icao_hk = str(rows[0].get("icao") or "HKO") if rows else "" - temp_hk = rows[0].get("temp") if rows else None - if icao_hk and temp_hk is not None: - DBManager().upsert_daily_max( - icao=icao_hk, temp_c=temp_hk, obs_date=today, - obs_time=str(rows[0].get("obs_time") or ""), - ) - except Exception: - pass def _attach_korean_amos_data( self, results: Dict, city_lower: str, use_fahrenheit: bool @@ -1100,18 +1047,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour ) except Exception: logger.exception("airport_obs_log append failed for amos city={}", city_lower) - # 更新日最高 - try: - today = datetime.now().strftime("%Y-%m-%d") - icao = amos_data.get("icao") or "" - temp_c = amos_data.get("temp_c") - if icao and temp_c is not None: - DBManager().upsert_daily_max( - icao=icao, temp_c=temp_c, obs_date=today, - obs_time=amos_data.get("observation_time") or "", - ) - except Exception: - pass else: logger.warning("AMOS: no data returned for city={}", city_lower) except Exception as exc: diff --git a/src/database/db_manager.py b/src/database/db_manager.py index 57b9dea7..28447e66 100644 --- a/src/database/db_manager.py +++ b/src/database/db_manager.py @@ -295,15 +295,6 @@ class DBManager: conn.execute( "CREATE INDEX IF NOT EXISTS idx_airport_obs_log_icao_time ON airport_obs_log(icao, created_at DESC)" ) - conn.execute(""" - CREATE TABLE IF NOT EXISTS city_daily_max ( - icao TEXT PRIMARY KEY, - max_temp REAL NOT NULL, - obs_date TEXT NOT NULL, - max_time TEXT, - updated_at TEXT NOT NULL - ) - """) self._ensure_column(conn, "users", "daily_points", "INTEGER DEFAULT 0") self._ensure_column(conn, "users", "daily_points_date", "TEXT") self._ensure_column(conn, "users", "weekly_points", "INTEGER DEFAULT 0") @@ -1889,26 +1880,3 @@ class DBManager: (str(icao).strip().upper(), str(-int(minutes))), ).fetchall() return [dict(r) for r in rows] - - def upsert_daily_max( - self, *, icao: str, temp_c: float, obs_date: str, - max_time: Optional[str] = None, obs_time: str = "", - ) -> None: - """Only update if temp_c exceeds stored max for the same date.""" - with self._get_connection() as conn: - row = conn.execute( - "SELECT max_temp, obs_date FROM city_daily_max WHERE icao = ?", - (str(icao).strip().upper(),), - ).fetchone() - if row and row[1] == obs_date: - if temp_c <= (row[0] or -999.0): - return # not a new high - # new day or new high: upsert - conn.execute( - """INSERT OR REPLACE INTO city_daily_max - (icao, max_temp, obs_date, max_time, updated_at) - VALUES (?, ?, ?, ?, ?)""", - (str(icao).strip().upper(), temp_c, obs_date, - max_time or "", obs_time or datetime.now().isoformat()), - ) - conn.commit()