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>
This commit is contained in:
2026-07-02 17:03:42 +09:00
co-authored by Claude Opus 4.8
parent 97b7833a1b
commit b836e79ee1
527 changed files with 673036 additions and 717 deletions
@@ -90,10 +90,40 @@ Asset path runtime resolution :
}
.f14b__cols {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
grid-auto-rows: minmax(0, 1fr);
gap: 10px;
flex: 1 1 auto;
min-height: 0;
overflow: hidden;
}
.f14b__intro {
flex: 0 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 6px;
max-height: 76px;
overflow: hidden;
}
.f14b__intro-card {
border: 1px solid rgba(40, 91, 74, 0.35);
border-radius: 8px;
background: rgba(255, 255, 255, 0.72);
padding: 5px 8px;
min-width: 0;
overflow: hidden;
}
.f14b__intro-label {
font-size: var(--font-caption);
line-height: var(--lh-caption);
font-weight: 700;
color: #285b4a;
margin-bottom: 2px;
}
.f14b__intro-body .text-line {
font-size: var(--font-caption);
line-height: var(--lh-caption);
color: #1a1a1a;
}
.f14b__col {
position: relative;
@@ -223,10 +253,36 @@ Asset path runtime resolution :
opacity: 0.7; /* index.html L53 — opacity 0.70 */
display: block;
}
.f14b--with-intro .f14b__intro { max-height: 56px; }
.f14b--with-intro .f14b__badge {
width: 46px;
height: 46px;
margin: 3px auto 2px;
}
.f14b--with-intro .f14b__body {
padding: 2px 8px 5px;
}
.f14b--with-intro .f14b__photo {
display: none;
}
</style>
<div class="f14b" data-frame-id="1171281191" data-template-id="three_persona_benefits">
<div class="f14b{% if slot_payload.intro_sections %} f14b--with-intro{% endif %}" data-frame-id="1171281191" data-template-id="three_persona_benefits">
<div class="f14b__title">{{ slot_payload.title }}</div>
{% if slot_payload.intro_sections %}
<div class="f14b__intro">
{% for section in slot_payload.intro_sections %}
<div class="f14b__intro-card">
{% if section.label %}<div class="f14b__intro-label">{{ section.label | safe }}</div>{% endif %}
{% if section.body %}
<div class="f14b__intro-body">
{% for line in section.body %}<div class="text-line{% if line.indent > 0 %} text-line--indent-{{ line.indent }}{% endif %}">{{ line.text | safe }}</div>{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
<div class="f14b__cols">
{% for persona in slot_payload.personas %}
<div class="f14b__col f14b__col--{{ persona.color_class }}">
@@ -258,11 +314,11 @@ Asset path runtime resolution :
{# bottom photo — per persona 실사 사진 #}
<div class="f14b__photo">
{% if persona.color_class == "client" %}
<img src="assets/three_persona_benefits/d2c070f200af83f563976b6b0f309d38321d204d.png" alt="">
<img src="assets/three_persona_benefits/d2c070f200af83f563976b6b0f309d38321d204d.png" alt="" data-allow-aspect-crop="1">
{% elif persona.color_class == "constructor" %}
<img src="assets/three_persona_benefits/2a6a58e7bf7a645b5ede65115feb2890ccc414d1.png" alt="">
<img src="assets/three_persona_benefits/2a6a58e7bf7a645b5ede65115feb2890ccc414d1.png" alt="" data-allow-aspect-crop="1">
{% elif persona.color_class == "designer" %}
<img src="assets/three_persona_benefits/39113493f6e3ae76d766e86e293b0f0dcbf55d91.png" alt="">
<img src="assets/three_persona_benefits/39113493f6e3ae76d766e86e293b0f0dcbf55d91.png" alt="" data-allow-aspect-crop="1">
{% endif %}
</div>
</div>