Files
dxf-to-3d-gasiseol/.claude/agents/dxf-research.md
T
Claude Haiku ce52ddd55d step6: Claude Code 에이전트 & 커맨드 정확한 포맷 구현 (1단계)
구현된 파일:
✅ 에이전트 (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, 테스트
2026-10-16 16:26:48 +09:00

174 lines
4.8 KiB
Markdown

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