팀장 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>
This commit is contained in:
2026-03-25 11:52:33 +09:00
parent 7b034b04b6
commit 6d53d95fa6
4 changed files with 95 additions and 51 deletions

47
PLAN.md
View File

@@ -93,21 +93,32 @@
- **의존성:** DA-2
- **완료 기준:** 꼭지 목록 + 레이어 + 강조 + 배치 + 이미지/표/상세 판단 JSON
### DA-13: 2단계 — 디자인 팀장 (레이아웃 설계)
- **파일:** src/design_director.py
- **내용:** 블록 매핑 + 공간 배분 + 글자 수 가이드
- 블록 매핑: catalog 메뉴판에서 각 꼭지 성격에 맞는 블록 선택
- 이미지 배치: Pillow로 원본 크기 확인 → 가로/세로에 따라 영역 결정 (크기만 조절, crop 안 함)
- 표 배치: 행×열 규모 보고 공간 판단 (안 되면 요약 요청 또는 페이지 분리)
- 자세히보기: 상세 콘텐츠는 `<details>` 영역으로 설계
- 공간 배분: 영역별 비율, 겹침 방지
- 글자 수 가이드: 각 블록 공간에 맞는 대략적 글자 수 (하드코딩 아닌 판단)
- 페이지 판단: 안 들어가면 2페이지 분리
- **기술:** Anthropic API (Sonnet) + Pillow (이미지 크기)
### DA-13a: 2단계 Step A — 레이아웃 프리셋 선택 (규칙 기반)
- **파일:** src/design_director.py (`select_preset()` 함수)
- **내용:** 실장의 role 분석을 보고 레이아웃 프리셋을 자동 선택
- reference 꼭지 있음 → `sidebar-right` (65:35)
- 모든 flow가 대등 비교 → `two-column` (50:50)
- 고강조 1개 + 나머지 보조 → `hero-detail`
- 나머지 → `single-column`
- **기술:** Python 규칙 코드 (LLM 불필요)
- **의존성:** DA-12
- **완료 기준:** 블록 배치 + 이미지/표 배치 + 글자 수 가이드 JSON
- **완료 기준:** 프리셋 이름 + CSS grid 반환
### DA-13b: 2단계 Step B — 프리셋 내 블록 매핑 (Sonnet)
- **파일:** src/design_director.py
- **내용:** 선택된 프리셋의 zone에 꼭지를 배정 + 블록 타입 선택 + 글자 수 가이드
- 프롬프트에 선택된 프리셋의 CSS grid가 포함됨
- flow 꼭지 → body/main zone
- reference 꼭지 → sidebar zone
- detail_target → popup 연결
- catalog에서 블록 타입 선택
- 이미지/표 배치 판단
- **기술:** Anthropic API (Sonnet) + Pillow
- **의존성:** DA-13a
- **완료 기준:** zone별 블록 배정 + 글자 수 가이드 JSON
### DA-13c: 3단계 — Kei 텍스트 편집자 (텍스트 정리)
### DA-13b: 3단계 — Kei 텍스트 편집자 (텍스트 정리)
- **파일:** src/content_editor.py
- **내용:** 팀장의 글자 수 가이드 참고하되 내용 의미 우선
- 전체 컨텍스트와 핵심 용어 유지
@@ -116,7 +127,7 @@
- 표 내용 편집 (핵심 행/열 선택, 요약)
- 자세히보기 대상: 요약 버전 + 상세 버전 둘 다 작성
- **기술:** Anthropic API (Sonnet)
- **의존성:** DA-13
- **의존성:** DA-13b
- **완료 기준:** 슬롯별 텍스트 JSON. 핵심 용어 보존. 자세히보기 포함.
### DA-14: 4단계 — 디자인 실무자 (디자인 조정 + HTML 조립) + 5단계 재검토
@@ -126,7 +137,7 @@
+ Jinja2 HTML 조립, 이미지 object-fit:contain, 표 container query, `<details>` 접기, 인쇄 펼침 JS
- 5단계 (AI): 팀장이 전체 균형 재검토 → 채움 비율, 블록 균형, 이미지/표 크기 점검 → 2차 조정
- **기술:** Anthropic API Sonnet (디자인 조정 + 재검토) + Jinja2/CSS (조립)
- **의존성:** DA-11, DA-12, DA-13, DA-13b
- **의존성:** DA-11, DA-12, DA-13a, DA-13b, DA-13c
- **완료 기준:** 텍스트 입력 → 균형 잡힌 슬라이드 HTML (이미지/표/자세히보기 포함, 재검토 완료)
---
@@ -170,9 +181,9 @@
## 의존 관계
```
DA-1 → DA-2 → DA-12(실장) → DA-13(팀장) → DA-13b(편집자) ─┐
├→ DA-14(조립+재검토) → DA-15 → DA-16
DA-3 → DA-4~DA-10 → DA-11(렌더러) ─────────────────────────┘
DA-1 → DA-2 → DA-12(실장) → DA-13a(프리셋) → DA-13b(블록배치) → DA-13c(편집자) ─┐
├→ DA-14(조립+재검토) → DA-15 → DA-16
DA-3 → DA-4~DA-10 → DA-11(렌더러) ──────────────────────────────────────────────
```
- Phase 1~2: AI 없이 진행 가능