## 배경 PR #9 코드 리뷰 중 발견된 문제입니다. - 관련 PR: https://github.com/Ospac/caterpillar/pull/9 - 관련 리뷰 코멘트: https://github.com/Ospac/caterpillar/pull/9#discussion_r2936263924 - 요청자: @Ospac ## 문제 `src/features/diagram/model/document.ts`의 `parseCanvasDocument` 함수에서 엣지의 `source`/`target`이 문자열이기만 하면 통과되어, 실제 존재하지 않는 노드를 참조하는 dangling edge가 런타임 상태로 복원됩니다. 이 상태는 문서 round-trip 이후에도 유지되어 그래프 무결성을 깨트릴 수 있습니다. ## 해야 할 일 - [ ] `parseCanvasDocument` 내에서 파싱된 node id Set을 구성하고, 엣지의 `source`/`target` 양쪽이 모두 해당 Set에 존재하는지 검증하는 로직 추가 - [ ] dangling edge를 전체 파싱 실패가 아닌 해당 엣지만 제외(필터)하는 방향 또는 전체 null 반환 방향 중 결정 후 구현 - [ ] `src/features/diagram/model/__tests__/document.test.ts` 테스트 케이스 수정 (dangling edge 시나리오 커버)
배경
PR #9 코드 리뷰 중 발견된 문제입니다.
문제
src/features/diagram/model/document.ts의parseCanvasDocument함수에서 엣지의source/target이 문자열이기만 하면 통과되어, 실제 존재하지 않는 노드를 참조하는 dangling edge가 런타임 상태로 복원됩니다.이 상태는 문서 round-trip 이후에도 유지되어 그래프 무결성을 깨트릴 수 있습니다.
해야 할 일
parseCanvasDocument내에서 파싱된 node id Set을 구성하고, 엣지의source/target양쪽이 모두 해당 Set에 존재하는지 검증하는 로직 추가src/features/diagram/model/__tests__/document.test.ts테스트 케이스 수정 (dangling edge 시나리오 커버)