feat(product-suite): add direct job state machine
This commit is contained in:
+30
-1
@@ -6,7 +6,7 @@ import os
|
||||
import sys
|
||||
from dataclasses import replace
|
||||
|
||||
from .. import appconfig, chrome, diagnostics, update_check, update_health
|
||||
from .. import appconfig, chrome, db, diagnostics, image_studio_generation, update_check, update_health
|
||||
from ..version import APP_NAME, APP_VERSION, display_name
|
||||
from . import widgets as _widgets
|
||||
from .widgets import *
|
||||
@@ -155,10 +155,39 @@ def main() -> int:
|
||||
update_health.write_health(health_context, "environment_blocked", str(exc))
|
||||
QMessageBox.critical(None, "启动配置错误", str(exc))
|
||||
return 1
|
||||
runtime_lease = None
|
||||
try:
|
||||
database_path = appconfig.db_path(startup["config"])
|
||||
db.init_db(database_path)
|
||||
runtime_lease = image_studio_generation.acquire_startup_recovery_lease(
|
||||
appconfig.data_dir(startup["config"])
|
||||
)
|
||||
recovery = image_studio_generation.recover_stale_direct_jobs_at_startup(
|
||||
lease=runtime_lease,
|
||||
path=database_path,
|
||||
)
|
||||
recovered_count = len(recovery.get("recovered") or [])
|
||||
if recovered_count:
|
||||
diagnostics.write_diagnostic_log(
|
||||
"启动时标记未确认的自定义网关套图任务",
|
||||
level="WARNING",
|
||||
step="image_studio_direct_recovery",
|
||||
payload={"recovered_count": recovered_count},
|
||||
)
|
||||
elif recovery.get("skipped"):
|
||||
diagnostics.write_diagnostic_log(
|
||||
"检测到另一个程序实例,跳过自定义网关套图任务恢复",
|
||||
level="INFO",
|
||||
step="image_studio_direct_recovery",
|
||||
)
|
||||
except Exception as exc:
|
||||
_write_update_check_diagnostic("自定义网关套图任务恢复检查失败", exc=exc)
|
||||
window = MainWindow(
|
||||
config=startup["config"],
|
||||
startup_status=startup["message"],
|
||||
)
|
||||
if runtime_lease is not None:
|
||||
app.aboutToQuit.connect(runtime_lease.release)
|
||||
window.show()
|
||||
QTimer.singleShot(
|
||||
0,
|
||||
|
||||
Reference in New Issue
Block a user