#!/usr/bin/env python3
"""최소 검증판 — 프로젝트·에피소드 생성 (기획서 없음).

시나리오 = artifact/20260824_minimal_e2e_scenario/골목끝.pdf (3씬)
목적 = 전 파이프라인을 통과시키되 샷 2~3개.
"""
import json
from pathlib import Path

import requests

BASE = "http://localhost:8000"
ROOT = Path("/Users/manta/Documents/Projects/TheRoad-I1")
EP_PDF = ROOT / "artifact" / "20260824_minimal_e2e_scenario" / "골목끝.pdf"
STATE = ROOT / "scratchpad" / "minimal_e2e_state.json"

assert EP_PDF.exists(), f"시나리오 PDF 가 없다: {EP_PDF}"

s = requests.Session()

r = s.post(f"{BASE}/api/v1/auth/login",
           json={"username": "admin", "password": "admin123"}, timeout=30)
r.raise_for_status()
print("[login] ok", flush=True)

r = s.post(f"{BASE}/api/v1/projects/", json={
    "name": "골목 끝 — 최소 검증판 20260824",
    "description": "전 파이프라인 통과용 최소 시나리오 3씬. 실내 1·실외 1(갈래길)·"
                   "실내 복귀 1, 인물 3(1명 의식 없음), 목표 샷 2~3개.",
}, timeout=60)
r.raise_for_status()
pid = r.json()["id"]
print(f"[project] {pid}", flush=True)

with open(EP_PDF, "rb") as f:
    r = s.post(
        f"{BASE}/api/v1/projects/{pid}/episodes/",
        data={"episode_number": "1", "title": "골목 끝"},
        files={"file": (EP_PDF.name, f, "application/pdf")},
        timeout=300,
    )
r.raise_for_status()
ep = r.json()
eid = ep["id"]
print(f"[episode] {eid} · {ep.get('page_count')}쪽 · "
      f"언어 {ep.get('language')}", flush=True)

STATE.write_text(json.dumps({"project_id": pid, "episode_id": eid},
                            ensure_ascii=False))
print(f"[state] {STATE}", flush=True)
