Files
sam-react-prod/claudedocs/item-master/[IMPL-2025-12-06] assembly-part-issues-checklist.md
byeongcheolryu ded0bc2439 fix: TypeScript 타입 오류 수정 및 설정 페이지 추가
- BOMItem Omit 타입 시그니처 통일 (useTemplateManagement, SectionsTab, ItemMasterContext)
- HeadersInit → Record<string, string> 타입 변경
- Zustand useShallow 마이그레이션 (zustand/react/shallow)
- DataTable, ListPageTemplate 제네릭 타입 제약 추가
- 설정 관리 페이지 추가 (직급, 직책, 휴가정책, 근무일정, 권한)
- HR 관리 페이지 추가 (급여, 휴가)
- 단가관리 페이지 리팩토링

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 18:07:47 +09:00

5.4 KiB

조립부품(Assembly Part) 이슈 체크리스트

품목관리 - 제품(PT) 조립부품 관련 이슈 추적


이슈 요약

# 이슈 상태 유형
1 캔버스 드로잉 마우스 오프셋 버그 🔴 프론트엔드
2 상세보기 - 조립부품 세부정보/전개도 누락 🔴 프론트엔드/API
3 수정 페이지 - 기존 데이터 로딩 안됨 🔴 프론트엔드/API

1. 캔버스 드로잉 마우스 오프셋 버그

상태: 수정 완료

현상

  • 마우스 클릭 지점과 실제 그려지는 위치가 다름
  • sam-design에서는 정상 작동
  • sam-react-prod에서만 오프셋 발생

원인

  • getMousePos() 함수에서 캔버스 scale 비율 계산 누락
  • 캔버스 실제 해상도(600x400)와 CSS 표시 크기(w-full)가 다름
  • scale 보정 없이 좌표 계산하면 오프셋 발생

체크리스트

  • 캔버스 컴포넌트 파일 위치 확인
  • sam-design vs sam-react-prod 코드 비교
  • getBoundingClientRect() 사용 여부 확인
  • CSS transform/scale 영향 확인
  • 오프셋 계산 로직 수정
  • 테스트 및 검증

수정 내용

// Before (문제)
return {
  x: e.clientX - rect.left,
  y: e.clientY - rect.top,
};

// After (수정)
const scaleX = canvas.width / rect.width;
const scaleY = canvas.height / rect.height;
return {
  x: (e.clientX - rect.left) * scaleX,
  y: (e.clientY - rect.top) * scaleY,
};

관련 파일

  • src/components/items/DrawingCanvas.tsx (Line 135-146)

2. 상세보기 - 조립부품 세부정보/전개도 누락

상태: 🟡 프론트 수정 완료, API 확인 필요

현상

  • "조립 부품 세부 정보" 섹션 헤더만 있고 내용 없음
  • "조립품 전개도 (바라시)" 섹션 자체가 없음

원인

  1. API 응답에서 조립부품 필드들이 attributes JSON 안에 있음
  2. 프론트에서 data.installation_type만 확인, attributes.installation_type 확인 안함
  3. 전개도 섹션은 bendingDiagram이 있어야만 표시되는 조건

프론트엔드 수정 내용

  1. 상세 페이지 매핑 (items/[id]/page.tsx)

    • attributes 객체에서도 조립부품 필드 추출하도록 수정
    • installation_type, assembly_type, assembly_length, side_spec_width, side_spec_height
  2. 상세보기 컴포넌트 (ItemDetailClient.tsx)

    • 조립부품 세부정보 섹션: 값 없으면 - 표시하도록 개선
    • 전개도 섹션: 데이터 없어도 섹션 표시, "등록된 전개도가 없습니다" 메시지

체크리스트

  • 상세보기 페이지 컴포넌트 확인
  • API 응답 구조 분석 (attributes JSON)
  • 조립부품 세부정보 렌더링 로직 수정
  • 전개도 섹션 항상 표시하도록 수정
  • 테스트 및 검증
  • 백엔드 API에서 bending_diagram 반환 여부 확인 필요

관련 파일

  • src/app/[locale]/(protected)/items/[id]/page.tsx - 매핑 함수
  • src/components/items/ItemDetailClient.tsx - UI 컴포넌트

백엔드 확인 필요

  • 조립부품 등록 시 bending_diagram 필드가 DB에 저장되는지 확인
  • 조회 API 응답에 bending_diagram, attributes 포함 여부 확인

3. 수정 페이지 - 기존 데이터 로딩 안됨

상태: 🟡 프론트 수정 완료, API 확인 필요

현상

  • 부품 유형이 초기화됨 ("부품 유형을(를) 선택하세요")
  • 기존 입력 데이터 전혀 로딩 안됨
  • 조립품 전개도 미리보기 없음
  • 부품 구성(BOM) 목록 로딩 안됨

원인

  • 상세보기와 동일: API 응답에서 조립부품 필드들이 attributes JSON 안에 있음
  • mapApiResponseToFormData 함수에서 attributes를 확인하지 않음

프론트엔드 수정 내용

수정 페이지 매핑 (items/[id]/edit/page.tsx)

  • attributes 객체에서도 조립부품 필드 추출하도록 수정
  • part_type, part_usage, installation_type, assembly_type, assembly_length, 등

체크리스트

  • 수정 페이지 데이터 fetch 로직 확인
  • API 응답 데이터 구조 확인 (attributes JSON)
  • 폼 초기값 매핑 로직 수정
  • 조립부품 특화 필드 매핑 추가
  • 전개도 이미지 로딩 - 백엔드 확인 필요
  • BOM 목록 로딩 - 백엔드 확인 필요
  • 테스트 및 검증

관련 파일

  • src/app/[locale]/(protected)/items/[id]/edit/page.tsx - 매핑 함수

백엔드 확인 필요

  • 조립부품 등록 시 part_type, attributes 필드가 DB에 저장되는지 확인
  • Product 모델에서 part_type이 컬럼인지 attributes JSON 안에 있는지 확인
  • 조회 API 응답에 bending_diagram, bom 포함 여부 확인

작업 로그

2025-12-06

  • 이슈 체크리스트 생성
  • 스크린샷 분석 완료
  • 캔버스 오프셋 버그 수정: DrawingCanvas.tsx - scale 비율 계산 추가
  • 상세보기 페이지 수정:
    • items/[id]/page.tsx - attributes에서 조립부품 필드 추출
    • ItemDetailClient.tsx - 세부정보 섹션 항상 표시, 전개도 섹션 조건 완화
  • 수정 페이지 수정:
    • items/[id]/edit/page.tsx - attributes에서 조립부품 필드 추출
  • API 요청 문서 업데이트: 조립부품 관련 백엔드 확인 사항 추가

남은 작업

  • 백엔드와 조립부품 데이터 저장/반환 확인 논의
  • 실제 테스트 후 검증