From f4548413c802ef737f493e6a7de9cf367acabfd8 Mon Sep 17 00:00:00 2001 From: kyeongmin Date: Thu, 26 Mar 2026 07:52:13 +0900 Subject: [PATCH] =?UTF-8?q?Phase=20H=20=EA=B3=84=ED=9A=8D=20=EB=B3=B4?= =?UTF-8?q?=EC=99=84=20=E2=80=94=20=EC=A0=95=EB=B0=80=20=EA=B2=80=ED=86=A0?= =?UTF-8?q?=2011=EA=B0=9C=20=EB=B0=9C=EA=B2=AC=20=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1단계 A/B 분리 계획에 대한 정밀 검토 결과: - refine_concepts() 실패 처리: A 결과 그대로 사용 - source_data 하류 전달 경로 추가 - section-title-with-bg body 배치 금지 규칙 - 1회 호출로 모든 꼭지 처리 명시 - manual_classify() fallback 동기화 - session_id "design-agent-refine" 별도 - 제목 중복 방지 지시 - expression_hint 역할 재정의 (관계 성격만, 블록 이름은 Opus가) Co-Authored-By: Claude Opus 4.6 (1M context) --- IMPROVEMENT-PHASE-H.md | 216 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 209 insertions(+), 7 deletions(-) diff --git a/IMPROVEMENT-PHASE-H.md b/IMPROVEMENT-PHASE-H.md index 4bc64ae..1980248 100644 --- a/IMPROVEMENT-PHASE-H.md +++ b/IMPROVEMENT-PHASE-H.md @@ -1,12 +1,13 @@ -# Phase H: 스토리라인 설계 기반 파이프라인 전환 — 실행 상세 +# Phase H: 스토리라인 설계 + 컨셉 구체화 기반 파이프라인 전환 — 실행 상세 -> "꼭지 추출 → 블록 매칭"에서 "스토리라인 설계 → 목적 기반 배치 → 원본 보존 편집"으로 전환. -> 코드 구조 변경 없음. 프롬프트 3개만 수정. 하류 호환 유지 (topics 구조 동일). +> 1단계를 A/B로 분리하여 정확도 향상. +> 1단계-A: 전체 스토리라인 설계 (큰 그림) +> 1단계-B: 각 꼭지 순회하며 컨셉 구체화 (세부 판단) > 원칙: 하드코딩 금지. 원본 텍스트 최대 보존. 회귀 금지. --- -## 문제 진단 +## 문제 진단 (Phase H 1차 실행 결과 포함) ### 문제 1: 1단계가 "꼭지 추출"만 함 — 스토리라인 설계 없음 @@ -37,7 +38,152 @@ --- -## H-1: KEI_PROMPT 재설계 — "꼭지 추출" → "스토리라인 설계" +### 문제 4: 1차 실행에서 발견 — 실장이 한 번에 너무 많이 함 + +H-1~H-4 적용 후 실행 결과: +- 스토리 흐름은 생겼지만 **블록 선택이 여전히 잘못됨** +- section-title-with-bg(500px)가 body에 들어감 → 아래 블록 안 보임 +- compare-pill-pair에 비교 내용 없이 라벨만 (BIM VS DX) +- **GIS → BIM → 디지털트윈을 flow-arrow로 표현** — 이건 순서/흐름이 아니라 **기술 융합 구조**인데 잘못 판단 +- 원본의 12행 상세 비교표(DX vs BIM)를 무시 + +**근본 원인:** 실장이 한 번의 호출로 정보구조 + 스토리라인 + 꼭지 + purpose + 관계 성격을 전부 판단하려니 **대충 하거나 놓침** + +### 문제 5: 실장이 팀장에게 넘기는 정보가 부족 + +현재 실장 → 팀장 전달: +``` +"꼭지 4: DX와 핵심기술간 상호관계, purpose: 구조시각화" +``` +→ 팀장: "구조시각화면... flow-arrow? layer-diagram? venn-diagram?" → 아무거나 선택 + +있어야 하는 전달: +``` +"꼭지 4: DX와 핵심기술간 상호관계 + - 관계 성격: 기술 융합 (순서 아님, 발전 단계 아님) + - GIS, BIM, 디지털트윈이 DX의 구성요소 + - 포함 관계 또는 융합 관계로 표현 + - flow/순서 표현 금지" +``` +→ 팀장: "포함 관계면 venn-diagram" + +--- + +## 개선 방향: 1단계를 A/B로 분리 + +### 현재 (1회 호출, 부담 과중) +``` +1단계: 전부 한 번에 + 정보구조 + 핵심메시지 + 스토리라인 + 꼭지추출 + purpose + role + 관계성격 + 이미지/표 + → 정확도 낮음. 대충 처리. +``` + +### 변경 (2회 호출, 각각 집중) +``` +1단계-A: 전체 스토리라인 설계 (큰 그림) + - 콘텐츠 전체를 읽고 핵심 메시지 파악 + - 스토리 흐름 설계 (문제→근거→핵심→정의→결론) + - 꼭지 추출 + purpose + role + layer + - 출력: topics[] (기존과 동일 구조) + +1단계-B: 각 꼭지 컨셉 구체화 (세부 판단) — 1단계-A 결과를 순회 + - 각 꼭지의 내용을 원본에서 다시 확인 + - 관계 성격 판단: 순서? 포함? 비교? 나열? 정의? + - 표현 방법 제안: "이건 융합 관계 → venn/포함", "이건 수단-목적 → 비교표" + - 원본에 있는 데이터(비교표, 사례, 출처) 누락 없이 확인 + - 출력: 각 topic에 concept 필드 추가 + +→ 이 결과를 디자인 팀장에게 넘김 +``` + +### 장점 +- 각 호출의 부담 감소 → 정확도 향상 +- 1단계-B에서 **내용을 깊이 이해**하고 컨셉 판단 +- 팀장이 받는 정보가 구체적 → 블록 선택 정확도 향상 +- Kei API 호출 2회이지만, 각각의 응답 시간 단축 가능 + +### Kei API 호출 횟수 +- 현재: 1단계 1회 + 2단계 Opus 1회 + 3단계 1회 = Kei 3회 +- 변경: 1단계-A 1회 + 1단계-B 1회 + 2단계 Opus 1회 + 3단계 1회 = Kei 4회 +- 1회 추가. 하지만 각 호출이 더 정확하므로 재시도/재검토 감소. + +--- + +## H-1 수정: KEI_PROMPT를 A/B 두 단계로 분리 + +### H-1a: 1단계-A — 전체 스토리라인 설계 (KEI_PROMPT_A) + +기존 H-1의 KEI_PROMPT를 "스토리라인 설계" 전용으로 유지. +핵심메시지 + 스토리흐름 + 꼭지추출 + purpose + role. +관계 성격, 표현 방법 같은 세부 판단은 **하지 않음** (1단계-B에서). + +### H-1b: 1단계-B — 각 꼭지 컨셉 구체화 (KEI_PROMPT_B, 신규) + +1단계-A 결과(topics)를 받아서, 각 꼭지를 원본과 대조하며 구체화: + +``` +각 꼭지에 대해 다음을 판단해줘: + +1. 관계 성격 (relation_type): + - sequence: 시간/단계 순서 (A→B→C) + - inclusion: 포함/융합 관계 (A가 B,C를 포함) + - comparison: 대등 비교 (A vs B) + - hierarchy: 상위-하위 (A > B > C) + - definition: 용어 정의 (나열) + - cause_effect: 원인-결과 + +2. 표현 제안 (expression_hint): + - "포함 관계이므로 venn-diagram 또는 layer-diagram" + - "대등 비교이므로 comparison-table. 원본에 12행 비교표가 있으니 활용" + - "용어 정의 나열이므로 card-text-grid" + +3. 원본 데이터 확인 (source_data): + - 원본에 비교표가 있는가? → 행/열 수, 활용 여부 + - 원본에 사례/증거가 있는가? → 출처 명시 + - 원본에 이미지가 있는가? → 크기/역할 + - 놓치면 안 되는 핵심 데이터가 있는가? +``` + +### pipeline.py 변경 + +```python +# 현재 +analysis = await classify_content(content) + +# 변경 +analysis = await classify_content(content) # 1단계-A: 스토리라인 +analysis = await refine_concepts(content, analysis) # 1단계-B: 컨셉 구체화 +``` + +`refine_concepts()`는 kei_client.py에 신규 함수로 추가. +Kei API 호출 (Sonnet fallback 없음). + +### 수정 파일 +- `src/kei_client.py` — KEI_PROMPT_B 추가, `refine_concepts()` 함수 신규 +- `src/pipeline.py` — 1단계에 `refine_concepts()` 호출 추가 + +--- + +## H-5: 1단계-B 컨셉을 2단계 팀장에게 전달 + +### 현재 상태 +팀장이 받는 꼭지 정보: title, purpose, layer, role, emphasis +→ 부족. "이 내용이 순서인지 포함인지 비교인지" 모름. + +### 변경 +1단계-B에서 추가된 `relation_type`, `expression_hint`를 팀장 프롬프트에 포함: + +```python +# design_director.py 꼭지 요약 생성 시 +line = ( + f"꼭지 {t.get('id')}: {t.get('title')} " + f"[{t.get('purpose')}, 관계:{t.get('relation_type', '?')}, " + f"표현:{t.get('expression_hint', '?')}]" +) +``` + +### 수정 파일 +- `src/design_director.py` — 꼭지 요약 생성 부분 ### 현재 상태 ``` @@ -181,9 +327,10 @@ req_text = ( | 파일 | 항목 | 변경 성격 | |------|------|----------| -| `src/kei_client.py` | H-1 | KEI_PROMPT 재설계 (스토리라인 설계) | +| `src/kei_client.py` | H-1a, H-1b | KEI_PROMPT_A (스토리라인) + KEI_PROMPT_B (컨셉 구체화) + `refine_concepts()` 신규 | +| `src/pipeline.py` | H-1b | 1단계에 `refine_concepts()` 호출 추가 | | `src/content_editor.py` | H-2, H-4 | EDITOR_PROMPT 수정 (원본 보존) + purpose 전달 | -| `src/design_director.py` | H-3 | STEP_B_PROMPT에 purpose 기반 블록 선택 가이드 추가 | +| `src/design_director.py` | H-3, H-5 | STEP_B_PROMPT purpose 가이드 + 꼭지 요약에 relation_type/expression_hint 포함 | 코드 구조 변경 없음. 프롬프트만 수정. persona_agent 수정 0건. @@ -228,3 +375,58 @@ req_text = ( |------|------| | 2026-03-26 | 초안. 스토리라인 설계 기반 전환. 프롬프트 3개 수정. | | 2026-03-26 | 정밀 검토. H-3 출력 형식에 purpose 추가 필요 발견. 반영. | +| 2026-03-26 | 1차 실행 결과 분석. 1단계 A/B 분리 결정. H-1b(컨셉 구체화) + H-5(팀장 전달) 추가. | +| 2026-03-26 | 정밀 검토 11개 발견. 아래 보완 사항 반영. | + +## 정밀 검토 보완 사항 + +### 필수 보완 (구현 전 반드시 반영) + +**1. refine_concepts() 실패 처리:** +- Kei API 실패 시 1단계-A 결과 그대로 사용 (relation_type/expression_hint 없이 진행) +- pipeline 멈추지 않음 +```python +analysis = await refine_concepts(content, analysis) +# refine_concepts 내부에서 실패 시 analysis를 변경 없이 그대로 반환 +``` + +**2. source_data 하류 전달:** +- H-5(팀장 전달)에서 relation_type + expression_hint + **source_data** 모두 포함 +```python +line += f", 원본데이터:{t.get('source_data', '?')}" +``` + +**3. section-title-with-bg body 배치 금지:** +- STEP_B_PROMPT "블록 선택 규칙"에 추가: + "section-title-with-bg는 body/sidebar/footer zone에서 사용 금지. header zone 전용." +- 또는 `_validate_height_budget()`에서 body zone의 section-title-with-bg를 topic-center로 교체 + +**4. 1회 호출 명시:** +- 1단계-B는 **1회 Kei API 호출로 모든 꼭지를 한꺼번에 처리** +- 꼭지별 개별 호출 아님 + +**5. manual_classify() fallback 동기화:** +```python +return { + "title": "슬라이드", + "core_message": "", + "total_pages": 1, + "info_structure": "", + "topics": [{"id": 1, ..., "purpose": "핵심전달", "source_hint": ""}], + "images": [], "tables": [], +} +``` + +**6. session_id:** +- 1단계-B: `"design-agent-refine"` (별도 session. 1단계-A 대화 맥락에 영향받지 않도록) + +**7. 제목 중복 방지:** +- KEI_PROMPT_A에 추가: "슬라이드 제목(title)과 첫 번째 꼭지 제목은 달라야 한다. 슬라이드 제목은 전체 주제, 꼭지 제목은 해당 위치의 구체적 내용." + +**8. expression_hint 역할 재정의 (Opus와 역할 분리):** +``` +expression_hint는 "관계 성격"을 기술한다. 구체 블록 이름을 지정하지 않는다. + ✅ "기술 융합/포함 관계. 순서 아님. 구성요소 간 관계 표현 필요." + ❌ "venn-diagram 추천" +블록 이름 결정은 2단계 Opus의 역할이다. +```