Files
KyeongminandClaude Opus 4.8 b836e79ee1 wip: phase_z2 evidence 파이프라인 + matching 실험(phase2~26) + 프론트 trace 패널 진행분 스냅샷
- src: phase_z2 composition/mapper/pipeline/placement_planner/retry, ai_fallback(prompts/schema/validate), mdx_text_atoms 신규
- Front: PipelineTracePanel 신규, FramePanel/SlideCanvas/Home/designAgentApi 등 갱신 + 테스트 4종 추가
- templates/phase_z2: catalog(component_expansion_registry, node_slot_mapping 신규), frames, families, slide_base 갱신
- tests/matching: phase2~26 매칭 실험 스크립트·리포트·온톨로지 전체 (미커밋 진행분)
- tests: b4_v4 evidence, task5~28.5 시리즈, regression(imp95 baseline) 등 신규 테스트 대량 추가
- docs/reference: MDX 구조 인벤토리, MDX→Frame 구조 계약 문서
- scripts: mdx 계약/parity/coverage/viewport 체크, gitea comment, run sync 유틸
- .gitignore: tmp*.json, chromedriver, .orchestrator, *.pkl, Front_test* 등 임시/스냅샷 제외

미완성 작업의 보존용 스냅샷 커밋 (2026-07-02)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 17:03:42 +09:00

