현재 상태: - 유형 A: ✅ 동작 - 유형 B: code_assembled만 동작, 파이프라인(filled/after) 미연결 - 핵심 문제: block_assembler가 고정 4역할만 처리 → 유형 B 지원 필요 다음 세션: 1. block_assembler 유형 B 지원 2. 컨테이너 크기 맞춤 (Selenium 측정 기반) 3. 유형 A 깨지지 않는지 확인 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4.0 KiB
4.0 KiB
Phase X': 유형 B 파이프라인 개선
최종 업데이트: 2026-04-06 전제: 유형 A 건드리지 않음. 유형 B 파이프라인 프로세스 수정.
현재 상태
- 유형 A (배경+본심+첨부+결론): ✅ 동작 (01번 MDX)
- 유형 B (상단+하단2분할+결론): code_assembled만 동작, 파이프라인(before→filled→after) 미연결
완료된 것
X'-1: 제목 원본 MDX에서 가져오기 ✅
context.normalized.title사용 (Kei title 대신)- 파일:
src/pipeline.pyStage 1A
X'-2: 들여쓰기 계층 ✅ (code_assembled에서만)
###소제목 → 카드형 분리- 본문 불릿 indent 적용
- 파일:
scripts/assemble_stage2.py
X'-3: 이미지 캡션 ✅
normalized.imagesalt text에서 추출- 파일:
scripts/assemble_stage2.py
X'-4: 상단 균등배분 ✅
justify-content:space-between- 파일:
scripts/assemble_stage2.py
X'-5: 카드 디자인 ✅
- 다크 그라데이션 + 밝은 텍스트
- 파일:
scripts/assemble_stage2.py
X'-6: 표 요약 ✅ (code_assembled에서만)
normalized.tables→ pipeline V'-2에서 Kei 요약 → context 저장_assemble_type_b하단 우측에 표출- 파일:
src/pipeline.py,scripts/assemble_stage2.py
MDX sections 계층 ✅
mdx_normalizer:###(h3) 소목차도 section으로 분리_assemble_type_b:normalized.sections에서 직접 텍스트 가져오기- 대목차/소목차 계층 반영
핵심 미해결 문제
유형 B의 before→filled→after 파이프라인이 연결 안 됨
증거:
- FILLED: 2997bytes, 한글 80자 (유형 A는 214KB)
block_assembler.assemble_slide_html()이 고정 4역할(배경/본심/첨부/결론)만 처리- 유형 B의 자유 역할명(DX_궁극적_목표, 프로세스_변화 등)을 처리 못 함
- 결과: filled/after가 거의 빈 HTML
해결 방향:
block_assembler.assemble_slide_html()이 유형 B 역할도 처리하도록- 또는 유형 B 전용 filled/after 함수 추가
_assemble_type_b(assemble_stage2)는 code_assembled 전용이므로, 파이프라인의 filled/after에는 별도 로직 필요
렌더링에서 잘림
증거:
- code_assembled에 모든 내용이 HTML로 있지만 브라우저에서 보면 잘림
- overflow:hidden + 컨테이너 크기 < 내용 크기
- 상단 카드가 잘림, 결론이 안 보임
해결 방향:
- 컨테이너 크기 계산에서 내용 크기를 고려
- 또는 Selenium 측정 후 재배분 (이건 filled→after 파이프라인이 동작해야 가능)
Kei가 하는 일 (명확히 정리)
- 꼭지 찾기 + 그루핑 — MDX 구조 분석
- 유형 선택 (A/B) — 콘텐츠에 맞는 레이아웃
- 블록 선택 — 컨테이너에 맞는 블록 타입
- 공란에 표/팝업 요약 — 원문 최대 유지
- bold 키워드 판단 — 문맥 기반
나머지는 전부 MDX 원본에서 가져옴:
- 제목, 대목차, 중목차, 소목차, 텍스트 — 원본 그대로
- 핵심 요약 — 원본 그대로
- Kei가 텍스트를 재작성하지 않음
다음 세션 작업 순서
- 유형 B filled/after 파이프라인 연결 — block_assembler 또는 별도 함수
- 컨테이너 크기 vs 내용 크기 맞춤 — Selenium 측정 기반 재배분
- 렌더링 잘림 해결 — overflow 처리
- 01번(유형 A) 깨지지 않는지 확인
관련 파일
| 파일 | 역할 | 유형 B 상태 |
|---|---|---|
src/kei_client.py |
KEI_PROMPT (유형 A/B 선택) | ✅ |
src/validators.py |
검증기 (유형 B 완화) | ✅ |
src/space_allocator.py |
컨테이너 생성 (build_containers_type_b) | ✅ |
src/pipeline.py |
파이프라인 분기 (layout_template) | ✅ 분기만 |
src/pipeline_context.py |
Analysis.layout_template | ✅ |
src/mdx_normalizer.py |
### 소목차 section 분리 | ✅ |
scripts/assemble_stage2.py |
_assemble_type_b (code_assembled) | ✅ |
src/block_assembler.py |
assemble_slide_html (filled/after) | ❌ 유형 B 미지원 |