Files
C.E.L_Slide_test2/tests/matching/test_mdx03_1_depth.py
T
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

103 lines
3.4 KiB
Python

"""MDX03-1을 얼마나 자세히 읽느냐에 따라 매칭 결과가 어떻게 바뀌는지 테스트"""
import sys
import json
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from common import load_figma_texts
from methods import method_tfidf, method_bm25, method_kiwi_bm25
ROOT = Path(r"d:\ad-hoc\kei\design_agent")
PREVIEW_DIR = ROOT / "data" / "figma_previews"
# 3가지 버전의 MDX03-1
# Level A: 라벨만 (기술/사람/자연 + 부제만)
MDX03_1_LABELS = """
기술(디지털)
사람(역량)
자연(여건)
"""
# Level B: 라벨 + 최상위 블릿 (서브제목까지만)
MDX03_1_MEDIUM = """
기술(디지털)
- Digital 기술(S/W, H/W)과 업무 Process의 통합
- 분야별 전문 지식(설계, 시공, 유지관리 등) 보유
사람(역량)
- 혁신적 사고방식과 창의적 문제 해결 능력
- 사용자 중심 사고와 DX 수행 경험
자연(여건)
- 지속적인 투자 및 실행 의지
"""
# Level C: 전체 (현재 사용하는 버전 - 블릿 깊이 전체 포함)
MDX03_1_FULL = """
* **기술(디지털)**
* **Digital 기술(S/W, H/W)과 업무 Process의 통합**
* 기존 업무 프로세스에 다양한 디지털 기술을 접목하여 업무 수행
* 프로젝트 전반에 걸친 업무 프로세스의 연결 및 조율
* **분야별 전문 지식(설계, 시공, 유지관리 등) 보유**
* 건설 전 단계에 대한 근본적인 이해와 지식 및 경험
* 최신 토목 기술 트랜드 및 표준 기준 등에 대한 높은 지식
* **사람(역량)**
* **혁신적 사고방식과 창의적 문제 해결 능력**
* 기존 수행 방식과 관습적 사고 등에 의한 접근 방식 탈피
* 디지털 기술을 활용한 창의적, 혁신적인 솔루션 제시
* **사용자 중심 사고와 DX 수행 경험**
* 사용자의 요구와 기대를 충족시키는 설계 및 구현
* 시행착오를 포함한 수행 경험과 사용자 경험(UX)을 반영한 해결 방안 제시
* **자연(여건)**
* **지속적인 투자 및 실행 의지**
* 기술 도입 초기 단계에 필요한 인력·기간·비용 등의 대규모 투자
* 기술 고도화를 위한 지속적인 개선 및 투자 체계 구축
* 변화와 혁신을 통해 부가가치를 창출하려는 실행 의지와 추진력
"""
def main():
figma = load_figma_texts()
with open(PREVIEW_DIR / "index.json", encoding="utf-8") as f:
idx_data = json.load(f)
frame_to_short = {info["frame_id"]: sid for sid, info in idx_data.items()}
versions = [
("A. 라벨만", MDX03_1_LABELS),
("B. 라벨+최상위블릿", MDX03_1_MEDIUM),
("C. 전체(현재)", MDX03_1_FULL),
]
methods = [
("TF-IDF", method_tfidf),
("BM25", method_bm25),
("Kiwi+BM25", method_kiwi_bm25),
]
print(f"{'버전':20s} | {'TF-IDF':20s} | {'BM25':20s} | {'Kiwi+BM25':20s}")
print("-" * 100)
for vname, text in versions:
row = f"{vname:20s}"
for mname, fn in methods:
ranked = fn(text, figma)[:3]
cells = []
for fid, sc in ranked:
short = frame_to_short.get(str(fid), "?")
mark = "✅" if short == "13" else " "
cells.append(f"{mark}{short}({sc:.1f})")
row += " | " + " ".join(cells)
print(row)
print()
print("정답: 13 (필수조건)")
if __name__ == "__main__":
main()