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
+194
View File
@@ -0,0 +1,194 @@
# Priority 5 프레임 검토 리포트 (C.2-b r2)
r1 버그 수정 후 재라벨링. 각 프레임마다 **r1 → r2 변화** 를 함께 표시.
## Frame 03 — 국외 BIM 수행 현황
- layout: `list-numbered-4` (original: `list-numbered`)
- relation_type / cardinality.ideal: `parallel` / 4
### r1 → r2 변화 요약
| 축 | r1 primary | r2 primary | 변경 |
|---|---|---|---|
| content_affinity | `process_steps` | **`stakeholder_roles`** | ✓ |
| structure_intent | `sequence` | **`multi_parallel`** | ✓ |
### r2 content_affinity
- primary: **`stakeholder_roles`**
- secondary: `policy_requirements`
- evidence:
- `primary` (keyword_match) — kw=['수행', '수행'] / rule='수행' 등 키워드가 stakeholder_roles 를 가리킴 / conf=0.7
- `secondary_1` (keyword_match) — kw=['국외', '국외'] / conf=0.65
- `blocked_by_not_suits` — process_steps(['단계', '순서']), concept_comparison(['비교']), capability_requirements(['필수', '요건'])
### r2 structure_intent
- primary: **`multi_parallel`**
- evidence:
- `primary` (content_or_structure) — rule=4개 병렬 / conf=0.75
- `blocked_by_not_suits` — persona_mapping(['주체별']), binary_compare(['2개 비교']), sequence(['단계', '순서'])
### alternative_patterns
| 대안 | confidence | source | reason |
|---|---:|---|---|
| `bullet-cards` | 1.0 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 1.0) |
| `list-stacked` | 1.0 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 1.0) |
| `side-card` | 0.88 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.88) |
| `definition-list` | 0.82 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.82) |
---
## Frame 11 — 시공단계 BIM 모델·정보 활용 구분
- layout: `cards-3-category` (original: `3-category`)
- relation_type / cardinality.ideal: `parallel` / 3
### r1 → r2 변화 요약
| 축 | r1 primary | r2 primary | 변경 |
|---|---|---|---|
| content_affinity | `persona_benefit` | **`concept_definition`** | ✓ |
| structure_intent | `sequence` | **`multi_parallel`** | ✓ |
### r2 content_affinity
- primary: **`concept_definition`**
- secondary: `comparative_matrix`
- evidence:
- `primary` (keyword_match) — kw=['분류', '구분', '분류'] / rule='분류' 등 키워드가 concept_definition 를 가리킴 / conf=0.8
- `secondary_1` (keyword_match) — kw=['다면'] / conf=0.65
- `blocked_by_not_suits` — persona_benefit(['발주자', '설계자', '시공자']), concept_comparison(['비교', '대조', 'vs']), process_steps(['순서']), capability_requirements(['필수', '요건'])
### r2 structure_intent
- primary: **`multi_parallel`**
- secondary: `matrix_coverage`
- evidence:
- `primary` (content_or_structure) — rule=카드 3열 / conf=0.75
- `secondary_1` (keyword_match) — rule=— / conf=0.55
- `blocked_by_not_suits` — persona_mapping(['주체별']), sequence(['순서'])
### alternative_patterns
| 대안 | confidence | source | reason |
|---|---:|---|---|
| `3-section` | 1.0 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 1.0) |
| `3-emphasis` | 0.85 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.85) |
| `3col-parallel` | 0.72 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.72) |
| `3col-cards` | 0.65 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.65) |
| `3col-compare` | 0.65 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.65) |
---
## Frame 12 — 건설산업의 목표 (BIM의 목적)
- layout: `cycle-3way-intersection` (original: `cycle-3way`)
- relation_type / cardinality.ideal: `parallel` / 3
### r1 → r2 변화 요약
| 축 | r1 primary | r2 primary | 변경 |
|---|---|---|---|
| content_affinity | `interrelation` | **`interrelation`** | — |
| structure_intent | `cycle_interrelation` | **`cycle_interrelation`** | — |
### r2 content_affinity
- primary: **`interrelation`**
- secondary: `goal_axes`
- evidence:
- `primary` (keyword_match) — kw=['조화', '교차', '수렴', '3원', '교차', '수렴', '3원'] / rule='조화' 등 키워드가 interrelation 를 가리킴 / conf=0.95
- `secondary_1` (keyword_match) — kw=['목표', '궁극적', '목표', '궁극적'] / conf=0.65
- `blocked_by_not_suits` — persona_benefit(['발주자', '설계자', '시공자']), process_steps(['순서']), capability_requirements(['필수', '요건'])
### r2 structure_intent
- primary: **`cycle_interrelation`**
- secondary: `hierarchy`, `multi_parallel`
- evidence:
- `primary` (content_or_structure) — rule=조화 / conf=0.95
- `secondary_1` (keyword_match) — rule=— / conf=0.55
- `secondary_2` (layout_default) — rule=— / conf=0.55
- `blocked_by_not_suits` — persona_mapping(['주체별']), sequence(['순서']), singleton_emphasis(['문제', '진단', '약점'])
### alternative_patterns
| 대안 | confidence | source | reason |
|---|---:|---|---|
| `3col-parallel` | 0.7 | manual_seed | 3개 요소를 순환 대신 평면 병렬 나열로 표현하는 대안 |
| `circular-nodes` | 0.6 | manual_seed | N개 요소를 radial 로 배치하는 대안 |
---
## Frame 20 — 디지털 전환(DX)은 S/W가 필수다
- layout: `cards-3-header` (original: `3col-cards`)
- relation_type / cardinality.ideal: `parallel` / 3
### r1 → r2 변화 요약
| 축 | r1 primary | r2 primary | 변경 |
|---|---|---|---|
| content_affinity | `concept_comparison` | **`capability_requirements`** | ✓ |
| structure_intent | `binary_compare` | **`multi_parallel`** | ✓ |
### r2 content_affinity
- primary: **`capability_requirements`**
- secondary: `before_after_change`
- evidence:
- `primary` (keyword_match) — kw=['필수', 'S/W', '필수', 'S/W'] / rule='필수' 등 키워드가 capability_requirements 를 가리킴 / conf=0.85
- `secondary_1` (keyword_match) — kw=['전환'] / conf=0.65
- `blocked_by_not_suits` — comparative_matrix(['다면']), process_steps(['순서']), concept_comparison(['비교', '대조', 'vs']), concept_definition(['개념'])
### r2 structure_intent
- primary: **`multi_parallel`**
- secondary: `state_transition`
- evidence:
- `primary` (content_or_structure) — rule=3관점 / conf=0.8
- `secondary_1` (keyword_match) — rule=— / conf=0.55
- `blocked_by_not_suits` — matrix_coverage(['다면']), binary_compare(['2개 개념', '대조']), sequence(['순서'])
### alternative_patterns
| 대안 | confidence | source | reason |
|---|---:|---|---|
| `persona-3col` | 1.0 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 1.0) |
| `3col-parallel` | 0.78 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.78) |
| `3col-compare` | 0.69 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.69) |
| `table-3col` | 0.62 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.62) |
| `compare-rows` | 0.24 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.24) |
---
## Frame 29 — Process/Product 혁신
- layout: `banner-top-2col-bottom` (original: `compare-2banner-top-2col-bottom`)
- relation_type / cardinality.ideal: `compare` / 2
### r1 → r2 변화 요약
| 축 | r1 primary | r2 primary | 변경 |
|---|---|---|---|
| content_affinity | `before_after_change` | **`before_after_change`** | — |
| structure_intent | `state_transition` | **`state_transition`** | — |
### r2 content_affinity
- primary: **`before_after_change`**
- secondary: `concept_comparison`, `comparative_matrix`
- evidence:
- `primary` (keyword_match) — kw=['AS-IS', 'TO-BE', '혁신', '이중 변환', '과정', 'AS-IS', 'TO-BE', '혁신'] / rule='AS-IS' 등 키워드가 before_after_change 를 가리킴 / conf=0.95
- `secondary_1` (keyword_match) — kw=['대조', 'vs', 'vs'] / conf=0.65
- `secondary_2` (keyword_match) — kw=['축', '축'] / conf=0.65
- `blocked_by_not_suits` — process_steps(['단계', '순서'])
### r2 structure_intent
- primary: **`state_transition`**
- secondary: `binary_compare`
- evidence:
- `primary` (content_or_structure) — rule=AS-IS / conf=0.95
- `secondary_1` (layout_default) — rule=— / conf=0.55
- `blocked_by_not_suits` — sequence(['단계', '순서'])
### alternative_patterns
| 대안 | confidence | source | reason |
|---|---:|---|---|
| `compare-2col` | 1.0 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 1.0) |
| `table-2col` | 0.98 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.98) |
| `2col-paired` | 0.86 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.86) |
| `2-boxes` | 0.54 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.54) |
| `central-split` | 0.52 | derived_from_COMPAT | _COMPAT 공통 호환 mdx_layout 집합 기반 파생 (정규화 0.52) |
---