# P&ID 위상 모델링 임계값 튜닝 및 로직 개선 계획

## 1. 현황 분석
`No-10_Plant_PID.dxf` 파일 테스트 결과, 기능적 파이프라인은 정상 작동하나 위상 연결성이 매우 낮음.
- **결과**: 노드 28,257개 / 엣지 4,045개 (대부분의 노드가 고립됨)
- **원인**: 
    - 현재 설정된 `dist_threshold` (50.0) 및 `tag_threshold` (100.0)가 도면의 실제 스케일에 비해 너무 작음.
    - 단순 End-point 기반 연결 로직으로 인해 미세한 간격 차이로 연결이 누락됨.
    - 노드 병합(Merging) 로직 부재로 인해 동일 객체가 여러 노드로 분산 추출되었을 가능성이 큼.

## 2. 개선 목표
- 도면 스케일에 최적화된 임계값(Threshold) 도출.
- 연결성 향상을 위한 기하학적 매칭 로직 고도화.
- 중복/분산 노드 병합을 통한 그래프 단순화 및 정확도 향상.

## 3. 세부 개선 방안

### 3.1 임계값 튜닝 (Threshold Tuning)
- **동적 임계값 분석**: 
    - 도면 내 엔티티 간의 평균 거리 및 태그-설비 간 거리를 샘플링하여 통계적 임계값 산출.
    - `dist_threshold` (배관-설비 연결 거리) 및 `tag_threshold` (태그-설비 연관 거리) 최적화.
- **설정 파일 분리**: 하드코딩된 값을 제거하고 도면별/프로젝트별 설정 파일(`config.json`)을 통해 관리.

### 3.2 연결 로직 고도화 (Topology Logic Revise)
- **End-point $\rightarrow$ Proximity 기반 확장**:
    - 단순 End-point 거리 측정에서 벗어나, 배관(Line)의 전체 경로와 설비 BBox 간의 최단 거리(`distance`)를 계산하여 연결 판단.
- **스냅(Snapping) 메커니즘 도입**:
    - 임계값 이내의 점들을 하나의 가상 정점으로 병합하여 연결 누락 방지.
- **방향성 추론 개선**:
    - 현재의 단순 순서 기반 엣지 생성을 넘어, 화살표 심볼(Arrow) 또는 공정 흐름 방향성을 분석하여 `DiGraph` 엣지 방향 결정.

### 3.3 노드 병합 및 정제 (Node Merging & Cleaning)
- **기하학적 중복 제거**:
    - BBox가 거의 일치하거나 겹치는 동일 타입 노드들을 하나로 병합.
- **태그 기반 그룹화**:
    - 동일한 태그 값을 가진 분산 텍스트 노드들을 하나의 논리적 태그 노드로 통합.
- **고립 노드 필터링**:
    - 유의미한 연결이 없는 미세 엔티티(Noise)를 제거하여 그래프 복잡도 감소.

## 4. 실행 단계 (Roadmap)
1. **[분석]** `shared_geo_data.json`을 분석하여 엔티티 간 거리 분포 히스토그램 작성 $\rightarrow$ 최적 임계값 후보 선정.
2. **[구현]** `pid_topology_builder.py`에 Proximity 기반 연결 로직 및 노드 병합 기능 추가.
3. **[검증]** `test_pipeline_phase2.py`를 수정하여 튜닝된 임계값 적용 후 `isolated_nodes` 비율 감소 확인.
4. **[최적화]** 영향도 분석(`analyze_impact`) 결과가 실제 공정 흐름과 일치하는지 검토 및 미세 조정.
