Add Type B slide pipeline and recipe rendering updates

This commit is contained in:
2026-04-15 16:39:50 +09:00
parent 51548fdc41
commit 66c00924ed
22 changed files with 6260 additions and 1322 deletions

View File

@@ -241,28 +241,49 @@ PipelineContext:
---
## 7. 현재 구현 상태
## 7. 현재 구현 상태 (Phase Y-11~13, 2026-04-15)
| 항목 | 상태 | 비고 |
|------|------|------|
| Stage 0 (MDX 정규화) | ✅ | |
| Stage 1A (꼭지 추출) | ✅ | A/B 선택 포함 |
| Stage 1B (컨셉 구체화) | ✅ | |
| Stage 1B-ST (구조화 텍스트) | ✅ | |
| Stage 1.5a (컨테이너 계산) | ✅ | Type A/B 분기 |
| Stage 1.7 (블록 선택) | ✅ | catalog.yaml 기반 |
| Stage 1.8 (적합성 검증) | ✅ | Selenium 3회 루프 |
| **Stage 2 — Type A** | ⚠ 미완성 | Sonnet 의존, 검증 불완전 |
| **Stage 2 — Type B** | ✅ | block_assembler 코드 조립 |
| **Stage 2 — Type B'** | ✅ | 03번 전용 하드코딩 |
| **Stage 2 — Type B''** | ✅ | B' 스타일 변형 |
| Stage 3 (렌더링) | ⚠ | Type A만 사용 |
| Stage 4 (검증) | ✅ | Selenium + Opus Vision |
> Phase Y: slide-base 기반 파이프라인 재설계. 상세: `docs/history/PHASE-Y-PLAN.md`
### 미해결 과제
1. **Type A HTML 생성** — Sonnet 의존 구조가 불안정. block_assembler처럼 코드 기반으로 전환 필요?
2. **B'/B'' 범용화** — 03번 전용 → 다양한 콘텐츠 구조 커버
3. **블록 템플릿 업데이트 반영** — 최근 추가/수정된 블록이 파이프라인에 제대로 연결되는지 검증 필요
### 파이프라인 흐름 (현재)
```
[Stage 0] MDX → normalized.sections (source of truth)
[Stage 1A] Kei 꼭지 추출 (영역/zone 판단 안 함)
[Phase Y] 코드: normalized → 대목차 추출 → group schema 분류 → 블록 매칭 → 영역 확정
[Stage 1.5a] space_allocator: weight → zone px (% 기반)
[Stage 1.7] block_reference: tag_match → schema_match → fallback 순서
[Stage 1.8] assembler(measure_mode) → Selenium 측정 → fit 루프
[Stage 2] assembler(slide-base + 블록) → final HTML
[Stage 4] Selenium overflow + 비전 (-1 미평가)
```
### MDX별 상태
| MDX | 상태 | 비고 |
|-----|------|------|
| **03** | ✅ 동작 | prerequisites-3col + pp2. 텍스트 누락 없음. 회귀 기준. |
| **02** | ⚠ schema 1차 | top: parallel_3_with_image. bottom: 분류 정교화 필요. |
| **01** | ⬜ 미착수 | Type A. 별도 작업. |
### 핵심 원칙 (확립됨)
- source of truth = normalized.sections (Stage 0)
- 영역 = 코드가 결정 (Kei 아님). sub_titles 기반 + group schema.
- 블록 CSS에 최종 고정값. slide_font_css는 공통 레이아웃 계약만.
- zone = % 기반, block = height:100%.
- 글씨 크기 고정. fit은 padding → 내용량 → font 1단계(responsive tier).
- 기존 경로 삭제 금지. 새 schema 점진적 추가. MDX 03 회귀 기준.
- 하드코딩 금지. 프로세스가 결과를 만드는 구조.
3. **블록 글씨 크기 하드코딩 (px 고정)**
- 블록 CSS에 font-size가 Figma 원본 px로 고정
- 컨테이너 크기에 따라 조정 불가 → overflow 원인
- CSS 변수(`var(--block-font-heading)`)로 전환 → assembler가 zone 크기에 따라 계산
### 미해결 프로세스
1. **overflow 시 font 조정 루프** — 재배분만으로 부족할 때 font/padding 줄이기 (Y-5)
2. **Sonnet redesign 경로** — tag 매칭 실패 시 블록 단위 redesign → 저장 (Y-6)
---