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

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

---

## 이슈 요약

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

---

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

### 상태: ✅ 수정 완료

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

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

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

### 수정 내용
```typescript
// 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`)
   - 조립부품 세부정보 섹션: 값 없으면 `-` 표시하도록 개선
   - 전개도 섹션: 데이터 없어도 섹션 표시, "등록된 전개도가 없습니다" 메시지

### 체크리스트
- [x] 상세보기 페이지 컴포넌트 확인
- [x] API 응답 구조 분석 (attributes JSON)
- [x] 조립부품 세부정보 렌더링 로직 수정
- [x] 전개도 섹션 항상 표시하도록 수정
- [ ] 테스트 및 검증
- [ ] 백엔드 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`, 등

### 체크리스트
- [x] 수정 페이지 데이터 fetch 로직 확인
- [x] API 응답 데이터 구조 확인 (attributes JSON)
- [x] 폼 초기값 매핑 로직 수정
- [x] 조립부품 특화 필드 매핑 추가
- [ ] 전개도 이미지 로딩 - 백엔드 확인 필요
- [ ] 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 요청 문서 업데이트**: 조립부품 관련 백엔드 확인 사항 추가

### 남은 작업
- [ ] 백엔드와 조립부품 데이터 저장/반환 확인 논의
- [ ] 실제 테스트 후 검증
