"""publishing/step_templates.py — 3대 엔진 합의도출 Step 1~5 프롬프트 템플릿.

출처: memory/specs/three-engine-consensus.md (2026-03-15 확정)
"""

from __future__ import annotations

# 4개 검토 시각 (공통)
REVIEW_PERSPECTIVES = (
    "세계 1위 자산관리 전문가",
    "세금/연금 전문가",
    "집필/편집 전문가",
    "레드팀",
)

PERSPECTIVES_STR = ", ".join(REVIEW_PERSPECTIVES)


def step1_parallel_draft(guide: str, chapter_info: str) -> str:
    """Step 1: 병렬 초안 생성 (Claude + Gemini 각각 실행)."""
    return (
        f"아래 집필가이드에 따라 챕터 초안을 생성해주세요.\n\n"
        f"## 집필가이드\n{guide}\n\n"
        f"## 챕터 정보\n{chapter_info}"
    )


def step2_gemini_synthesis(draft_claude: str, draft_gemini: str) -> list[str]:
    """Step 2: Gemini 집대성 (3단계).

    Returns:
        3개 프롬프트 리스트 [비교분석, 집대성, 검증]
    """
    compare = (
        f"두 가지 버전을 {PERSPECTIVES_STR} 4개 시각으로 "
        f"심층적이고 체계적으로 비교분석 해줘. "
        f"절대 내가 쓴 글이 옳다고 생각하지 않아. "
        f"최고 수준으로 초고를 만들고 싶은 마음이니까 "
        f"제3자 시각으로 객관적으로 평가해주면 돼. 바로수정 금지\n\n"
        f"## Claude 버전\n{draft_claude}\n\n"
        f"## Gemini 버전\n{draft_gemini}"
    )
    synthesize = (
        f"두 버전의 장점을 집대성해서 세계 최고 수준의 초고로 업데이트 해줘. "
        f"다만, 두 버전을 집대성할 때, 내용을 요약하거나 삭제/누락해서는 안돼. "
        f"절대 내용 줄이지 말 것."
    )
    verify = "내용이 줄은 거 같다. 다시 체크해서 집대성"
    return [compare, synthesize, verify]


def step3_chatgpt_review(content: str) -> str:
    """Step 3: ChatGPT 비평적 검토."""
    return f"{PERSPECTIVES_STR} 4개 시각으로 " f"심층적이고 체계적으로 평가해줘\n\n" f"## 평가 대상\n{content}"


def step4_gemini_feedback(content: str, feedback: str) -> str:
    """Step 4: Gemini 피드백 반영."""
    return (
        f"이런 피드백이 있어. 반영해서 집대성. 절대 내용 줄이지 말 것\n\n"
        f"## 현재 원고\n{content}\n\n"
        f"## 피드백\n{feedback}"
    )


def step5_claude_final(content: str) -> str:
    """Step 5: Claude 최종 통합 — 비교분석."""
    return (
        f"두 가지 버전을 {PERSPECTIVES_STR} 4개 시각으로 "
        f"심층적이고 체계적으로 비교분석 해줘. "
        f"절대 내가 쓴 글이 옳다고 생각하지 않아. "
        f"최고 수준으로 초고를 만들고 싶은 마음이니까 "
        f"제3자 시각으로 객관적으로 평가해주면 돼. 바로수정 금지\n\n"
        f"## 평가 대상\n{content}"
    )
