feat: 优化设置布局并支持管理端地址切换 (#130)

This commit is contained in:
chengma
2026-08-11 09:24:04 +08:00
parent 4ede126f58
commit cd2889d76c
9 changed files with 347 additions and 47 deletions
+35
View File
@@ -173,6 +173,12 @@ class ClaimTaskWorker(QObject):
self._cancelled = True
@pyqtSlot(object)
def replace_gateway(self, gateway: AdminGateway) -> None:
"""当前命令结束后,为后续领取和提交切换 Admin Gateway。"""
self._gateway = gateway
@pyqtSlot()
def run(self) -> None:
"""兼容旧调用;新代码通过 ``run_selected`` 提交命令。"""
@@ -416,6 +422,7 @@ class PDDTaskPageEvent(QObject):
_claimRunRequested = pyqtSignal(str)
_claimReleaseRequested = pyqtSignal()
_claimShutdownRequested = pyqtSignal()
_claimGatewayChanged = pyqtSignal(object)
def __init__(
self,
@@ -486,11 +493,13 @@ class PDDTaskPageEvent(QObject):
pass
settings = settings_repository or SettingsRepository()
self._settings_repository = settings
self._client_service = CurrentClientService(settings)
self._selected_android_device_service = SelectedAndroidDeviceService(
settings
)
self._claim_gateway = claim_gateway
self._owns_claim_gateway = claim_gateway is None
self._claim_gateway_error = ""
if self._claim_gateway is None:
base_url = settings.get("admin.base_url", DEFAULT_ADMIN_BASE_URL)
@@ -520,6 +529,31 @@ class PDDTaskPageEvent(QObject):
if application is not None:
application.aboutToQuit.connect(self.shutdown)
@pyqtSlot(str)
def update_admin_base_url(self, base_url: str) -> None:
"""让下一次领取、执行和上报统一使用新的 Admin 地址。"""
if self._closing or not self._owns_claim_gateway:
return
timeout_value = self._settings_repository.get(
"admin.request_timeout_seconds", 3.0
)
try:
timeout_seconds = float(timeout_value)
gateway = HttpAdminGateway(
base_url,
timeout_seconds=timeout_seconds,
client_id=self._client_service.load().client_id,
)
except (TypeError, ValueError) as exc:
self._claim_gateway_error = str(exc)
return
self._claim_gateway = gateway
self._claim_gateway_error = ""
if self._claim_worker is not None:
self._claimGatewayChanged.emit(gateway)
def load_initial_tasks(self) -> None:
"""应用启动后读取第一页本地任务。"""
@@ -1018,6 +1052,7 @@ class PDDTaskPageEvent(QObject):
self._claimRunRequested.connect(worker.run_selected)
self._claimReleaseRequested.connect(worker.release_device)
self._claimShutdownRequested.connect(worker.shutdown_worker)
self._claimGatewayChanged.connect(worker.replace_gateway)
worker.taskSaved.connect(self._on_claimed_task_saved)
worker.retryableFailed.connect(self._route_claim_retryable_failed)
worker.failed.connect(self._route_claim_failed)