"""Phase T: AI HTML 생성기 — 동적 프롬프트 생성. 영역별 개별 호출. Phase T context(폰트 위계, 블록 레퍼런스, 디자인 예산)에서 모든 수치를 동적으로 가져와 프롬프트를 조립. Phase S 하드코딩 프롬프트(BG_PROMPT 등) → build_area_prompt() 동적 생성으로 교체. 역할 분리: Kei (1단계): 콘텐츠 분석 Claude Sonnet (이 모듈): HTML 코드 생성 """ from __future__ import annotations import json import logging import re from pathlib import Path from typing import Any import anthropic from src.config import settings logger = logging.getLogger(__name__) # ═══════════════════════════════════════════════════════════ # Phase T: 동적 프롬프트 생성 # Phase S 하드코딩 프롬프트 → context 기반 동적 생성으로 교체 # ═══════════════════════════════════════════════════════════ # 공통 텍스트 규칙 (모든 영역 동일) _COMMON_TEXT_RULES = """## 텍스트 규칙 (반드시 적용) 1. 원본 텍스트의 단어를 한 글자도 빼지 마라. 축약/요약 절대 금지. 2. 마침표(.)로 끝나는 문장이 2개 이상이면 각각 별도 불릿(•)으로 분리. 3. 개조식 어미 변환: 문장 끝 1-2글자만 변환. 그 외 단어는 절대 건드리지 마라. - "~있다" → "~있음", "~한다" → "~함", "~이다" → 삭제, "~된다" → "~됨" 4. 원본에 없는 텍스트를 추가하지 마라. 5. 동일한 내용을 다른 형태로 2번 넣지 마라. 상세 내용은 "[상세보기]" 텍스트 링크만 남기고 본문에서 제거.""" # 공통 HTML 규칙 _COMMON_HTML_RULES = """## HTML 규칙 - inline style만 사용.