- claudedocs 폴더 구조 재정리: archive/sessions, guides/migration·mobile·universal-list, refactoring 분류 - 오래된 세션 컨텍스트/체크리스트 문서 정리 (아카이브 이동 또는 삭제) - AuthContext → authStore(Zustand) 전환 시작, RootProvider 간소화 - GenericCRUDDialog 공통 다이얼로그 컴포넌트 추가 - PermissionDialog 삭제 → GenericCRUDDialog로 대체 - RankDialog/TitleDialog GenericCRUDDialog 기반으로 리팩토링 - toast-utils.ts 삭제 (미사용) - fileDownload.ts 개선, excel-download.ts 정리 - menuStore/themeStore Zustand 셀렉터 최적화 - useColumnSettings/useTableColumnStore 기능 보강 - 세금계산서/견적/작업자화면/결재 등 소규모 개선 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.6 KiB
3.6 KiB
품목관리 세션 체크포인트
작성일: 2025-12-10 이전 세션: 2025-12-09 상태: ✅ 프론트엔드 수정 완료
🎯 오늘의 작업 목표
백엔드 변경 사항 (완료됨)
field_key 통일 방식:
- 기존: 프론트엔드에서
unit→98_unit변환 후 저장 - 변경: 백엔드에서 field_key를 그대로 저장/반환
- 기존 레거시 데이터(
98_unit형식)도 그대로 동작 - 신규 등록 시
unit으로 등록하면unit으로 저장 - 중복 field_key는 백엔드에서 자동 처리 (suffix 추가 또는 사용자 변경)
- 기존 레거시 데이터(
핵심 포인트: 프론트엔드에서 변환 없이, 백엔드가 주는 값 그대로 사용!
✅ 완료된 작업
1. 수정 페이지 mapApiResponseToFormData 개선
파일: src/app/[locale]/(protected)/items/[id]/edit/page.tsx
변경 내용:
- 하드코딩된 필드 매핑 제거 (약 90줄 → 50줄)
- 백엔드 응답의 모든 필드를 그대로 formData에 복사
- 시스템 필드만 제외 (
id,tenant_id,created_at,updated_at,deleted_at등)
// 변경 후: 백엔드 응답을 그대로 사용
function mapApiResponseToFormData(data: ItemApiResponse): DynamicFormData {
const formData: DynamicFormData = {};
const excludeKeys = ['id', 'tenant_id', 'category_id', 'category',
'created_at', 'updated_at', 'deleted_at', 'component_lines', 'bom'];
Object.entries(data).forEach(([key, value]) => {
if (!excludeKeys.includes(key) && value !== null && value !== undefined) {
formData[key] = value;
}
});
// attributes, options 처리...
return formData;
}
2. item_type 파라미터 수정
변경 파일:
src/app/[locale]/(protected)/items/[id]/page.tsx(상세 페이지)src/app/[locale]/(protected)/items/[id]/edit/page.tsx(수정 페이지)
변경 내용:
- 기존:
item_type=MATERIAL - 변경:
item_type=SM/item_type=RM/item_type=CS(실제 코드 전달)
// 변경 후
queryParams.append('item_type', itemType); // SM, RM, CS 그대로 전달
3. 삭제 API item_type 파라미터 추가
파일: src/components/items/ItemListClient.tsx
변경 내용:
- 단건 삭제:
?item_type=${itemToDelete.itemType}추가 - 일괄 삭제:
?item_type=${item?.itemType}추가
4. 빌드 검증
npm run build # ✅ 성공
📋 테스트 체크리스트
등록 테스트
- FG(제품) 등록 → 데이터 표시 확인
- PT-조립부품 등록 → 데이터 표시 확인
- PT-절곡부품 등록 → 데이터 표시 확인
- SM/RM/CS 등록 → 데이터 표시 확인
수정 테스트
- 수정 페이지 진입 → 모든 필드 데이터 로드 확인
- 드롭다운 값 정상 표시 확인
- 수정 후 저장 → 값 유지 확인
삭제 테스트
- 단건 삭제 (SM/RM/CS)
- 일괄 삭제 (SM/RM/CS)
🔄 코드 변경 요약
| 파일 | 변경 내용 |
|---|---|
items/[id]/page.tsx |
item_type 파라미터: MATERIAL → 실제 코드 |
items/[id]/edit/page.tsx |
mapApiResponseToFormData 간소화, item_type 파라미터 수정 |
ItemListClient.tsx |
삭제 API에 item_type 파라미터 추가 (단건/일괄) |
📚 관련 문서
| 문서 | 위치 |
|---|---|
| 이전 세션 컨텍스트 | [NEXT-2025-12-09] item-crud-session-context.md |
| DynamicForm 분리 계획 | [PLAN-2025-12-08] dynamic-form-separation-plan.md |
| Radix UI 버그 해결 | claudedocs/guides/[FIX-2025-12-05] radix-ui-select-controlled-mode-bug.md |