# 프로젝트 진행 상황 (2025-11-20) ## 작업 개요: 디지털 트윈 3D 야드 고도화 (동적 계층 구조) ### 1. 핵심 변경 사항 기존의 고정된 `Area` -> `Location` 2단계 구조를 유연한 **N-Level 동적 계층 구조**로 변경하고, 공간적 제약을 강화했습니다. ### 2. 완료된 작업 #### 데이터베이스 - **마이그레이션 실행**: `db/migrations/042_refactor_digital_twin_hierarchy.sql` - **스키마 변경**: - `digital_twin_layout` 테이블에 `hierarchy_config` (JSONB) 컬럼 추가 - `digital_twin_objects` 테이블에 `hierarchy_level`, `parent_key`, `external_key` 컬럼 추가 - 기존 하드코딩된 테이블 매핑 컬럼 제거 #### 백엔드 (Node.js) - **API 추가/수정**: - `POST /api/digital-twin/data/hierarchy`: 계층 설정에 따른 전체 데이터 조회 - `POST /api/digital-twin/data/children`: 특정 부모의 하위 데이터 조회 - 기존 레거시 API (`getWarehouses` 등) 호환성 유지 - **컨트롤러 수정**: - `digitalTwinDataController.ts`: 동적 쿼리 생성 로직 구현 - `digitalTwinLayoutController.ts`: 레이아웃 저장/수정 시 `hierarchy_config` 및 객체 계층 정보 처리 #### 프론트엔드 (React) - **신규 컴포넌트**: `HierarchyConfigPanel.tsx` - 레벨 추가/삭제, 테이블 및 컬럼 매핑 설정 UI - **유틸리티**: `spatialContainment.ts` - `validateSpatialContainment`: 자식 객체가 부모 객체 내부에 있는지 검증 (AABB) - `updateChildrenPositions`: 부모 이동 시 자식 객체 자동 이동 (그룹 이동) - **에디터 통합 (`DigitalTwinEditor.tsx`)**: - `HierarchyConfigPanel` 적용 - 동적 데이터 로드 로직 구현 - 3D 캔버스 드래그앤드롭 시 공간적 종속성 검증 적용 - 객체 이동 시 그룹 이동 적용 ### 3. 현재 상태 - **백엔드 서버**: 재시작 완료, 정상 동작 중 (PostgreSQL 연결 이슈 해결됨) - **DB**: 마이그레이션 스크립트 실행 완료 ### 4. 다음 단계 (테스트 필요) 새로운 세션에서 다음 시나리오를 테스트해야 합니다: 1. **계층 설정**: 에디터에서 창고 -> 구역(Lv1) -> 위치(Lv2) 설정 및 매핑 저장 2. **배치 검증**: - 구역 배치 후, 위치를 구역 **내부**에 배치 (성공해야 함) - 위치를 구역 **외부**에 배치 (실패해야 함) 3. **이동 검증**: 구역 이동 시 내부의 위치들도 같이 따라오는지 확인 ### 5. 관련 파일 - `frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinEditor.tsx` - `frontend/components/admin/dashboard/widgets/yard-3d/HierarchyConfigPanel.tsx` - `frontend/components/admin/dashboard/widgets/yard-3d/spatialContainment.ts` - `backend-node/src/controllers/digitalTwinDataController.ts` - `backend-node/src/routes/digitalTwinRoutes.ts` - `db/migrations/042_refactor_digital_twin_hierarchy.sql`