"""포스터 스타일링 — 화풍 레퍼런스로 포스터를 다시 그린다""" from dataclasses import dataclass from enum import StrEnum from pydantic import BaseModel class TemplateLicense(StrEnum): """끄는 조건이 달라 등급을 나눈다 PUBLIC은 보호기간이 끝나 외부 공개가 되고 INTERNAL은 번들 레퍼런스의 권리가 남아 배포 시 감추며 USER는 올린 사람 책임이라 막지 않고 고지만 한다 """ PUBLIC = "public-domain" INTERNAL = "internal-only" USER = "user-uploaded" class TemplateCategory(StrEnum): FINE_ART = "fine_art" ORIENTAL = "oriental" FILM = "film" USER = "user" class StyleTemplate(BaseModel): """번들과 사용자 레퍼런스가 같은 모양을 쓴다""" id: str name_ko: str category: TemplateCategory license: TemplateLicense style_prompt: str reference_url: str # 전이에 넣는 고해상본 thumbnail_url: str attribution: str = "" license_note: str = "" small_reference: bool = False # 레퍼런스가 작아 결과가 나빠질 수 있음 class OutputFormat(BaseModel): """gpt-image가 내는 크기로 만든 뒤 필요하면 센터 크롭한다""" id: str label: str generated_size: str crop: tuple[int, int] | None = None @dataclass class ReferenceVariants: reference: bytes # 긴 변 REFERENCE_LONG_EDGE thumbnail: bytes size: tuple[int, int] @dataclass class TransferResult: image: bytes format_id: str style_prompt: str has_info_band: bool # 날짜·장소를 밴드로 얹었는가