"""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만 사용.