"""3가지 접근법 비교 — 콘텐츠 2: DX 시행 목표 및 기대 효과 이전 콘텐츠(포함 관계)와 성격이 다름: - 목표 3가지 (안전/품질, 생산성, 소통/신뢰) - 프로세스 변화 4가지 (생산방식, 인지검토, 협업구조, 검증대응) - 주체별 기대효과 (DxEffect 컴포넌트 — 텍스트로 대체) - 핵심 결론 1줄 """ from __future__ import annotations import asyncio, json, sys, base64 from pathlib import Path ROOT = Path(__file__).parent.parent sys.path.insert(0, str(ROOT)) DESIGN_TOKENS_CSS = """ :root { --color-primary: #1e293b; --color-accent: #2563eb; --color-accent-light: #93c5fd; --color-bg: #ffffff; --color-bg-subtle: #f8fafc; --color-bg-dark: #1e293b; --color-bg-dark-deep: #0f172a; --color-border: #e2e8f0; --color-danger: #dc2626; --color-success: #16a34a; --color-warning: #f59e0b; --color-text: #1e293b; --color-text-secondary: #64748b; --color-text-light: #94a3b8; --color-text-on-dark: #e2e8f0; --color-text-on-accent: #ffffff; --font-title: 28px; --font-section: 14px; --font-body: 13px; --font-small: 11px; --font-caption: 10px; --weight-normal: 400; --weight-medium: 500; --weight-bold: 700; --weight-black: 900; --spacing-page: 36px 40px 24px; --spacing-section: 16px; --spacing-block: 12px; --spacing-inner: 10px; --spacing-small: 6px; --radius: 8px; --radius-small: 6px; --line-height: 1.6; } """ SLIDE_BASE_CSS = """ @import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css'); * { margin: 0; padding: 0; box-sizing: border-box; } .slide { width: 1280px; height: 720px; overflow: hidden; background: var(--color-bg); font-family: 'Pretendard Variable', sans-serif; color: var(--color-text); font-size: var(--font-body); line-height: var(--line-height); word-break: keep-all; display: grid; grid-template-areas: 'header header' 'body sidebar' 'footer footer'; grid-template-columns: 65fr 35fr; grid-template-rows: auto 1fr auto; gap: var(--spacing-section); padding: var(--spacing-page); } .header { grid-area: header; font-size: var(--font-title); font-weight: var(--weight-black); color: var(--color-primary); border-bottom: 3px solid var(--color-accent); padding-bottom: 8px; } .body { grid-area: body; display: flex; flex-direction: column; gap: var(--spacing-block); overflow: hidden; } .sidebar { grid-area: sidebar; display: flex; flex-direction: column; gap: var(--spacing-block); border-left: 1px solid var(--color-border); padding-left: 20px; overflow: hidden; } .footer { grid-area: footer; background: linear-gradient(135deg, #006aff, #00aaff); border-radius: var(--radius); padding: 14px 30px; text-align: center; color: var(--color-text-on-accent); } .footer-text { font-size: 15px; font-weight: var(--weight-bold); } .footer-sub { font-size: var(--font-small); opacity: 0.85; margin-top: 2px; } """ # ═══════════════════════════════════════ # 접근 A: Few-Shot 직접 생성 # ═══════════════════════════════════════ APPROACH_A = f"""