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:
@@ -0,0 +1,139 @@
|
||||
"""MD → HTML 변환 (PNG 미리보기 크게 보이게 + 읽기 쉬운 스타일)"""
|
||||
import markdown
|
||||
from pathlib import Path
|
||||
|
||||
HERE = Path(__file__).parent
|
||||
|
||||
CSS = """
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, 'Segoe UI', 'Malgun Gothic', sans-serif;
|
||||
max-width: 1800px;
|
||||
margin: 0 auto;
|
||||
padding: 24px;
|
||||
line-height: 1.6;
|
||||
color: #1e293b;
|
||||
background: #f8fafc;
|
||||
}
|
||||
h1 { color: #1e293b; border-bottom: 3px solid #2563eb; padding-bottom: 12px; }
|
||||
h2 {
|
||||
color: #1a365d;
|
||||
background: #e0e7ff;
|
||||
padding: 10px 16px;
|
||||
border-radius: 6px;
|
||||
margin-top: 32px;
|
||||
}
|
||||
hr { border: none; border-top: 1px solid #cbd5e1; margin: 24px 0; }
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin: 12px 0 24px;
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.05);
|
||||
}
|
||||
th, td {
|
||||
border: 1px solid #e2e8f0;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
background: #1e293b;
|
||||
color: #fff;
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
width: 120px;
|
||||
}
|
||||
td:first-child {
|
||||
background: #f1f5f9;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
width: 120px;
|
||||
}
|
||||
td img {
|
||||
max-width: 260px;
|
||||
height: auto;
|
||||
display: block;
|
||||
margin: 0 auto 6px;
|
||||
border: 1px solid #cbd5e1;
|
||||
border-radius: 4px;
|
||||
}
|
||||
td br + strong { color: #2563eb; }
|
||||
</style>
|
||||
"""
|
||||
|
||||
|
||||
def convert(md_path: Path, html_path: Path, title: str):
|
||||
md_content = md_path.read_text(encoding="utf-8")
|
||||
html_body = markdown.markdown(md_content, extensions=["tables", "attr_list"])
|
||||
html = f"""<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{title}</title>
|
||||
{CSS}
|
||||
</head>
|
||||
<body>
|
||||
{html_body}
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
html_path.write_text(html, encoding="utf-8")
|
||||
print(f"생성: {html_path}")
|
||||
|
||||
|
||||
def main():
|
||||
pairs = [
|
||||
("MATRIX_CASE1.md", "MATRIX_CASE1.html", "CASE 1 - 원본 텍스트"),
|
||||
("MATRIX_CASE2.md", "MATRIX_CASE2.html", "CASE 2 - 양쪽 가중"),
|
||||
("MATRIX_CASE3.md", "MATRIX_CASE3.html", "CASE 3 - 목차만"),
|
||||
("MATRIX_17.md", "MATRIX_17.html", "MATRIX 17 (기존)"),
|
||||
("MATRIX.md", "MATRIX.html", "MATRIX (기존 7섹션)"),
|
||||
("RESULT_BY_SECTION.md", "RESULT_BY_SECTION.html", "결과 by 섹션 (기존)"),
|
||||
("KEYWORD_REPORT.md", "KEYWORD_REPORT.html", "키워드 전체 리포트"),
|
||||
("MATRIX_PHASE2.md", "MATRIX_PHASE2.html", "Phase 2 — 7개 방법 (키워드+구조+의미)"),
|
||||
("MATRIX_PHASE3.md", "MATRIX_PHASE3.html", "Phase 3 — 9개 방법 (의미 5 family)"),
|
||||
("MATRIX_PHASE4.md", "MATRIX_PHASE4.html", "Phase 4 — 의미 15개 (5 family × 3 전략)"),
|
||||
("MATRIX_PHASE4_1순위.md", "MATRIX_PHASE4_1순위.html", "Phase 4 — 1순위만 (5 유닛 × 15 방법)"),
|
||||
("MATRIX_PHASE5.md", "MATRIX_PHASE5.html", "Phase 5 — Case 2 (세부 단위 7개 방법)"),
|
||||
("MATRIX_PHASE6.md", "MATRIX_PHASE6.html", "Phase 6 — 4개 유닛 × 7개 방법"),
|
||||
("MATRIX_PHASE7.md", "MATRIX_PHASE7.html", "Phase 7 — 2~3단계 파이프라인 검증"),
|
||||
("MATRIX_PHASE8.md", "MATRIX_PHASE8.html", "Phase 8 — Distinctive-Kiwi 전처리 강화"),
|
||||
("MATRIX_PHASE9.md", "MATRIX_PHASE9.html", "Phase 9 — 제목 포함+가중치 후 8개 방법 재평가"),
|
||||
("MATRIX_PHASE10.md", "MATRIX_PHASE10.html", "Phase 10 — 타이틀 ONLY 매칭"),
|
||||
("MATRIX_PHASE11.md", "MATRIX_PHASE11.html", "Phase 11 — Asymmetric + Ensemble"),
|
||||
("MATRIX_PHASE12.md", "MATRIX_PHASE12.html", "Phase 12 — 키워드 수준 매칭 진단"),
|
||||
("MATRIX_PHASE13.md", "MATRIX_PHASE13.html", "Phase 13 — 방법별 매칭 상세 진단"),
|
||||
("MATRIX_PHASE14.md", "MATRIX_PHASE14.html", "Phase 14 — 3개 개선 방법 통합표"),
|
||||
("MATRIX_PHASE14_SAMPLE.md", "MATRIX_PHASE14_SAMPLE.html", "Phase 14 샘플 — AI-Meta 동작 과정"),
|
||||
("MATRIX_PHASE15.md", "MATRIX_PHASE15.html", "Phase 15 — 키워드 실패 → AI 구조+의미 성공"),
|
||||
("MATRIX_PHASE16.md", "MATRIX_PHASE16.html", "Phase 16 — 3축 매칭(구조×내용×키워드)"),
|
||||
("MATRIX_PHASE17.md", "MATRIX_PHASE17.html", "Phase 17 — 32개 analysis.md 전체 3축 매칭"),
|
||||
("MATRIX_PHASE18.md", "MATRIX_PHASE18.html", "Phase 18 — 키워드만 (baseline)"),
|
||||
("MATRIX_PHASE19.md", "MATRIX_PHASE19.html", "Phase 19 — synonym + 키워드"),
|
||||
("MATRIX_PHASE20.md", "MATRIX_PHASE20.html", "Phase 20 — synonym + 키워드 + 내용"),
|
||||
("MATRIX_PHASE21.md", "MATRIX_PHASE21.html", "Phase 21 — synonym + 키워드 + 내용 + 구조 (old)"),
|
||||
("MATRIX_PHASE21b.md", "MATRIX_PHASE21b.html", "Phase 21b — ontology 구조축 (tie-breaker)"),
|
||||
("MATRIX_PHASE22.md", "MATRIX_PHASE22.html", "Phase 22 — 정제 anchor keywords only (baseline)"),
|
||||
("MATRIX_PHASE23.md", "MATRIX_PHASE23.html", "Phase 23 — anchor + content summary"),
|
||||
("MATRIX_PHASE24.md", "MATRIX_PHASE24.html", "Phase 24 — anchor + content + legacy structure ontology"),
|
||||
("MATRIX_PHASE25.md", "MATRIX_PHASE25.html", "Phase 25 — Template-fit-v1 (최종 운영 체계)"),
|
||||
("MATRIX_PHASE26.md", "MATRIX_PHASE26.html", "Phase 26 — 매칭 방법 비교 종합 + Figma DB 설계 결론"),
|
||||
("SYNONYMS_REPORT.md", "SYNONYMS_REPORT.html", "Synonym 사전 관리 기준"),
|
||||
("FIGMA_AUDIT.md", "FIGMA_AUDIT.html", "Figma 32개 구조 검수 리포트"),
|
||||
("DOMAIN_TERMS_REPORT.md", "DOMAIN_TERMS_REPORT.html", "Domain Terms 검수 리포트 (synonyms 관리 도구)"),
|
||||
("FIGMA_KEYWORDS_REPORT.md", "FIGMA_KEYWORDS_REPORT.html", "Figma 32 프레임 후보 키워드 검수"),
|
||||
("BEPS_SUMMARY_REPORT.md", "BEPS_SUMMARY_REPORT.html", "BEPS 기반 통합 정리 (키워드 + 구조 + 프레임)"),
|
||||
("KEYWORD_BASE_DRAFT.md", "KEYWORD_BASE_DRAFT.html", "Keyword Base 분류 초안 (검수용)"),
|
||||
("INTENT_DIAGNOSTIC_REPORT.md", "INTENT_DIAGNOSTIC_REPORT.html", "Structure Intent 진단 (점수 통합 전 검수)"),
|
||||
("CLEAN_ANCHOR_SETS_REPORT.md", "CLEAN_ANCHOR_SETS_REPORT.html", "anchor_sets 정리 리포트 (Milestone 2)"),
|
||||
]
|
||||
for md_name, html_name, title in pairs:
|
||||
md_path = HERE / md_name
|
||||
if not md_path.exists():
|
||||
continue
|
||||
convert(md_path, HERE / html_name, title)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user