Files
C.E.L_Slide_test2/PROGRESS.md
kyeongmin 6d53d95fa6 팀장 2-Step 분리 + 실장 detail_target 기준 수정
팀장 (DA-13 → DA-13a + DA-13b):
  - Step A: 레이아웃 프리셋 선택 (규칙 기반, LLM 불필요)
    sidebar-right / two-column / hero-detail / single-column
  - Step B: 프리셋 안에서 블록 매핑 (Sonnet, 프리셋 CSS 포함)
  - 기존 DA-13b(편집자) → DA-13c로 변경

실장 (kei_client.py):
  - detail_target 기준 수정: 근거/사례/용어는 popup이 아님
  - reference는 sidebar에, 근거는 본문에
  - popup은 진짜 상세 데이터(비교표 등)만
  - 1페이지로 담을 수 있으면 억지로 2페이지 안 함

pipeline.py: import re 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:52:33 +09:00

4.7 KiB

Design Agent — 진행 상황

현재 상태 요약

상태 개수
done 14
in-progress 0
todo 4
blocked 0
전체 18

Phase 1: 기반 구축

태스크 상태 담당 시작 완료 메모
DA-1: 프로젝트 셋업 done - - - pyproject.toml, .env
DA-2: FastAPI 서버 done - - - DA-1 이후
DA-3: 디자인 토큰 + 기본 CSS done - - - 독립 작업 가능

Phase 2: 블록 템플릿 제작

태스크 상태 담당 시작 완료 메모
DA-4: 비교 블록 done - - - DA-3 이후
DA-5: 카드 그리드 done - - - DA-3 이후
DA-6: 관계도 done - - - DA-3 이후
DA-7: 프로세스 done - - - DA-3 이후
DA-8: 강조 인용 done - - - DA-3 이후
DA-9: 결론 바 done - - - DA-3 이후
DA-10: 비교 테이블 done - - - DA-3 이후
DA-11: 슬라이드 조합 렌더러 done - - - DA-4~10 이후

Phase 3: AI 파이프라인 연결

태스크 상태 담당 시작 완료 메모
DA-12: 1단계 Kei 실장 (꼭지+정보구조+role) done - - - Kei API 연동. info_structure + role(flow/reference)
DA-13a: 2단계A 프리셋 선택 (규칙 기반) todo - - - reference→sidebar-right, 비교→two-column 등 자동
DA-13b: 2단계B 블록 매핑 (Sonnet) todo - - - 프리셋 CSS 포함 프롬프트. zone별 블록 배정
DA-13c: 3단계 텍스트 편집자 (Kei 역할) todo - - - 의미 우선 편집 + 표 편집 + 자세히보기(요약+상세)
DA-14: 4단계 실무자 + 5단계 재검토 todo - - - 디자인 조정 + HTML 조립 + 팀장 균형 재검토

Phase 4: UI + 출력

태스크 상태 담당 시작 완료 메모
DA-15: 프론트엔드 done - - - DA-14 이후. HTML 다운로드만
DA-16: 통합 테스트 done - - - DA-15 이후

버그 수정 이력

BF-1: 프론트엔드 SSE 파싱 실패 [발견: DA-15 이후]

  • 현상: 서버는 정상 응답하지만 브라우저에서 결과 미표시. "시작 중..." 고정.
  • 원인: main.py Python 문자열 안에 HTML/JS를 넣어서 \n이 실제 줄바꿈으로 변환 → JS split('\n\n') 깨짐. 또한 Windows SSE가 \r\n\r\n(CRLF)로 구분.
  • 해결: static/index.html 별도 파일로 분리. FileResponse로 서빙. SSE split을 /\r?\n\r?\n/ 정규식으로 변경.
  • 기술: FileResponse (FastAPI 내장), 추가 의존성 0
  • 충돌 검토: API 경로와 충돌 없음. 기존 코드 변경 없음. Kei persona 무관.
  • 상태: done

BF-2: 블록 내용이 비어있음 (Jinja2 include 변수 전달 실패) [발견: BF-1 이후]

  • 현상: 슬라이드 HTML은 생성되지만 모든 블록 텍스트가 비어있음. 레이아웃 구조만 있고 내용 없음.
  • 원인: renderer.py에서 Jinja2 include로 블록 템플릿을 삽입하는데, include는 블록별 변수를 개별 전달하지 못함. Sonnet이 채운 data가 템플릿에 도달 안 함.
  • 해결: include 대신 각 블록 템플릿을 env.get_template().render(**data)로 개별 렌더링 후 완성된 HTML을 삽입. render_standalone_block()이 이미 이 방식으로 동작 중 → 통일.
  • 기술: Jinja2 get_template().render() (내장), 추가 의존성 0
  • 수정 파일: renderer.py, templates/slide-base.html
  • 충돌 검토: 블록 템플릿 7개 변경 없음. pipeline.py 호출 시그니처 동일. Kei persona 무관.
  • 상태: done

BF-3: 한글 깨짐 (다운로드 HTML 파일) [발견: BF-1 이후]

  • 현상: 다운로드한 HTML 파일에서 한글이 ê±´ì¤ì°ì 같은 깨진 문자로 표시.
  • 원인: Blob 다운로드 시 UTF-8 BOM 미포함. 일부 에디터/브라우저가 인코딩 자동 감지 실패.
  • 해결: download() 함수에서 Blob 생성 시 UTF-8 BOM('\uFEFF') 접두사 추가.
  • 기술: JavaScript BOM 1줄, 추가 의존성 0
  • 수정 파일: static/index.html
  • 충돌 검토: 미리보기(iframe)에 영향 없음. SSE 파싱에 영향 없음.
  • 상태: done

블로킹 이슈

없음


완료된 준비 사항

항목 파일 상태
프로젝트 규칙 CLAUDE.md 완료
실행 계획 PLAN.md 완료
진행 추적 PROGRESS.md 완료 (이 파일)
기술 조사 docs/RESEARCH.md 완료
폴더 구조 templates/, samples/, docs/ 생성 완료