Phase T 적용: 폰트 위계 + 불릿 충돌 수정 + pipeline 통합

폰트 위계 적용:
- key-msg: 11→14px (가장 중요, 가장 큰 폰트)
- core: 12px 유지
- bg: 11px/9-10px 유지
- sidebar: 제목 14→11px, 불릿 12→10px (가장 덜 중요, 가장 작은 폰트)

불릿 충돌 수정:
- BG/SIDEBAR: <style> 블록 금지, 인라인 style만 사용
- CORE의 .bp::before CSS가 BG의 .bp에 적용되는 문제 해결

pipeline.py 통합:
- generate_slide_html() → generate_with_retry() 교체
- step2b_verification.json 저장 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 10:20:44 +09:00
parent c31d72a877
commit 83f589ca52
2 changed files with 20 additions and 20 deletions

View File

@@ -165,8 +165,7 @@ async def generate_slide(
# 블록 선택 없음. 슬롯 채우기 없음. AI가 콘텐츠에 맞는 HTML 구조를 직접 만든다.
yield {"event": "progress", "data": "2/4 슬라이드 HTML 생성 중..."}
from src.html_generator import generate_slide_html
from src.html_validator import validate_and_clean_html
from src.content_verifier import generate_with_retry
from src.renderer import render_slide_from_html
from src.kei_client import vision_quality_gate
import asyncio
@@ -191,8 +190,8 @@ async def generate_slide(
"b64": img_b64,
})
# Claude Sonnet HTML 생성
generated = await generate_slide_html(
# Claude Sonnet HTML 생성 + 독립 검증 + 재시도 루프
generated, verification = await generate_with_retry(
content=content,
analysis=analysis,
container_specs=container_specs,
@@ -200,8 +199,10 @@ async def generate_slide(
images=slide_images,
)
# HTML 정화 + 검증
generated = validate_and_clean_html(generated)
_save_step(run_dir, "step2b_verification.json", {
area: {"passed": r.passed, "score": r.score, "errors": r.errors}
for area, r in verification.items()
})
_save_step(run_dir, "step2_generated.json", {
"body_html_length": len(generated.get("body_html", "")),