playreel/backend/models/pipeline_state.py
2026-09-08 13:00:23 +09:00

48 lines
1.2 KiB
Python

"""DB 잡 레코드의 진행도로 쓰이는 파이프라인 단계 상태
실행 순서대로 선언됨
마지막 COMPLETED는 종료 표시
"""
from enum import StrEnum
def stage_keys(state_type) -> list[str]:
"""실행 순서대로 나열된 단계 이름
COMPLETED는 종료 표시라 빠짐
"""
return [member.value for member in state_type if member.name != "COMPLETED"]
def initial_timings(state_type) -> dict:
"""스테퍼가 그리는 단계별 시각의 초기값
키 순서가 곧 화면에 찍히는 순서라 생성 시점에 다 채워 둔다
"""
return {key: {"status": "idle", "started": None, "ended": None}
for key in stage_keys(state_type)}
class PosterAliveState(StrEnum):
DETECT = "detect"
NARRATION_TEXT = "narration_text"
MOTION = "motion"
TTS = "tts"
BGM = "bgm"
I2V = "i2v"
RENDER = "render"
COMPLETED = "completed"
class PlayreelState(StrEnum):
FETCH = "fetch"
SPLIT = "split"
UPSCALE = "upscale"
ANALYZE = "analyze"
MOTION = "motion"
NARRATION = "narration"
TTS = "tts"
BGM = "bgm"
I2V = "i2v"
HYBRID = "hybrid"
COMPOSE = "compose"
REVIEW = "review"
COMPLETED = "completed"