전체 26 files (20 추가 + 6 수정), 10507 insertions. Phase Z 문서 : - docs/architecture/PHASE-Z-CHANGE-LOG.md (신설) — axis-by-axis 의사결정 history (newest-on-top). Step 7-A 부터 6 entry 박힘 + 2026-05-08 / 2026-05-08 #2 (compat 매트릭스 폐기 / 6-B 폐기 / F14 표현 정정 / label gate policy 분리). - docs/architecture/PHASE-Z-PIPELINE-OVERVIEW.md (수정) — Step 5/6/9 Gap note append (구조 무변, append-only). 6-B 폐기 사실 + Refinement F. - docs/architecture/PHASE-Z-PIPELINE-STATUS-BOARD.md (수정) — snapshot date 2026-05-08 갱신. §3 핵심 missing item 5 (Step 5/6/9 boundary axis breakdown + 폐기 기록). §6 한 줄 갱신 — 다음 axis 후보 A~F. Project root docs : - PLAN.md / PROGRESS.md / README.md (수정) — 토큰 체계 / 폴더 구조 / 설계 문서 / 역할 분리 반영. - IMPROVEMENT-REDESIGN.md (신설) — Phase Z 설계 핵심 문서. - PROCESS_OVERVIEW.html (신설) — 파이프라인 개요 시각. - docs/tasks/* (신설) — Phase Z task 문서. V4 catalog (Phase Z runtime 필수 의존성) : - tests/matching/v4_full32_result.yaml (신설, 4888 줄) — V4 매칭 결과 32 frame × 10 MDX section. lookup_v4_match() / lookup_v4_candidates() 가 본 파일 read. Phase Z runtime 이 *없으면 즉시 abort* — clone 후 즉시 동작 가능 보장. Samples : - samples/mdx_batch/04.mdx (신설) — MDX04 기본 sample. - samples/mdx/04. DX 지연 요인.mdx (신설) — MDX04 원본. Phase Q legacy 보존 (별 axis "Phase Q audit & salvage" 영역) : - src/block_matcher_tfidf.py / catalog_blocks.py / frame_extractor.py / pipeline_v2.py — Phase Q (옛 파이프라인) src 신규 untracked 파일들. Phase Z runtime 와 의존성 0. Phase Q audit axis 에서 검토 예정. - scripts/eval_block_matcher.py / fetch_all_frame_screenshots.py / match_17_units_my_matcher.py / match_mdx_strict.py / match_mdx_to_frames_tfidf.py / ocr_augment_texts.py / run_pipeline_v2.py / previews/ — Phase Q 작업 시 사용한 옛 script. 같이 보존. - run_mdx03_pipeline.py (수정) — Phase Q 진입점 (no flag) + Phase Z 진입점 (--phase-z2 flag) 동시 wrapper. Phase Z 만 사용 시 `python -m src.phase_z2_pipeline samples/mdx_batch/03.mdx <run_id>` 직접 호출. 비-scope : - tests/matching/ (v4_full32_result.yaml 외 ~63MB) — V4 진화 history / reports / DECK / ATTACH. Phase Q audit axis 에서 검토. - tests/pipeline/ (~15MB) — pipeline data. Phase Q audit 영역. - templates/catalog/blocks.yaml — 옛 block catalog. Phase Q audit. - templates/phase_z2/frames/ — 옛 frame partial 위치. Phase Q audit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
24 KiB
Pipeline 개선 — 매칭 시스템 통합 (Redesign)
작성일: 2026-04-28 목적: 매칭 시스템 (V1~V4) 테스트 결과를 기존 design_agent pipeline 에 통합. AI 호출을 줄이고 결정론적 매칭 + 정밀한 공간 관리를 결합. 상태: 설계 단계. 실행은 사용자 승인 후 단계적 진행.
1. 배경 / 문제의식
기존 pipeline 의 한계
| 문제 | 현황 |
|---|---|
| AI 호출 과다 | Stage 1A / 1B / 1B-ST / 1.7 / 1.8 / 2 / 4 — 5~6 회 호출 |
| Type A/B/B'/B'' 하드코딩 | 콘텐츠별 전용 코드 분기 (오답노트 #2 위반 우려) |
| 블록 catalog 50+ 개 vs 실제 사용 7.9% | Phase P 결과 — 다양성 부족 |
| 유령 블록 / overflow 출력 | Phase Q 에서 일부 해결 |
매칭 시스템 (V1~V4) 테스트 결과
tests/matching/ 에서 별도 검증한 결과:
| 항목 | 결과 |
|---|---|
| TARGET 정답률 | 3/4 (75%) — Logistic Regression 가중치 학습 + LOOCV 4/4 검증 |
| BM25 / IDF 비교 | 현 방식 우위 (4/4 vs 3/4) |
| V4 slot 축 ablation | Top-1 매칭 7/7 동일 — slot 축 frame 선별 무영향 확인 |
| 발견된 약점 | 8 가지 (tests/PROGRESS.md 참조) |
통합 필요성
매칭 시스템이 콘텐츠 분석 / 디자인 추천 부분을 코드로 대체 가능함을 확인. 단, 1280×720 안 정밀 공간 관리는 매칭 시스템이 다루지 않으므로 기존 pipeline 의 공간 관리 로직 (space_allocator, fit_verifier, slide_measurer) 은 유지 필요.
→ 콘텐츠 분석은 매칭 시스템, 공간 관리는 기존 pipeline 으로 책임 분리.
2. 영역 분리 — 3 가지
| 영역 | 무엇을 하나 | 누가 담당 |
|---|---|---|
| A. 콘텐츠 분석 / 디자인 추천 | "이 MDX 콘텐츠에 어떤 디자인이 어울리나?" | 매칭 시스템 V1~V4 (신규) |
| B. 공간 관리 / 사이즈 조정 | "1280×720 안에 어떻게 끼워 넣나? overflow 안 나게?" | 기존 pipeline (유지) |
| C. HTML 생성 / 슬롯 채움 | "선택된 디자인에 MDX 텍스트를 어떻게 넣나?" | 기존 + V4 label 분기 |
핵심 원칙
- A 는 매칭 시스템으로 완전 대체 (AI 호출 줄임)
- B 는 절대 손대지 않음 (정밀한 공간 관리는 기존 로직이 검증됨)
- C 는 매칭 결과의 label 에 따라 분기 (코드 / AI 1회 / Sonnet 재구성)
3. 핵심 결정 사항 (확정)
3.1 처리 단위
MDX 1 파일 = 대목차 1개 = 슬라이드 1장
└ 중목차들 = 슬라이드 안의 frame 들 (조합)
└ 소목차들 = 더 작은 단위 frame 또는 슬롯
3.2 매칭 알고리즘 — 소→중→대 합치기 룰
[1단계] 모든 소목차에 V1~V4 매칭 시도
각 소목차의 best frame 도출
[2단계] 같은 중목차 내 소목차 매칭이 비슷하면 → 중목차로 묶어서 다시 매칭
더 큰 frame 단위로 합치기 가능한지 확인
[3단계] 중목차들이 비슷하면 → 대목차로 묶어서 매칭
슬라이드 1장 전체를 1 frame 으로 처리 가능한지 확인
→ 가장 적합한 합치기 단위 + frame 조합 채택
3.3 레이아웃 프리셋
기존 design_agent 의 4 가지 Type 으로 시작:
| 프리셋 | 조건 | 비고 |
|---|---|---|
| Type A | 참조 자료 (용어 정의 등) 별도 존재 | 기존 그대로 유지 (오답노트 #7) |
| Type B | 본문 흐름만 | 기존 그대로 |
| Type B' | 카드형 + 표 | 기존 그대로 |
| Type B'' | 색상바 + 여백 분리 | 기존 그대로 |
→ 4 개로 시작. 운영하면서 부족하면 추가.
3.4 V4 label 분기
매칭 결과의 label 이 후속 작업 비용을 결정:
| label | confidence | 후속 작업 | 비용 |
|---|---|---|---|
| use_as_is | ≥ 0.90 | 슬롯에 텍스트만 매핑 | 자동, AI 0회 |
| light_edit | ≥ 0.75 | AI 가 슬롯 텍스트 다듬기 | AI 1회 |
| restructure | ≥ 0.60 | 가장 유사 frame 참고 + Sonnet 변형 | 사람 + AI |
| reject | < 0.60 | 대안 frame 시도 → 그래도 안 되면 유사 frame 참고 | 사람 + AI |
3.5 자유 HTML 생성 금지
→ 항상 frame DB 의 어떤 frame 을 참고하여 생성. Phase R' 식 자유 디자인은 X.
3.6 텍스트 원문 보존 원칙 (절대 룰)
슬라이드 본문은 preview / 요약 가능하지만, MDX 원문은 popup / detail 에 무손실 보존한다.
- 슬라이드 본문에 표시되는 것 = 일부 / 핵심 / preview 가능
- 단, 원문이 잘리거나 사라지지 않음 — 항상 팝업 / "자세히 보기" 에 무손실 저장
- "텍스트 압축 / trim / restructure" 같은 처리 금지 (오답노트 #5 준수)
- 안 들어가면 슬라이드를 키우는 게 아니라 → 본문은 preview, 팝업에 원문 보존
- AI 가 텍스트를 "줄여서 채워 넣지" 않는다 — preview 로 가공 후, 원문은 detail 에 보존
3.7 팝업 처리 룰
- MDX 에 팝업 콘텐츠 (
<details>) 가 있으면 별도 보존 - 슬라이드 1장 룰 절대 유지 (2장으로 분리 X)
- 처리: 본문 요약 / 일부만 표시 + "자세히 보기" 클릭 → 팝업으로 전체
- 전체를 팝업으로 빼는 것 X
- 팝업 콘텐츠도 MDX 원문 무손실 (3.6 원칙 적용)
4. 위계 + 용어 정리
4.1 슬라이드 위계
[ 슬라이드 ] 1280 × 720
│
├─ slide-title ← MDX 대목차 제목 (자동 매핑)
├─ slide-divider (고정)
│
├─ slide-body ≈ 1200 × 590 ─ ★ 여기에 콘텐츠
│ │
│ └─ 레이아웃 (Type A / B / B' / B'')
│ │
│ └─ Zone (top / bottom_l / bottom_r 등)
│ │
│ └─ 프레임 (Figma 디자인)
│
└─ slide-footer ← MDX 대목차 결론 (자동 매핑)
4.2 용어
| 용어 | 의미 | 단위 / 위치 |
|---|---|---|
| 슬라이드 | 1280×720 한 장 | 가장 큰 단위 |
| slide-base | 배경 + 제목 + 구분선 + 결론 pill (모든 슬라이드 공통 그릇) | templates/blocks/slide-base.html 고정 |
| slide-body | 본문 가용 영역 (≈ 1200×590) | slide-base 안 |
| 레이아웃 (Layout) | Type A / B / B' / B'' (4 가지 프리셋) | slide-body 안 |
| Zone (영역) | 레이아웃이 결정한 콘텐츠 구역 (top / bottom 등) | 레이아웃 안 |
| 컨테이너 (Container) | zone 의 px 명세 (코드 레벨 표현) | zone 의 구체화 |
| 프레임 (Frame) | Figma 디자인 단위 (= 기존 "블록") | zone 안 |
4.3 MDX → 슬라이드 매핑
| MDX 위치 | 슬라이드 위치 |
|---|---|
# 대목차 제목 |
slide-title |
본문 (## / ### 중·소목차) |
slide-body 안 — 레이아웃 / zone / 프레임 |
# 대목차 결론 (있을 시) |
slide-footer |
<details> 팝업 콘텐츠 |
슬라이드 위 별도 레이어 |
4.4 매칭 시스템 (V1~V4) 의 frame 단위 — 명확화
- 매칭 시스템에서 frame 32 개를 슬라이드 1장 단위로 검증 함 (예: Frame 18 = BIM/DX 비교 슬라이드 통째로)
- 새 흐름에서는 frame = zone 안 디자인 단위
- → frame DB 라벨링 재검토 필요 (사이즈 분류: "슬라이드 전체 / zone 1 개 / 작은 박스")
- 8.1 항목 (32 frame 사이즈 라벨링) 의 핵심 작업
5. 새 Pipeline Flow
═══════════════════════════════════════════════════════════════
[전처리 — 한 번만, 결과 캐싱]
═══════════════════════════════════════════════════════════════
T-0. Figma frame DB 구축
· 각 frame 의 키워드 (핵심/세트/연관) 라벨링 ✅ 완료
· 각 frame 의 구조 (layout, family, relation_type,
cardinality, content_affinity,
structure_intent, slots,
alternative_patterns) 라벨링 ✅ 완료
· 각 frame 의 사이즈 비율 (전체 / 절반 / 1/3 / 박스) ✅ 대체 완료 (Zone 적용 분류 — `docs/architecture/FRAME-INTEGRATION-MAP.md` 의 `zone_direct/adapt/extract/reference_only`)
· 각 frame 의 스타일 / 시각 언어 인벤토리 ✅ 완료 (`docs/architecture/PHASE-Z-FRAME-STYLE-INVENTORY.md`)
T-1. (새 frame 추가 시) 자동 라벨링 룰
· 새 Figma frame 입력 → V3 의 detect_mdx_v2_profile 로 자동 감지
· 사람이 검수 후 DB 추가
T-2. 레이아웃 프리셋 정의 (4 개)
· 각 프리셋의 grid / area 정의
· 어떤 frame 사이즈 조합에 어울리나 메타 정보
═══════════════════════════════════════════════════════════════
[실행 — MDX 1 파일 처리 = 슬라이드 1 장 생성]
═══════════════════════════════════════════════════════════════
STAGE 1) MDX 분석 + 레이아웃 매칭 [코드]
· MDX 정규화 + 외부 컴포넌트 인라인 (Phase Y)
· 팝업 콘텐츠 (<details>) 별도 보존
· 대 / 중 / 소목차 트리 추출
· 콘텐츠 성격 분석 (V3 의 detect_mdx_v2_profile)
· 4 가지 레이아웃 (Type A / B / B' / B'') 중 1 개 결정
· MDX 대목차 제목 → slide-title
· MDX 대목차 결론 → slide-footer
STAGE 2) Zone 별 텍스트 1 차 배치 [코드]
· 레이아웃이 결정한 zone 들에 콘텐츠 분배
· 어떤 중 / 소목차가 어떤 zone 에 갈지 결정
· 컨테이너 (zone 의 px) 계산 — space_allocator.py
STAGE 3) Zone 별 프레임 매칭 (V1~V4 매칭 시스템) [코드 + label 분기 AI]
┌──────────────────────────────────────────────┐
│ 각 zone 의 콘텐츠와 Figma 프레임 DB 매칭 │
│ V1 키워드 → V2 의미 → V3 구조 → V4 종합 판정 │
│ │
│ 매칭 결과 분기: │
│ ├ 매칭 완벽 (use_as_is) → 텍스트 업데이트 │
│ ├ 매칭 어정쩡 (light_edit │
│ │ / restructure) → 디자인 참고 │
│ │ 재구성 (Sonnet) │
│ └ 매칭 안 됨 (reject) → 디자인 컨셉 │
│ 바탕 재구성 │
│ │
│ 자유 디자인 금지 — 항상 프레임 DB 참고 │
└──────────────────────────────────────────────┘
STAGE 4) 프레임 내용 검토 + 컨테이너 조정 [코드 + AI fallback]
· zone 별 검증 (넘침 / 공란 / 적정 / 불균형)
· 보정:
├ 넘침 → 본문 미리보기 + "자세히 보기" 팝업
│ (MDX 원문 절대 줄이지 않음 — 3.6 원칙)
├ 공란 → MDX 팝업 콘텐츠 있으면 일부 끌어옴
├ 적정 → 그대로
└ 불균형 → 레이아웃 자체 부적절 → STAGE 1 회귀
(5 차 Fallback — 6 장 참조)
STAGE 5) HTML 조립 + 검증 + 출력 [코드 + AI]
· slide-base.html (배경 + 제목 + 구분선 + 결론 pill)
+ slide-body 안 (레이아웃 + zone + 프레임)
+ slide-title / slide-footer 채움
+ 팝업 레이어
· Jinja2 렌더링
· 실측 검증 (Selenium) — 넘침 차단
· 시각 검증 (Vision — Opus) — 품질 평가
· final.html 출력
6. 컨테이너 검증 + Fallback 룰 (STAGE 4 상세)
6.1 검증 케이스 분류
[모든 컨테이너 검증 결과 종합]
케이스 1) 모두 적정
→ 다음 단계 진행
케이스 2) 일부 Overflow + 나머지 적정
→ 본문 요약 + "자세히 보기" 팝업 처리
케이스 3) 일부 Underflow (특정 컨테이너만 공란) + 나머지 정상
❗ 레이아웃 잘못 → STAGE 1 회귀 (레이아웃 재선택)
케이스 4) 일부 Overflow + 일부 Underflow 동시
❗ 레이아웃 잘못 (불균형) → STAGE 1 회귀 (레이아웃 재선택)
케이스 5) 모두 Underflow + 채울 콘텐츠 없음
✅ 공란 허용 (콘텐츠 자체가 적은 슬라이드)
6.2 5 차 Fallback (불균형 검출 시)
[1차] 매칭 → 적합 프리셋 → 검증
OK → 종료
불균형 → 2차
[2차] 다른 프리셋 시도 (예: Type B → Type B')
또는 frame 합치기 단위 변경 (소→중 또는 중→대)
OK → 종료
불균형 → 3차
[3차] 매칭 결과 자체 변경 (Top-1 → Top-2 frame)
OK → 종료
불균형 → 4차
[4차] AI 콘텐츠 조정 의뢰 (Sonnet 1회)
현재 매칭된 frame / zone / container 는 유지한 채,
zone 안 콘텐츠 분량과 슬롯 매핑만 AI 로 조정한다.
· 긴 텍스트 → 본문 preview + 팝업 원문 분리 제안
· 슬롯 의미 매핑 미세 조정
· 불필요한 반복 표현을 preview 에서 정리
· 원문은 popup / detail 에 무손실 보존
⚠️ AI 는 zone 안 콘텐츠만 조정한다.
⚠️ 레이아웃 / 프리셋 / 새 frame 결정 / HTML 구조 생성은 코드만 수행한다.
OK → 종료
안 되면 → 5차
[5차] 단일 프리셋 강제 (Type A 또는 가장 큰 frame 만 사용)
나머지 콘텐츠 → "자세히 보기" 팝업
OK → 종료
그래도 안 되면 → 사람 개입 알림
6.3 Fallback 단계별 비율 추정
| 단계 | 종료 비율 (가설) | 비용 |
|---|---|---|
| 1차 | 80%+ | 낮음 (코드만) |
| 2~3차 | 15% | 낮음 (코드만) |
| 4차 (AI) | 4% | 중간 |
| 5차 (단일 + 팝업) | 1% 이하 | 낮음 |
| 사람 개입 | 매우 드물게 | 최후 수단 |
→ 실제 비율은 MDX 데이터로 검증 필요. 일단 가설.
7. 단계적 진행 계획
Phase Z-0 — 매칭 시스템 (✅ 완료)
✅ V1~V4 매칭 시스템 구축
✅ 32 frame 키워드 + 구조 라벨링
✅ TARGET 3/4 정답
✅ 보고서 (DECK 1~7)
Phase Z-1 사전 작업 — 진행 중
✅ 완료 (2026-04-28)
· Frame Integration Map (32 frame Zone 적용 분류)
→ docs/architecture/FRAME-INTEGRATION-MAP.md
· Frame Style Inventory (32 frame + 18 token + 6 legacy)
→ docs/architecture/PHASE-Z-FRAME-STYLE-INVENTORY.md
⬜ 미진행 (Phase Z-1 본격 진입 전)
· catalog / runtime 설계 prep
· slide-base 검증
⚠️ 미실행 / 의도적으로 보류 (승인 전)
· 기존 templates/blocks 삭제 / 교체
· catalog / runtime 구현
· templates/styles/frame-patterns 신규 파일 생성
· 새 token (gap_candidate) 추가
Phase Z-1 — 통합 prototype (본격)
[목표] MDX 03 (회귀 기준) 으로 매칭 시스템 + 기존 pipeline 통합 검증
작업:
· Stage 1.7 (블록 선택) 만 V4 로 교체
· 32 frame ↔ Type B/B'/B'' 매핑 테이블 작성
· MDX 03 결과 기존과 비교 (회귀 통과)
완료 기준:
· MDX 03 기존 결과 대비 overflow 없음
· 텍스트 누락 없음 (MDX 원문 무손실 보존, 3.6 원칙)
· AI 호출 수 감소 (Stage 1.7 의 Kei 1회 제거)
· 옵션 플래그 off 시 동일 경로 복귀 (회귀 방지)
리스크: 낮음 (한 곳만 교체)
산출물: 매칭 시스템이 기존 pipeline 안에서 작동 확인
Phase Z-2 — 매칭 + 프리셋 통합
[목표] Type A/B/B'/B'' 프리셋과 매칭 결과 연결
작업:
· 매칭 결과 → 4 프리셋 중 1 개 자동 선택 룰
· 합치기 룰 (소→중→대) 구현
· MDX 02, 01 적용 검증
완료 기준:
· MDX 03 / 02 / 01 모두 매칭 + 프리셋 자동 선택 작동
· 합치기 룰이 소목차 → 중목차 → 대목차 순서로 작동
· MDX 원문 무손실 유지 (3.6 원칙)
리스크: 중간
산출물: MDX 03/02/01 모두 매칭 + 프리셋 자동
Phase Z-3 — 컨테이너 검증 + Fallback
[목표] 컨테이너 별 검증 + 5 차 Fallback 로직
작업:
· 불균형 검출 룰 (Overflow / Underflow / 동시)
· STAGE 4 의 1~5 차 Fallback 단계 구현
· 팝업 처리 룰 (안 들어가면 자세히 보기)
완료 기준:
· 컨테이너 별 검증 (Overflow / Underflow / 불균형) 작동
· Fallback 5 차 단계 작동 (각 단계 독립 검증)
· 팝업 처리 — preview 본문 + 무손실 팝업
리스크: 중간 ~ 높음
산출물: 안정적 자동 처리
Phase Z-4 — 전체 통합 + 검증
[목표] 새 pipeline 으로 모든 MDX 처리 + 회귀 확인
작업:
· MDX 03 / 02 / 01 회귀
· Selenium + Vision 검증
· AI 호출 수 / 처리 시간 측정
완료 기준:
· MDX 03 / 02 / 01 모두 새 pipeline 통과
· Vision 품질 평가 합격
· AI 호출 수 / 처리 시간 기존 대비 감소
산출물: 새 pipeline 완성
8. 검토 / 결정 필요한 항목
8.1 32 frame 의 사이즈 라벨링
frame DB 에 "이 frame 은 슬라이드 전체 / 위 절반 / 좌측 1/3 / 작은 박스" 같은 사이즈 분류 필요.
| 옵션 | 방법 |
|---|---|
| (a) 사용자 직접 분류 | 정확하지만 시간 소요 |
| (b) Figma 캔버스 사이즈 자동 추정 | 빠르지만 부정확 가능 |
| (c) 매칭 시스템의 기존 라벨 (layout) 활용 + 보완 | 절충 |
→ 추천 (c) : 기존 layout 라벨 (compare-rows / table-2col / cards-3col 등) 을 사이즈 라벨에 매핑하는 룰 작성.
8.2 프리셋 자동 선택 룰
frame 들의 사이즈 / 개수 → 4 프리셋 중 1 개 선택하는 룰.
예시:
- frame 1 개 + 사이즈 = 슬라이드 전체 → Type A 또는 Type B 단일
- frame 2 개 + 사이즈 = 위/아래 절반 → Type B (상단 + 하단)
- frame 2 개 + 사이즈 = 좌/우 절반 → Type A (사이드바)
8.3 합치기 룰 종료 조건
소→중→대 합치기 룰에서 어디까지 합칠지 결정:
- 소목차 매칭 결과가 "비슷" 하다는 기준은?
- 같은 frame_id ? 같은 layout family ? V4 axes 일부 일치 ?
8.4 슬롯 매핑 — 코드 + AI 하이브리드 비율
- 어디까지 코드 휴리스틱? (제목 → title 같은 명확한 것)
- 어디부터 AI? (의미 매핑 / 사이즈 조정 / 텍스트 다듬기)
9. 회귀 방지 / 안전 원칙
9.1 기존 작동 코드 보존
- Type A 코드 (오답노트 #7) — 절대 건드리지 않음
- 공간 관리 로직 (
space_allocator,fit_verifier,slide_measurer) — 그대로 유지 - Phase Y 진행 중 작업 — MDX 외부 컴포넌트 처리 그대로
9.2 회귀 검증
- 단계마다 MDX 03 (회귀 기준) 결과 기존과 비교
- 변경 전 / 변경 후 다음 항목 측정:
- 최종 HTML 의 시각 결과 (스크린샷 비교)
- AI 호출 수
- 처리 시간
- overflow 발생 여부
9.3 옵션 플래그 도입
USE_MATCHING_SYSTEM = False # 기본값
- 새 기능은 플래그로 도입
- 문제 발생 시 즉시 기존 경로로 fallback
- 안정화 후 기본값 True
9.4 핵심 원칙 (오답노트.md 준수)
- 거짓말 금지 — 못 하면 못 한다고 명시
- 하드코딩 금지 — 결과물 고치지 말고 프로세스 고침
- 검증 없이 넘어가지 마라 — 단계마다 실측 + 회귀
- 텍스트 원문 무손실 보존 — 슬라이드 본문은 preview / 일부만 표시 가능, MDX 원문은 팝업 / detail 에 무손실 보존 (3.6 원칙)
- 프로세스 만들어라 — 매번 사고하여 판단 (AI 든 코드든)
10. 참고 문서
우선순위 — 충돌 시 어느 문서가 최신인가
매칭 시스템 관련:
- ✅ 최신 기준 =
tests/PIPELINE.md(V1~V4 통합 정리) - ⚠️
tests/matching/CURRENT_STATUS.md등 옛 문서는 과거 기록 (참조 X) - 옛 문서에 "V2/V3/V4 미완료" 로 적혀 있어도 무시. 실제는 모두 완료.
design_agent 전체:
- ✅ 최신 기준 =
PIPELINE.md+ 이 문서 (IMPROVEMENT-REDESIGN.md) - ⚠️
ARCHITECTURE_OVERVIEW.md는 deprecated (2026-03-27 스냅샷, Type A/B 분기 등 미반영)
매칭 시스템 (V1~V4)
| 문서 | 위치 |
|---|---|
| 매칭 시스템 V1~V4 통합 정리 | tests/PIPELINE.md |
| 매칭 시스템 진행 / 약점 | tests/PROGRESS.md |
| 매칭 시스템 단계별 계획 | tests/PLAN.md |
| 매칭 시스템 코드 + 결과 + 보고서 | tests/pipeline/ |
| 매칭 시스템 원본 (보존) | tests/matching/ |
기존 design_agent
| 문서 | 위치 |
|---|---|
| 현재 pipeline 흐름 | PIPELINE.md |
| 전체 Phase 이력 | PROGRESS.md |
| 단계별 계획 | PLAN.md |
| 절대 원칙 | 오답노트.md |
| 프로젝트 규칙 | CLAUDE.md |
| README | README.md |
보고서 (임원 보고용)
| 문서 | 위치 |
|---|---|
| DECK 1~7 (TARGET / Holdout / 방법 / DB / 키워드) | tests/pipeline/reports/DECK_*.html |
11. 리스크 + 대응 방안
설계안에서 실행계획으로 넘어갈 때 고려해야 할 리스크.
| # | 리스크 | 대응 방안 |
|---|---|---|
| 1 | V4 가 디자인 적합성은 보지만 공간 적합성은 보지 않음 | 기존 공간 관리 (B 영역, space_allocator / fit_verifier) 그대로 유지. STAGE 4 컨테이너 검증으로 보완. V4 confidence 와 별개로 컨테이너 단위 overflow / underflow 측정 |
| 2 | slot 의미 매핑 부재 (BIM → col_a_label 같은 매핑 없음) | STAGE 3 (zone 별 프레임 매칭) 의 슬롯 매핑에 AI 1회 호출 (Sonnet). 또는 frame DB 에 매핑 룰 사전 정의. 매칭 시스템의 slot 축 ablation 결과 — 이 영역은 별도 작업 필요 |
| 3 | 32 frame DB 의 사이즈 라벨 부족 | 8.1 항목 결정 후 라벨링 작업 (사용자 직접 또는 매칭 시스템의 layout 라벨 활용). Phase Z-1 시작 전 완료 필요 |
| 4 | 기존 Type B'/B'' 하드코딩 관성 재발 위험 | 4 프리셋 안에서만 조합. 새 콘텐츠별 전용 코드 절대 금지 (오답노트 #2). 새 변형 필요 시 — 코드 분기 추가 X, frame DB 또는 프리셋 추가로 해결 |
| 5 | 보고서용 매칭 성능 ≠ 실제 렌더 품질 | TARGET 3/4 정답률은 매칭 단독 성능. 실제 슬라이드 품질은 Phase Z-1 ~ Z-4 단계마다 MDX 03 실 렌더 + Vision 평가 회귀 |
| 6 | MDX 분석 키워드 사전의 부정확성 (V3) | Hybrid 룰 — 코드 자동 + Kei fallback (신뢰도 낮을 때). 또는 추후 LLM 분석으로 교체 (tests/PROGRESS.md 의 Phase E.1, E.2) |
| 7 | 합치기 룰 (소→중→대) 무한 재시도 위험 | Fallback 5 차로 명확히 종료 (STAGE 4). 각 단계 최대 1 회 시도. 5 차 후엔 사람 개입 알림 |
| 8 | 매칭 시스템의 02-2.2 매칭 실패 사례 | 매칭 시스템 자체 약점 (tests/PROGRESS.md 약점 #1). Phase Z-1 진행 전 frame 14 의 anchor_sets 재라벨링 필요 (사전 작업) |
다음 단계
- 이 문서 검토 — 사용자 + 협업자
- 검토 사항 (7장) 결정 — 4 가지 항목
- 리스크 대응 (11장) 사전 작업 — 32 frame 사이즈 라벨링 + frame 14 재라벨링
- Phase Z-1 시작 — 통합 prototype
- 단계별 회귀 검증 — MDX 03 기준