产品/客户搜索提前到启动前:输入框防抖搜索+下拉选择+缓存,登录时初始化搜索API,batch结束自动清空

This commit is contained in:
2026-05-15 15:49:33 +08:00
parent ae43899dbd
commit b925a89b6c
6 changed files with 296 additions and 29 deletions
+26
View File
@@ -306,6 +306,7 @@ class PickupEngine:
self._stop_requested = False
self._pause_requested = False
self._infra_injected = False # 基础设施从外部注入时跳过 start/begin_processing
# 跨行复用的产品/客户详情(从 API 获取)
self._product_detail: dict = {}
@@ -333,10 +334,24 @@ class PickupEngine:
return translate_value(excel_col, value)
return translate_value(excel_col, self.defaults.get(excel_col, ""))
# ─── 基础设施注入(由外部预先初始化)──────────────────────
def inject_infrastructure(self, sess: PickupSession, bridge: TokenBridge, api: PickupAPI):
"""注入已初始化的 session / bridge / api,跳过 start/begin_processing。"""
self._sess = sess
self._bridge = bridge
self._api = api
self._infra_injected = True
self._dlog("基础设施已从外部注入")
# ─── 生命周期 ────────────────────────────────────────────
async def start(self) -> None:
"""启动 token bridge 并初始化 HTTP 会话。"""
if self._infra_injected:
self._dlog("start 跳过(基础设施已注入)")
return
self._ulog("启动 HTTP API 引擎...")
# 启动 token bridge
@@ -364,6 +379,11 @@ class PickupEngine:
if not self._sess:
raise RuntimeError("未启动")
if self._infra_injected:
self._dlog("begin_processing 跳过(基础设施已注入)")
self._ulog("后台自动化已就绪")
return
self._ulog("加载页面资源...")
resources = self._sess.fetch_page_resources()
@@ -414,6 +434,12 @@ class PickupEngine:
except Exception:
pass
# 外部注入的基础设施不销毁,由外部管理生命周期
if self._infra_injected:
self._dlog("跳过 bridge 销毁(基础设施由外部管理)")
self._clear_batch_cache()
return
# 停止 token bridge
if self._bridge:
try: