Files
C.E.L_Slide_test2/docs/history/PHASE-T-REMAINING.md
kyeongmin c42e01f060 문서 정리: Phase 히스토리 md를 docs/history/로 이동 + 오래된 테스트/에셋 정리
- 루트의 IMPROVEMENT-PHASE-*.md, PHASE-*.md 등 45개 → docs/history/로 이동
- docs/block-tests/ 오래된 블록 테스트 HTML 삭제 (figma_to_html_agent로 대체)
- docs/figma-analysis/, docs/figma-assets/, docs/figma-screenshots/ 정리
- docs/test-*.html 등 초기 테스트 파일 정리
- 참고 페이지/ 스크린샷 정리

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 10:56:23 +09:00

136 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase T 잔여 작업 — 프롬프트 동적 생성 + 미반영 사항
> 작성일: 2026-04-02
> 상태: Phase T 구조(Stage 0~5)는 완성. 하지만 핵심인 프롬프트가 Phase S 하드코딩 그대로.
> 이 문서: 프롬프트 교체 + 미반영 사항 전체 리스트 + 실행 계획.
---
## 1. 전체 문제 리스트
### 1-1. 프롬프트 하드코딩 (근본 문제)
html_generator.py의 BG_PROMPT, CORE_PROMPT, SIDEBAR_PROMPT, FOOTER_PROMPT 4개가
Phase S 때 만든 고정 CSS 값(9px, 10px, #f8fafc, padding:14px 등)으로 박혀있음.
Phase T에서 계산한 폰트 위계, 디자인 예산, 블록 레퍼런스가 결과에 반영되지 않는 근본 원인.
### 1-2. 폰트 크기 위계 미반영
Phase T Stage 1.5a에서 계산: 핵심=14px, 본심=12px, 배경=11px, 첨부=10px.
하지만 프롬프트가 배경=9px, 첨부=10px 등 다른 값을 하드코딩.
→ 프롬프트가 Phase T 위계 값을 사용해야 함.
### 1-3. 배경-본심 가로 길이 불일치
sidebar-right 구조에서 배경과 본심은 같은 body zone에 있으므로 가로 폭이 동일해야 함.
현재 프롬프트가 각각 다른 width를 지정할 수 있어서 Sonnet이 다르게 생성.
→ "body 영역 전체 폭 100%" 강제.
### 1-4. 들여쓰기 불일치
불릿(•) 첫째줄 텍스트 시작점과 둘째줄 시작점이 정확히 일직선이어야 함.
글씨 크기가 영역마다 다르므로(배경 11px, 본심 12px, 첨부 10px) 들여쓰기 px도 각 폰트에 맞게.
padding-left와 text-indent를 폰트 크기 기준으로 계산.
계산 방식:
- 불릿 마커 "• " 폭 ≈ font_size × 1.2 (한글 기준)
- padding-left = ceil(font_size × 1.2)
- text-indent = -padding-left
| 영역 | 폰트 | padding-left | text-indent |
|------|------|-------------|-------------|
| 배경 (11px) | 11px | 14px | -14px |
| 본심 (12px) | 12px | 15px | -15px |
| 첨부 (10px) | 10px | 12px | -12px |
### 1-5. 블록 선택 → 컨테이너 맞춤 재구성 미반영
Phase T의 핵심 목적:
- Stage 1.7에서 relation_type + expression_hint → 참고 블록 선택
- 선택된 블록의 구조(색상, 레이아웃, 패턴)를 따르되 컨테이너 크기에 맞게 재구성
- AI가 "발명"하지 않고 검증된 블록 구조를 따르게
현재: Stage 1.7이 블록을 선택하고 레퍼런스 HTML을 생성하지만,
프롬프트가 이것을 무시하고 하드코딩 CSS를 따름.
→ 프롬프트가 레퍼런스 HTML을 "따르라"고 지시해야 함.
### 1-6. 팝업(상세 내용) 별도 HTML 분리
본문에 다 넣을 수 없는 상세 내용(DX-BIM 비교표 12행 등)은:
1. final.html에는 "상세보기" 링크만
2. 상세 내용은 별도 첨부 HTML 파일로 생성
출력 구조:
```
data/runs/{run_id}/
├── final.html ← 슬라이드 본문
├── 첨부1_DX_BIM_비교표.html ← details에서 분리된 상세
├── 첨부2_xxx.html ← 필요 시 추가
└── ...
```
### 1-7. 동일 내용 중복 금지
같은 내용이 본문에 2번 나오면 안 됨.
예: "DX와 BIM 비교표 보기" 링크 + 본문에 비교표 전체 → 중복.
비교표는 첨부 HTML로 분리하고, 본문에는 링크만.
---
## 2. 수정 완료 항목 (이미 처리됨)
| # | 항목 | 파일 | 상태 |
|---|------|------|------|
| A | 동적 비율 72:28 grid 반영 | renderer.py | ✅ 완료 |
| B | body-footer 공란 제거 | renderer.py | ✅ 완료 |
| C | L4 overflow 시 재생성 트리거 | pipeline.py | ✅ 완료 |
---
## 3. 실행 계획
### Step R-1: 프롬프트 동적 생성 함수 (1-1, 1-2, 1-3, 1-4, 1-5, 1-7 해결)
**파일:** html_generator.py
하드코딩 BG_PROMPT/CORE_PROMPT/SIDEBAR_PROMPT/FOOTER_PROMPT를 삭제하고,
`build_area_prompt(role, context)` 함수로 교체.
이 함수가 context에서 가져오는 것:
- font_size ← context.font_hierarchy (1-2)
- width ← context.containers[role].width_px (1-3)
- height ← context.containers[role].height_px
- indent_px ← font_size 기반 계산 (1-4)
- reference_html ← context.references[role].design_reference_html (1-5)
- design_budget ← context.containers[role].design_budget
- "중복 금지" 규칙 (1-7)
### Step R-2: 팝업 별도 HTML 생성 (1-6 해결)
**파일:** pipeline.py (Stage 5), html_generator.py
Stage 0에서 추출된 popups[]를 별도 HTML 파일로 생성.
final.html에는 "상세보기" 링크만 남기고, 상세 내용은 첨부N_제목.html로 저장.
### Step R-3: 검증 + 시뮬레이션
**파일:** scripts/test_phase_t_audit.py 확장
- 프롬프트에 하드코딩 px 값이 없는지 검사
- font_hierarchy 값이 프롬프트에 반영되는지 확인
- 들여쓰기 CSS가 폰트 크기 기반인지 확인
- 레퍼런스 HTML이 프롬프트에 포함되는지 확인
- 팝업 별도 HTML 생성 확인
- 실제 데이터로 전체 시뮬레이션
---
## 4. 실행 순서
```
Step R-1 (프롬프트 동적 생성) → Step R-3 (검증)
Step R-2 (팝업 분리) → Step R-3 (검증)
```
R-1이 가장 크고 핵심. R-2는 독립 작업.