# 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`) 결과가 실제 공정 흐름과 일치하는지 검토 및 미세 조정.