#!/usr/bin/env python3
"""정정 반영 fresh E2E — 새 프로젝트 생성 + 생성 직후 철제 계단 정정 PUT.

TASK 1 (2026-07-08 SOT): e2e_geum_v16_driver.py create 패턴 복제,
STATE=e2e_v16corr_state.json (새 이름). 커밋 금지.
"""
import json
from pathlib import Path

import requests

BASE = "http://localhost:8000"
ROOT = Path("/Users/manta/Documents/Projects/TheRoad-I1")
PLANNING_PDF = ROOT / "org" / "금월도_기획안_202603.pdf"
EP1_PDF = ROOT / "org" / "금월도 1부_260226(최종수정본).pdf"
STATE = ROOT / "scratchpad" / "e2e_v16corr_state.json"

CORRECTIONS = {
    "corrections": [
        {
            "id": "steel-retrofit-stair",
            "text": (
                "옥탑으로 오르는 외부 계단은 건물 외벽에 나중에 덧붙인 철제 증축 "
                "계단이다 — 오픈 발판, 얇은 강판 스트링거와 지지 기둥, 파이프 난간. "
                "콘크리트/시멘트 계단이 아니다."
            ),
            "active": True,
        }
    ]
}

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": "금월도 E2E v16 정정검증 20260708",
    "description": "철제 계단 정정 상류 반영 fresh E2E — 텍스트+FP, 씬 스틸 제외",
}, timeout=60)
r.raise_for_status()
pid = r.json()["id"]
print(f"[project] {pid}", flush=True)

r = s.put(f"{BASE}/api/v1/projects/{pid}/creator-corrections",
          json=CORRECTIONS, timeout=30)
r.raise_for_status()
print(f"[corrections] {json.dumps(r.json(), ensure_ascii=False)[:300]}", flush=True)

with open(PLANNING_PDF, "rb") as f:
    r = s.post(f"{BASE}/api/v1/projects/{pid}/planning-doc",
               files={"file": (PLANNING_PDF.name, f, "application/pdf")},
               timeout=300)
r.raise_for_status()
print(f"[planning-doc] ok ({r.status_code})", flush=True)

with open(EP1_PDF, "rb") as f:
    r = s.post(
        f"{BASE}/api/v1/projects/{pid}/episodes/",
        data={"episode_number": "1", "title": "금월도 1부"},
        files={"file": (EP1_PDF.name, f, "application/pdf")},
        timeout=300,
    )
r.raise_for_status()
eid = r.json()["id"]
print(f"[episode] {eid}", flush=True)

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

# 정정 저장 검증 (GET round-trip)
r = s.get(f"{BASE}/api/v1/projects/{pid}/creator-corrections", timeout=30)
r.raise_for_status()
print(f"[corrections-verify] {json.dumps(r.json(), ensure_ascii=False)[:400]}",
      flush=True)
