ES /docs

error on sitetrack_id: 21354 - undefined method `untrashed?' for nil

Validation: 725fbb66-a1d4-4df0-a4a0-19508633ecf4

Verdict: APPROVED#

Completeness#

Plan Item Status Evidence
_do_assign_editing_to_editing_entity early-return 의 self.editing.untrashed?self.editing&.untrashed? 로 변경 DONE app/models/concerns/finalization/editing_entity.rb: line 39 에서 return if self.editing_id.present? && self.editing.untrashed? -> return if self.editing_id.present? && self.editing&.untrashed? 로 한 줄만 변경됨
orphan editing_id 회귀 방지 스펙 추가 DONE spec/models/concerns/finalization/editing_entity_spec.rb: lines 44-58 에서 Editing.where(id: orphan_editing.id).delete_all 로 하드 삭제 시뮬레이션 후 assign_editing_to_editing_entity 가 예외 없이 신규 editing 을 생성하는지 검증

Acceptance Criteria#

Criterion Status Evidence
editing_entity.rb 한 파일, 단 한 줄 변경만 포함 PASS 프로덕션 코드 diff 는 app/models/concerns/finalization/editing_entity.rb 의 line 39 한 줄만 수정. 스펙 파일은 테스트 추가이므로 별개
grep -n 'self.editing.untrashed?' ... 결과 0건 PASS (diff 기준) diff hunk 에서 삭제되는 라인이 유일한 self.editing.untrashed? 발생 위치였음. 남는 참조는 line 42 의 self.editing&.untrashed? (safe navigation) 뿐
CreateSitetrackEditingEntitiesWorker#perform orphan 경로 정상 종료 Cannot verify from diff -- requires runtime check 워커 진입점 파일은 diff 에 포함되지 않음. 다만 신규 스펙이 orphan 케이스에서 not_to raise_error 및 새 Editing 생성까지 검증하므로 로직상 등가

Issues Found#

차단 이슈 없음.

Observations#

  • 수정 라인 다음 줄(line 42) 이 이미 self.editing&.untrashed? 패턴을 사용하고 있어 일관성 확보됨.
  • 스펙은 Editing.where(...).delete_all 로 하드 삭제를 시뮬레이션하는데, 이는 실제 프로덕션의 purge 경로와 동일한 상태(참조 무효)를 재현하므로 회귀 방지에 적절.
  • 스펙에서 editing_entity.editingnil 임을 명시적으로 검증(line 54)한 뒤 라이즈 없음/신규 Editing 생성을 확인 -- fix 전 코드였다면 NoMethodError 로 실패했을 시나리오.
  • 계획 범위를 벗어난 불필요한 코드 추가는 발견되지 않음.