"""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"