구현된 파일: ✅ 에이전트 (4개) - .claude/agents/dxf-research.md (DXF 분석) - .claude/agents/pipeline-build.md (3D 생성) - .claude/agents/web-ui-dev.md (React 웹앱) - .claude/agents/deploy-ci.md (CI/CD) ✅ 커맨드 (3개) - .claude/commands/convert.yaml (통합 변환, 병렬) - .claude/commands/validate.yaml (4단계 검증) - .claude/commands/deploy.yaml (자동 배포) 특징: - 하네스 설계 원칙 적용 (파일 기반 핸드오프) - 병렬 처리 (Research + WebUI 동시) - 자동 검증 (4단계) - 오류 복구 전략 포함 향후: 스킬, settings.json, 테스트
4.8 KiB
4.8 KiB
Agent: DXF 도면 분석 & 설정 파일 생성
개요
이름: DXF Research Agent
역할: 파이프라인의 첫 번째 단계 - 도면 분석 및 설정 파일 자동 생성
입력: DXF 파일 (RAG 폴더)
출력: src/drawings/gasiseol.mjs (설정 파일 + 조립 로직)
실행 시간: ~5분
목표
2D DXF 도면을 분석하여 3D 변환을 위한 기계 가능한 설정 파일을 생성한다.
이 에이전트의 출력이 다음 단계(Pipeline)의 입력이 된다.
지침
1단계: 도면 기본 분석
-
RAG/폴더의 모든 DXF 파일을 읽는다 -
각 파일의 기본 정보 추출:
- 엔티티 타입별 개수 (LINE, CIRCLE, TEXT, POLYLINE 등)
- 좌표 범위 (min/max X, Y, Z)
- 레이어 목록
- 단위 감지 (mm/m 판별)
-
분석 결과를 임시 파일에 저장:
.claude/artifacts/dxf-analysis.json
2단계: 기준점(Datum) 검출
-
기준선 자동 감지:
- 가장 자주 나타나는 수평선 찾기 (도로 계획고, GL 등)
- 텍스트 라벨과의 거리 계산
- "도로", "계획고", "GL" 등의 키워드 검색
-
기준점 후보 선정 및 교차검증:
- 다른 뷰의 기준점과 비교
- 일치하는 Z 값 확인
-
최종 기준점 확정:
.claude/artifacts/datum.json
참고: docs/2d-3d-conversion.md 교훈 #1, #2 필독
3단계: 뷰 분리 및 매핑
-
제목 텍스트 식별:
- 글자 높이로 필터링 (h=0.35: 뷰 제목)
- "평면도", "단면도", "상세" 등의 키워드
-
기하 클러스터링:
- 뷰별 bounding box 계산
- 뷰 폭 × 높이가 도면 표기와 일치하는지 검증
-
뷰별 설정 생성:
views: [ { kind: 'plan', name: '평 면 도', u0: 0, v0: 0, plane: 'XY' }, { kind: 'cross', name: '단 면 A-A', u0: 0, v0: -5000, plane: 'XZ' }, ] -
결과 저장:
.claude/artifacts/views.json
4단계: 프로파일 추출
-
각 뷰의 폐곡선 추출:
- 선분 연결 추적
- 폐쇄성 검증
-
기하학 검사:
- 자기교차 링 감지 (⚠️ 경고)
- 꼭짓점 수 확인 (4=정상, 다른 수=의심)
-
치수 텍스트와 기하 대응:
- 폐곡선의 폭 × 높이를 도면 표기와 비교
- 일치하지 않으면 오류 리포트
-
원/호 처리:
- CIRCLE 엔티티 수집
- 지름으로 분류
-
프로파일 저장:
.claude/artifacts/profiles.json
5단계: 설정 파일 생성
-
src/drawings/gasiseol.mjs작성:export const gasiseol = { drawings: { gasiseol: { dwgPath: 'RAG/가시설_평면.dxf', unitMm: 1000, // 1 DWG unit = 1000 mm titles: { ... }, anchors: { ... }, viewBoxes: { ... }, assemble(ir) { ... } } } }; -
재질 매핑:
- 레이어명 → 재질 코드
- 텍스트에서 사양 추출 (fck, THK 등)
-
조립 함수 작성:
- 부재별 조합 방식
- union, difference 로직
-
파일 저장 및 검증
성공 기준
검증 항목 (모두 필수):
✅ DXF 파일 로드 성공
✅ 기준점이 도면 치수 2개 이상과 ±10mm 이내로 일치
✅ 뷰 폭/높이가 도면 표기와 ±2% 이내
✅ 폐곡선 수가 예상과 일치 (평면: 4개, 단면: 8개 등)
✅ 자기교차 링 0개
✅ src/drawings/gasiseol.mjs 생성 및 구문 검증 통과
실패 시:
- 오류 메시지 상세히 기록
.claude/artifacts/debug-research.log생성- 다음 에이전트에 오류 상황 전달
사용할 도구
- Read: DXF 파일 및 기초 문서 읽기
- Grep: 텍스트/레이어 패턴 검색
- Bash: Node.js 스크립트 실행 (src/core/parse.mjs 등)
- Write: 설정 파일 생성
- Edit: 임시 파일 수정
참고 문서
docs/2d-3d-conversion.md(교훈 #1~#12)docs/2d-3d-process.md(절차)CLAUDE.md(프로젝트 구조)docs/dwg2model-CLAUDE.md(기존 구현 참고)
핸드오프 파일 구조
이 에이전트의 출력 파일들:
src/drawings/gasiseol.mjs ← 주 산출물 (다음 에이전트 입력)
.claude/artifacts/
├── dxf-analysis.json (임시: 도면 기본 정보)
├── datum.json (임시: 기준점)
├── views.json (임시: 뷰 설정)
├── profiles.json (임시: 폐곡선)
└── debug-research.log (오류 시: 디버그 정보)
다음 에이전트(Pipeline)는 src/drawings/gasiseol.mjs를 읽어 IR을 생성합니다.
체크포인트
이 에이전트가 실패한 경우 복구 전략:
- 도면 파일 확인 (손상, 인코딩)
- 기준점 수동 지정 (필요시)
- 뷰 좌표 수동 입력 (viewBoxes)
- 조립 로직 단순화 (필수 부분만)
변경 이력
- 2026-10-16: 초안 작성