修复机场高频推送状态与主循环冲突:使用独立的状态文件

_load_airport_state / _save_airport_state 在 SQLite 模式下错误地复用了
_telegram_state_repo,与市场监控主循环共享同一个状态存储,
导致两个循环互相覆盖对方的 last_by_city / last_snapshot_ts 等字段。
改为始终使用独立文件 data/airport_push_state.json 隔离状态。

Constraint: 机场状态与主循环状态必须物理隔离
Scope-risk: 低,仅影响新功能的状态持久化
Tested: ruff check 通过
@
This commit is contained in:
2569718930@qq.com
2026-05-12 17:39:26 +08:00
parent 8b1abf3d56
commit 5a6a487a97
-13
View File
@@ -704,12 +704,6 @@ _AIRPORT_PUSH_STATE_PATH = os.path.join(
def _load_airport_state() -> Dict[str, Any]:
try:
from src.database.runtime_state import STATE_STORAGE_SQLITE, get_state_storage_mode
if get_state_storage_mode() == STATE_STORAGE_SQLITE:
return _telegram_state_repo.load_state()
except Exception:
pass
path = _AIRPORT_PUSH_STATE_PATH
if not os.path.exists(path):
return {"last_by_city": {}}
@@ -725,13 +719,6 @@ def _load_airport_state() -> Dict[str, Any]:
def _save_airport_state(state: Dict[str, Any]) -> None:
try:
from src.database.runtime_state import STATE_STORAGE_SQLITE, get_state_storage_mode
if get_state_storage_mode() == STATE_STORAGE_SQLITE:
_telegram_state_repo.save_state(state)
return
except Exception:
pass
path = _AIRPORT_PUSH_STATE_PATH
os.makedirs(os.path.dirname(path), exist_ok=True)
tmp = f"{path}.tmp"