# -*- coding: utf-8 -*- """P2V 모듈 상수.""" from typing import Final # ============================================================================= # 크레딧 원장 멱등 키 # ============================================================================= #: credit_transaction.job_type 값. (job_type, job_ref, type) 유니크로 중복 차감을 막는다. #: job_ref 는 p2v_video.id / p2v_poster.id 의 문자열이다 (P2V 서버 잡 id 가 아니다). JOB_TYPE_P2V_F1: Final[str] = "p2v_f1" JOB_TYPE_P2V_F2: Final[str] = "p2v_f2" # ============================================================================= # 잡 상태 # ============================================================================= # P2V 서버가 보고하는 상태에 castad 전용 'archiving'(Blob 업로드 중)을 더한 축. STATUS_QUEUED: Final[str] = "queued" STATUS_RUNNING: Final[str] = "running" STATUS_AWAITING_REVIEW: Final[str] = "awaiting_review" STATUS_ARCHIVING: Final[str] = "archiving" STATUS_DONE: Final[str] = "done" STATUS_FAILED: Final[str] = "failed" #: 고아 스윕 대상 — 이 상태로 P2V_ORPHAN_TIMEOUT_HOURS 를 넘기면 환불·실패 처리한다. ORPHAN_STATUSES: Final[frozenset[str]] = frozenset( {STATUS_QUEUED, STATUS_RUNNING, STATUS_AWAITING_REVIEW} ) # ============================================================================= # 정적 파일 프록시 화이트리스트 # ============================================================================= # P2V 의 /files/* 마운트 중 castad 프록시가 인증 없이 중계해도 되는 것만 나열한다. # render/·uploads/·f2/ 는 결과물·원본이라 Blob 으로만 나간다 — 프록시 금지. # 검수용 regions/ 는 별도 라우트(/p2v/files/regions/*)가 로그인 필수로 중계한다. #: 인증 없이 중계 (템플릿 썸네일 — 는 헤더를 못 붙이고, 내용도 공개 명화다) PUBLIC_FILE_PREFIXES: Final[tuple[str, ...]] = ("templates/", "user_templates/")