# task-1598.1 완료 보고서

**S**: 네이버 블로그 대시보드의 글 생성 API에 subprocess timeout 300초 제한이 있어 SEO+GEO 프롬프트(긴 프롬프트) 사용 시 504 타임아웃이 발생하고, 이미지 생성 시 프롬프트 편집 불가, 히스토리에서 md 원문이 `<pre>` 태그로 표시되는 상태였다.

**C**: Sonnet 모델로 긴 프롬프트를 사용하면 300초를 초과하여 504 에러가 빈번하게 발생하고, 이미지 생성 시 상세 지시가 불가능하며, 히스토리에서 글 미리보기가 불가능하여 제이회장님의 작업 효율이 저하된다.

**Q**: timeout 제거, 이미지 프롬프트 2단계 워크플로우, 히스토리 블로그 미리보기를 동시에 적용하여 블로그 작업 효율을 개선할 수 있는가?

**A**: 3건 모두 구현 완료. timeout=None(무제한) 설정, 이미지 프롬프트 편집 UI 추가, 히스토리 블로그 스타일 렌더링 적용. server.py 2개 수정, NaverBlogView.js 3개 수정.

---

## 수정 내역

### 수정 0: timeout 무제한 설정
- `server.py:4805` — `timeout = 120 if model == "haiku" else 300` → `timeout = None`
- `server.py:4827-4829` — `subprocess.TimeoutExpired` catch 블록 제거 (timeout=None이면 미발생)

### 수정 1: 이미지 프롬프트 워크플로우

**백엔드** (server.py):
- `server.py:358-364` — `_build_naver_blog_prompt` 함수에 "I. 이미지 생성 프롬프트 규칙" 섹션 추가
- `server.py:376,382,387` — H. 구조 템플릿의 각 소제목에 `[이미지프롬프트: 유형|상세설명]` 항목 추가

**프론트엔드** (NaverBlogView.js):
- `NaverBlogView.js:526-537` — `parseImagePrompts()` 함수 추가 (`[이미지프롬프트: {유형}|{상세설명}]` 파싱)
- `NaverBlogView.js:553` — `imagePrompts` state 추가
- `NaverBlogView.js:592-597` — useEffect로 생성 결과에서 이미지 프롬프트 자동 파싱
- `NaverBlogView.js:599-624` — `handleGenerateImages()` 수정 (프롬프트 유무에 따라 payload 분기)
- `NaverBlogView.js:855-965` — 이미지 생성 섹션 전면 교체 (프롬프트 편집 textarea + 이미지 상태 그리드)

### 수정 2: 히스토리 블로그 미리보기
- `NaverBlogView.js:1326-1360` — `<pre>` 태그 → `parseBlogContent()` 렌더링으로 교체
- "텍스트 복사" + "블로그용 복사" 2개 버튼으로 분리
- `alert()` 제거, max-h-[300px] → max-h-[400px]

## 산출물 파일
- `/home/jay/workspace/dashboard/server.py`
- `/home/jay/workspace/dashboard/components/NaverBlogView.js`

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **f-string 이스케이프** — 프롬프트 내 `{유형}|{상세설명}` 포맷이 Python f-string 변수로 해석되는 문제 → `{{유형}}|{{상세설명}}`으로 이스케이프
2. **이미지 프롬프트 폴백** — `[이미지프롬프트: ...]` 태그가 없는 기존 글에서도 동작하도록 imageDescriptions 폴백 로직 유지
3. **히스토리 XSS 방지** — `dangerouslySetInnerHTML` 사용 시 `parseBlogContent()` 내부의 `escapeHtml()` 함수가 이미 입력을 이스케이프하므로 안전

## 테스트 결과
- 네이버 블로그 관련 자동화 테스트 파일 없음 (수동 테스트 필요)
- pyright: server.py 기존 경고만 존재 (import resolution — 기존 이슈, 본 작업 무관)
- TypeScript: NaverBlogView.js의 `parseImagePrompts`/`imagePrompts` unused 경고는 JSX 내에서 사용 중인 false positive

## 모델 사용 기록
- 토르(백엔드) / server.py timeout+프롬프트 수정 / sonnet
- 프레이야(프론트엔드) / NaverBlogView.js UI 수정 / sonnet

## 머지 판단
- **머지 필요**: No (worktree 미사용, 시스템 작업)
