产品/客户搜索提前到启动前:输入框防抖搜索+下拉选择+缓存,登录时初始化搜索API,batch结束自动清空
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user