Files
C.E.L_Slide_test2/tests/CLAUDE.md
kyeongmin 02e2ae0afb docs(#54): F-4 legacy annotation + F-5 fixture convention -- AUDIT-01 housekeeping
INTEGRATION-AUDIT-01 (#50) §10.4 / §10.5 housekeeping carry-over.

F-4: annotate 14 remaining legacy Phase R'/Q sample-text hits across 10
src/ files with inline marker `# [legacy Phase R'/Q example -- INTEGRATION-AUDIT-01 §10.4]`.
Comment-only. No string-literal / regex / sample dict value mutated.
fit_verifier.py L612 marker keeps Phase Z partial-live import graph
(FitAnalysis / RoleFit / redistribute / salvage) byte-precise.

F-5: docs-only addendum -- §10.5.1 in INTEGRATION-AUDIT-01-REPORT.md +
tests/CLAUDE.md fixture convention note. No root tests/fixtures/ dir
created; existing tests/phase_z2/fixtures/ convention preserved. Documents
test-only sample-reference allowance vs src/** runtime prohibition.

Out of scope: Phase Z source 11 hits (phase_z2_content_extractor /
failure_router / mapper / retry), production behavior change, #19 work.

Verified: pytest -q tests/phase_z2/ = 157 PASS. git diff +210/-0
(35 src/docs lines + 175 new tests/CLAUDE.md). No behavioral delta.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 20:23:36 +09:00

7.4 KiB
Raw Blame History

CLAUDE.md — 매칭 시스템 작업 컨텍스트

이 파일은 Claude (AI) 가 tests/ 디렉토리에서 작업할 때 참고하는 컨텍스트입니다. 프로젝트 루트의 ../CLAUDE.md 와 함께 사용.

작업 디렉토리

  • 메인 작업 디렉토리: tests/matching/
  • 데이터 / 보고서 파일도 같은 위치
  • 실행 시 항상 tests/matching/ 에서 (스크립트 내부 상대 경로 의존)

시스템 개요

MDX 콘텐츠 ↔ Figma Frame 32 개를 매칭하는 4 단계 파이프라인 (V1~V4). 상세는 README.md / PLAN.md / PROGRESS.md 참조.

절대 규칙

1. 하드코딩 금지 (사용자 강조 사항)

  • 결과물을 직접 고치지 말고 프로세스/코드를 고쳐라
  • 임의 데이터 삽입 금지 (예: DECK 04 의 "제목·A 라벨·B 라벨·행 데이터" placeholder 사용 금지)
  • 모든 표시값은 실제 코드 결과 (yaml / 함수 출력) 에서 가져와야 함

2. 사용자 직접 수정 보존

  • 사용자가 HTML 파일을 직접 편집한 경우 반드시 pipeline 코드에 반영 후 재생성
  • 코드만 고치고 재실행하면 사용자 수정이 사라짐
  • 변경 시: 사용자 수정 8 개 모두 코드에 반영 → 재실행

3. 정직한 코드 동작 표시

  • 임원 보고용 deck 라도 코드의 한계를 솔직히 표시
  • 예: "MDX 자동 분석 결과 — 정책/요구사항 (사람이 보면 행렬형 비교)" 같은 표기
  • "이 축은 사실 frame 매칭에 영향 없음" 같은 ablation 결과는 임원용에는 빼지만, 내부 문서 (PROGRESS.md) 에는 명시

4. 임원 보고용 톤

  • 영문 enum 코드 (policy_requirements) 직접 노출 금지 — 한글 (정책/요구사항) 우선
  • 매칭 키워드는 5~10 개 + "등 N 개" 로 축약
  • 디자인: 그라데이션 / 화려한 카드 금지. 단순 표 + 흑백 + 강조 색 1~2 가지
  • 정의 / 부연 설명 최소화 (def 는 한 줄, 길게 풀어 쓰지 말 것)

명명 규칙

파이프라인 스크립트

pipeline_<숫자>_<이름>.py
  • 01~07: 입력 추출 + 전처리 + 키워드
  • 08: V2 (semantic) / V3 (structure r2~r5) / V4 (template_fit, r1/r2)
  • 09: V2 진단
  • 10: Holdout 라벨링 / 평가
  • 11: templates_v1 감사
  • 12: templates_v2 생성 (r1, r2, r3, final, final_r2, promote_frame13)
  • 13: meeting docs / samples
  • 14: single sample
  • 15: bm25 / idf / logistic regression 비교
  • 16: deck 페이지 생성 (DECK 1~7)
  • 17: V4 full32 (32 frame 전체 평가)
  • 18: V4 slot 축 ablation

결과 파일

<단계>_<설명>_result.yaml
  • mdx_matching_result.yaml — V1
  • v2_semantic_rerank_result.yaml — V2
  • v3_structure_rerank_r5_result.yaml — V3 (최종 r5)
  • v4_full32_result.yaml — V4 (32 frame 전체)
  • structure_ontology_v2_final_r2.yaml — Frame 32 DB

보고서

DECK_<번호>_<이름>.html — 임원 보고용 A4 페이지
ATTACH_<번호>_<이름>.html — 부속 자료
<NAME>_REPORT.html / .md — 분석 보고서

자주 쓰는 명령어

cd tests/matching/

# 매칭 시스템 전체 재실행
python pipeline_06_2_mdx_matching.py
python pipeline_08_v2_semantic_rerank.py
python pipeline_08_v3_r5_structure_rerank.py
python pipeline_17_v4_full32.py

# 보고서 재생성
python pipeline_16_deck_4pages.py    # DECK 1~7

# Ablation / 검증
python pipeline_15_logistic_regression.py
python pipeline_18_slot_axis_ablation.py

파이프라인 핵심 가중치

V1 키워드 매칭 (Logistic Regression 학습)

matching_score = 0.414 × 핵심 + 0.320 × 세트 + 0.265 × 연관

V3 구조 매칭

total = 0.40 × 레이아웃 일치 + 0.35 × 콘텐츠 성격 + 0.25 × 시각 의도

V4 종합 판정

confidence = 0.25 × anchor + 0.20 × cardinality + 0.20 × relation
           + 0.15 × slot + 0.20 × content  penalty

라벨 임계값:
  ≥ 0.90 → use_as_is (그대로 사용)
  ≥ 0.75 → light_edit (가벼운 편집)
  ≥ 0.60 → restructure (구조 재배치)
  < 0.60 → reject (사용 불가)

데이터 소스

데이터 위치 용도
Figma 텍스트 figma_to_html_agent/blocks/*/texts.md 32 frame 텍스트 추출
BEPS 마스터 (별도 위치) 키워드 보강용
MDX 검증 구간 (pipeline_01_extract_nodes.pyMDX_SECTIONS) 정답 매칭 검증
Frame 이미지 data/figma_previews/<프레임번호>.png DECK 시각화

테스트 픽스처 컨벤션 (F-5, INTEGRATION-AUDIT-01 §10.5.1)

테스트 데이터 / 샘플 참조의 정식 위치 규약. tests/ 안에서만 적용되고 src/** 프로덕션 경로에는 적용되지 않음.

경로 상태 용도 비고
tests/phase_z2/fixtures/ 존재 (정식) Phase Z 회귀 YAML 픽스처 test_fixtures_loader.py 가 로드. 서브디렉토리 : build_layout_css/, retry_gate/.
tests/fixtures/ (루트) 없음 (현재 미생성) 비-Phase-Z / 비-YAML 픽스처 미래 후보 샘플 인벤토리가 tests/phase_z2/test_*.py 인라인으로 감당 못 할 때만 별도 이슈로 신설.
samples/mdx_batch/** , samples/mdx/** 존재 통합 스모크 입력 tests/** 에서만 참조 가능. src/** 런타임 경로 하드코딩 금지.

규칙 :

  • 테스트 코드에서는 samples/mdx_batch/02.mdx 같은 샘플 MDX 를 직접 참조해도 됨 (예 : tests/phase_z2/test_pz2_vu_integration.py). src/** 런타임 입력은 절대 샘플 파일명 / 콘텐츠를 핀하지 말 것.
  • 새 YAML 회귀 픽스처는 tests/phase_z2/fixtures/ 아래 새 서브디렉토리로 추가. 루트 tests/fixtures/ 신설은 금지 (별도 이슈 필요).
  • src/** 안에 등장하는 "BIM" / "건설산업 DX" / "재구성" 같은 sample-like 리터럴은 INTEGRATION-AUDIT-01 §10.4 (F-4) 에서 의도된 docstring / glossary / 예시 dict 로 분류 완료. annotation marker 가 붙어 있으면 의도된 example. 새 sample 리터럴을 src/** 에 도입하지 말 것.
  • 본 컨벤션의 anchor 정의는 docs/architecture/INTEGRATION-AUDIT-01-REPORT.md §10.5.1. 변경 시 anchor 부터 갱신.

자주 헷갈리는 것

영문 enum vs 한글 매핑

  • 코드 / yaml: 영문 enum (comparative_matrix, cycle_interrelation)
  • 보고서 표시: 한글 (행렬형 비교, 순환/상호 관계)
  • DECK 05 의 키워드 사전 표는 양쪽 다 표시 (사용자 매칭 가능)

항목수 vs 슬롯 후보 개수

  • 동일item_count = len(slot_candidates) (표 / subsections / bullets 어떤 형태든)
  • V4 의 cardinality 축과 slot.within 부분은 같은 신호의 중복 가중 (ablation 으로 확인)

V3 vs V4 구조 점수

  • V3 = layout family + content_affinity + structure_intent (3 축)
  • V4 = anchor + cardinality + relation + slot + content (5 축)
  • 다른 모델. V3 점수와 V4 confidence 는 별도 계산

사용자가 강조한 피드백

  • "코드로 돌린 결과물이지 임의 데이터 아님" — 모든 표시 정직
  • "임원 보고용이야" — 부정적 부연 / 디테일 산식 빼기
  • "한가지만 해" — 한 번에 한 가지만 변경
  • "모든 변경은 pipeline 코드에 반영" — HTML 직접 수정은 일시적

진행 중 발견된 약점

PROGRESS.md 의 "발견된 약점" 표 참조. 8 개 모두 Phase E 작업 대상.

가장 시급:

  1. 02-2.2 매칭 실패 (E.5)
  2. MDX 분석 LLM 화 (E.1, E.2)
  3. 슬롯 의미 매핑 (E.3, E.4)