feat(product-suite): add direct job state machine

This commit is contained in:
chengma
2026-07-20 18:12:44 +08:00
parent 2a2cbad7bd
commit aa000ff5e6
11 changed files with 820 additions and 101 deletions
+34
View File
@@ -335,6 +335,9 @@ CREATE TABLE IF NOT EXISTS image_studio_assets (
remote_url TEXT,
local_path TEXT,
aspect_ratio TEXT,
requested_output_size TEXT,
rendered_width INTEGER,
rendered_height INTEGER,
parent_asset_id INTEGER REFERENCES image_studio_assets(id) ON DELETE SET NULL,
prompt TEXT,
status TEXT NOT NULL DEFAULT 'available',
@@ -369,6 +372,7 @@ CREATE TABLE IF NOT EXISTS image_studio_jobs (
call_id TEXT,
generation_round_key TEXT,
generation_slot_index INTEGER,
run_session_id TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
submitted_at TEXT,
@@ -508,6 +512,8 @@ def init_db(path=None, conn=None) -> None:
_ensure_image_studio_job_recovery_columns(database)
_ensure_image_studio_generation_round_columns(database)
_ensure_image_studio_job_reference_asset_ids_column(database)
_ensure_image_studio_asset_output_columns(database)
_ensure_image_studio_job_run_session_column(database)
def _ensure_batch_delete_columns(database):
@@ -724,6 +730,34 @@ def _ensure_image_studio_job_reference_asset_ids_column(database):
"ALTER TABLE image_studio_jobs ADD COLUMN reference_asset_ids TEXT"
)
def _ensure_image_studio_asset_output_columns(database):
columns = {
row["name"] for row in database.execute("PRAGMA table_info(image_studio_assets)").fetchall()
}
if "requested_output_size" not in columns:
database.execute(
"ALTER TABLE image_studio_assets ADD COLUMN requested_output_size TEXT"
)
if "rendered_width" not in columns:
database.execute(
"ALTER TABLE image_studio_assets ADD COLUMN rendered_width INTEGER"
)
if "rendered_height" not in columns:
database.execute(
"ALTER TABLE image_studio_assets ADD COLUMN rendered_height INTEGER"
)
def _ensure_image_studio_job_run_session_column(database):
columns = {
row["name"] for row in database.execute("PRAGMA table_info(image_studio_jobs)").fetchall()
}
if "run_session_id" not in columns:
database.execute(
"ALTER TABLE image_studio_jobs ADD COLUMN run_session_id TEXT"
)
def create_batch(file_paths: Iterable[str], note=None, path=None, conn=None) -> str:
batch_id = datetime.now().strftime("%Y%m%d_%H%M%S_") + uuid.uuid4().hex[:8]
files = [os.path.abspath(file_path) for file_path in file_paths]