459 lines
14 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ko">
<head><meta charset="utf-8"><title>templates_v1 감사</title><style>
body { font-family: -apple-system, "Segoe UI", Pretendard, sans-serif; max-width: 1300px; margin: 2em auto; padding: 0 1.5em 4em; line-height: 1.65; color: #222; background: #f8fafc; }
h1 { border-bottom: 3px solid #2563eb; padding-bottom: 0.25em; }
h2 { margin-top: 2.5em; background: #e0e7ff; padding: 0.6em 0.9em; border-left: 4px solid #0a6; border-radius: 4px; }
h3 { margin-top: 1.5em; color: #1a365d; }
table { border-collapse: collapse; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.05); margin: 0.5em 0 1em; }
th, td { border: 1px solid #e2e8f0; padding: 8px 10px; text-align: left; vertical-align: top; }
th { background: #1e293b; color: #fff; font-weight: 700; text-align: center; }
code { background: #f4f4f4; padding: 1px 6px; border-radius: 3px; font-size: 0.9em; color: #111; }
strong { color: #0a6; }
</style></head>
<body>
<h1>templates_v1 + _COMPAT 구조 기준 갭 감사</h1>
<p><em>V3 의 "대안 탐색" 역할이 현재 세팅에서 왜 약한지 수치/사례로 규명. C.2 taxonomy v2 설계의 근거 자료.</em></p>
<h2>1. _COMPAT 커버리지 — V3 구분력의 근본 한계</h2>
<ul>
<li>전체 가능 쌍: <strong>11 MDX layouts × 30 Figma layouts = 330 쌍</strong></li>
<li>_COMPAT 에 실제 정의된 쌍: <strong>86 / 330 (26.1%)</strong></li>
<li>정의 안 된 쌍 (fallback 0.15): <strong>244 쌍 (73.9%)</strong></li>
</ul>
<h3>MDX layout 별 커버리지</h3>
<table>
<thead>
<tr>
<th>MDX layout</th>
<th style="text-align: right;">_COMPAT 정의 쌍</th>
<th style="text-align: right;">커버 Figma 유형</th>
<th style="text-align: right;">총 유형</th>
<th style="text-align: right;">커버리지</th>
<th style="text-align: right;">fallback 유형 수</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>3col-parallel</code> <strong>[섹션 03-1, 01-1, 02-1]</strong></td>
<td style="text-align: right;">12</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">30.0%</td>
<td style="text-align: right;">21</td>
</tr>
<tr>
<td><code>cards-4</code></td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">16.7%</td>
<td style="text-align: right;">25</td>
</tr>
<tr>
<td><code>compare-2banner</code> <strong>[섹션 03-2]</strong></td>
<td style="text-align: right;">12</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">33.3%</td>
<td style="text-align: right;">20</td>
</tr>
<tr>
<td><code>compare-2col</code></td>
<td style="text-align: right;">12</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">33.3%</td>
<td style="text-align: right;">20</td>
</tr>
<tr>
<td><code>compare-rows</code> <strong>[섹션 01-2]</strong></td>
<td style="text-align: right;">8</td>
<td style="text-align: right;">6</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">20.0%</td>
<td style="text-align: right;">24</td>
</tr>
<tr>
<td><code>multi-parallel</code></td>
<td style="text-align: right;">8</td>
<td style="text-align: right;">6</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">20.0%</td>
<td style="text-align: right;">24</td>
</tr>
<tr>
<td><code>multi-section</code></td>
<td style="text-align: right;">6</td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">16.7%</td>
<td style="text-align: right;">25</td>
</tr>
<tr>
<td><code>persona-3col</code> <strong>[섹션 02-2.2]</strong></td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">23.3%</td>
<td style="text-align: right;">23</td>
</tr>
<tr>
<td><code>single-column</code> <strong>[섹션 02-2.1]</strong></td>
<td style="text-align: right;">17</td>
<td style="text-align: right;">14</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">46.7%</td>
<td style="text-align: right;">16</td>
</tr>
<tr>
<td><code>table-2col</code></td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">23.3%</td>
<td style="text-align: right;">23</td>
</tr>
<tr>
<td><code>table-3col</code></td>
<td style="text-align: right;">8</td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;">23.3%</td>
<td style="text-align: right;">23</td>
</tr>
</tbody>
</table>
<h2>2. MDX layout 별 "대안 탐색" 풍부도</h2>
<p>각 MDX layout 에 대해 _COMPAT 에서 compat ≥ 0.7 인 Figma layout 이 몇 개 있나.
값이 작으면 그 MDX 구조에 "대안이 없음" — V3 가 대안을 제시할 재료가 부족한 상태.</p>
<table>
<thead>
<tr>
<th>MDX layout</th>
<th style="text-align: right;">고호환 (≥0.7)</th>
<th style="text-align: right;">중 (0.4~0.7)</th>
<th style="text-align: right;">저 (&lt;0.4)</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>3col-parallel</code></td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">1</td>
</tr>
<tr>
<td><code>cards-4</code></td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">3</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><code>compare-2banner</code></td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">3</td>
</tr>
<tr>
<td><code>compare-2col</code></td>
<td style="text-align: right;">6</td>
<td style="text-align: right;">3</td>
<td style="text-align: right;">3</td>
</tr>
<tr>
<td><code>compare-rows</code></td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><code>multi-parallel</code></td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><code>multi-section</code></td>
<td style="text-align: right;">3</td>
<td style="text-align: right;">3</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><code>persona-3col</code></td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">2</td>
</tr>
<tr>
<td><code>single-column</code></td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">12</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><code>table-2col</code></td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">3</td>
<td style="text-align: right;">1</td>
</tr>
<tr>
<td><code>table-3col</code></td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">0</td>
</tr>
</tbody>
</table>
<h2>3. structure_intent 분포</h2>
<ul>
<li>고유 intent 수: <strong>10</strong></li>
<li>전체 태그 수: 17</li>
<li>1 프레임만 쓰는 고아 intent: 6 — 많음 (구조 재사용 약함)</li>
</ul>
<table>
<thead>
<tr>
<th>intent</th>
<th style="text-align: right;">빈도</th>
<th>프레임</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>multi_attribute_comparison</code></td>
<td style="text-align: right;">5</td>
<td>18, 23, 24, 30, 31</td>
</tr>
<tr>
<td><code>concept_comparison</code></td>
<td style="text-align: right;">2</td>
<td>18, 23</td>
</tr>
<tr>
<td><code>problem_diagnosis</code></td>
<td style="text-align: right;">2</td>
<td>28, 17</td>
</tr>
<tr>
<td><code>industry_comparison</code></td>
<td style="text-align: right;">2</td>
<td>30, 31</td>
</tr>
<tr>
<td><code>requirement_list</code></td>
<td style="text-align: right;">1</td>
<td>13</td>
</tr>
<tr>
<td><code>persona_benefit</code></td>
<td style="text-align: right;">1</td>
<td>14</td>
</tr>
<tr>
<td><code>process_product_split</code></td>
<td style="text-align: right;">1</td>
<td>29</td>
</tr>
<tr>
<td><code>transformation_story</code></td>
<td style="text-align: right;">1</td>
<td>29</td>
</tr>
<tr>
<td><code>category_comparison</code></td>
<td style="text-align: right;">1</td>
<td>24</td>
</tr>
<tr>
<td><code>requirement_or_pillar</code></td>
<td style="text-align: right;">1</td>
<td>20</td>
</tr>
</tbody>
</table>
<p><strong>판정</strong>: 10개 intent, 32 프레임 — controlled vocabulary 느낌은 있으나 어휘 자체가 풍부하지 않음. 새 MDX 유형이 오면 기존 intent 에 억지로 매핑해야 할 가능성.</p>
<h2>4. slot 체계</h2>
<ul>
<li>고유 slot id: <strong>146</strong></li>
<li>프레임당 slot 수: 평균 6.3 · 최소 2 / 최대 10</li>
</ul>
<h3>가장 자주 쓰이는 slot id (Top 10)</h3>
<table>
<thead>
<tr>
<th>slot id</th>
<th style="text-align: right;">프레임 수</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>title</code></td>
<td style="text-align: right;">30</td>
</tr>
<tr>
<td><code>col_a_label</code></td>
<td style="text-align: right;">6</td>
</tr>
<tr>
<td><code>col_b_label</code></td>
<td style="text-align: right;">6</td>
</tr>
<tr>
<td><code>rows</code></td>
<td style="text-align: right;">5</td>
</tr>
<tr>
<td><code>col_c_label</code></td>
<td style="text-align: right;">3</td>
</tr>
<tr>
<td><code>pillar_1_label</code></td>
<td style="text-align: right;">2</td>
</tr>
<tr>
<td><code>pillar_2_label</code></td>
<td style="text-align: right;">2</td>
</tr>
<tr>
<td><code>pillar_3_label</code></td>
<td style="text-align: right;">2</td>
</tr>
<tr>
<td><code>category_1_label</code></td>
<td style="text-align: right;">2</td>
</tr>
<tr>
<td><code>category_2_label</code></td>
<td style="text-align: right;">2</td>
</tr>
</tbody>
</table>
<h2>5. V3 실패 사례 분해 (Holdout 평가 기준)</h2>
<p>V3 가 비합리/애매 판정 받은 섹션: 3 건.</p>
<h3>01-1 — 1. 용어 정의</h3>
<ul>
<li>MDX layout (코드 추출): <code>3col-parallel</code></li>
<li>V3 판정: <strong>ambiguous</strong> (30점)</li>
</ul>
<table>
<thead>
<tr>
<th></th>
<th>V3 가 올린 Top-1</th>
<th>V1 이 잡은 1위</th>
</tr>
</thead>
<tbody>
<tr>
<td>Frame</td>
<td>20</td>
<td>1</td>
</tr>
<tr>
<td>fig_layout</td>
<td><code>3col-cards</code></td>
<td><code>circular-nodes</code></td>
</tr>
<tr>
<td>structure_compat</td>
<td><strong>0.9</strong></td>
<td><strong>0.15</strong></td>
</tr>
<tr>
<td>structure_intent</td>
<td>['requirement_or_pillar']</td>
<td>[]</td>
</tr>
</tbody>
</table>
<p><strong>진단</strong>: V3 가 올린 Frame 20 의 구조 호환도가 V1 의 합리적 1위 Frame 1 과 같거나 높음. 즉 _COMPAT 만으로는 <strong>의미적으로 더 맞는 프레임을 골라낼 근거 부족</strong>. structure_intent 나 content_affinity 같은 <strong>2차 신호</strong> 가 없어서 동일 layout family 안에서 분별이 안 됨.</p>
<h3>02-1 — 1. DX의 궁극적 목표</h3>
<ul>
<li>MDX layout (코드 추출): <code>3col-parallel</code></li>
<li>V3 판정: <strong>irrational</strong> (0점)</li>
</ul>
<table>
<thead>
<tr>
<th></th>
<th>V3 가 올린 Top-1</th>
<th>V1 이 잡은 1위</th>
</tr>
</thead>
<tbody>
<tr>
<td>Frame</td>
<td>20</td>
<td>12</td>
</tr>
<tr>
<td>fig_layout</td>
<td><code>3col-cards</code></td>
<td><code>cycle-3way</code></td>
</tr>
<tr>
<td>structure_compat</td>
<td><strong>0.9</strong></td>
<td><strong>0.15</strong></td>
</tr>
<tr>
<td>structure_intent</td>
<td>['requirement_or_pillar']</td>
<td>[]</td>
</tr>
</tbody>
</table>
<p><strong>진단</strong>: V3 가 올린 Frame 20 의 구조 호환도가 V1 의 합리적 1위 Frame 12 과 같거나 높음. 즉 _COMPAT 만으로는 <strong>의미적으로 더 맞는 프레임을 골라낼 근거 부족</strong>. structure_intent 나 content_affinity 같은 <strong>2차 신호</strong> 가 없어서 동일 layout family 안에서 분별이 안 됨.</p>
<h3>02-2.1 — 2.1 업무 수행 과정(Process)의 변화</h3>
<ul>
<li>MDX layout (코드 추출): <code>single-column</code></li>
<li>V3 판정: <strong>irrational</strong> (0점)</li>
</ul>
<table>
<thead>
<tr>
<th></th>
<th>V3 가 올린 Top-1</th>
<th>V1 이 잡은 1위</th>
</tr>
</thead>
<tbody>
<tr>
<td>Frame</td>
<td>3</td>
<td>11</td>
</tr>
<tr>
<td>fig_layout</td>
<td><code>list-numbered</code></td>
<td><code>3-category</code></td>
</tr>
<tr>
<td>structure_compat</td>
<td><strong>0.85</strong></td>
<td><strong>0.15</strong></td>
</tr>
<tr>
<td>structure_intent</td>
<td>[]</td>
<td>[]</td>
</tr>
</tbody>
</table>
<p><strong>진단</strong>: V3 가 올린 Frame 3 의 구조 호환도가 V1 의 합리적 1위 Frame 11 과 같거나 높음. 즉 _COMPAT 만으로는 <strong>의미적으로 더 맞는 프레임을 골라낼 근거 부족</strong>. structure_intent 나 content_affinity 같은 <strong>2차 신호</strong> 가 없어서 동일 layout family 안에서 분별이 안 됨.</p>
<h2>6. 결론 + taxonomy v2 설계 방향</h2>
<h3>주요 갭 3가지</h3>
<ol>
<li><strong>_COMPAT 커버리지 26.1% — 2/3 쌍이 fallback 0.15</strong>. V3 의 "구분력" 자체가 약함. 수동 테이블이 아니라 <strong>자동 계산 가능한 관계 그래프</strong> 필요.</li>
<li><strong>structure_intent 10개 — 어휘 얕음</strong>. 같은 layout family 안에서 프레임 간 의미 구분 불가. <strong>더 세분화된 의도 taxonomy + controlled vocabulary</strong> 필요.</li>
<li><strong>"대안 레이아웃" 필드 없음</strong>. 현재 스키마는 "이 layout 은 무엇인가" 만 기술. "이 layout 이 못 담는 콘텐츠 유형 / 대체 가능한 layout" 을 추가해야 V3 가 대안 탐색을 할 수 있음.</li>
</ol>
<h3>v2 taxonomy 에 추가할 필드 (제안)</h3>
<ul>
<li><code>content_affinity</code>: 이 layout 이 선호하는 콘텐츠 성격 enum (concept_definition / quantitative_compare / persona_benefit / process_steps / policy_requirements / ...)</li>
<li><code>slot_semantic_role</code>: 각 slot 이 담는 의미적 역할 (주체/시점/원인/결과/예시/...)</li>
<li><code>alternative_patterns</code>: 이 layout 의 대안 layout 목록 + 대체 조건</li>
<li><code>structure_intent</code> controlled vocab 정의 (현재 free-form → enum)</li>
<li>layout 관계 그래프 (수동 _COMPAT → 필드 기반 자동 계산)</li>
</ul>
</body></html>