Files
sam-react-prod/claudedocs/item-master/[NEXT-2025-12-09] item-crud-session-context.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

3.1 KiB

품목관리 세션 체크포인트

작성일: 2025-12-09 수정일: 2025-12-09 상태: Phase 1 완료!


🎉 2025-12-09 완료 사항

백엔드 작업 완료

항목 상태
field_key 저장 방식 변경 (98_unitunit) 완료
시스템 예약어 검증 (SystemFields.php) 완료
중복 검증 로직 완료
에러 메시지 한국어화 완료

프론트엔드 정리 완료

항목 삭제된 코드 상태
Edit 모드 매핑 로직 ~140줄 완료
fieldAliases 객체 25줄 완료
extractFieldName() 함수 7줄 완료
fieldKeyMap 생성 로직 25줄 완료
fieldKeyToBackendKey 변환 60줄 완료
총 삭제 ~200줄

빌드 검증

npm run build  # ✅ 성공

📋 새로운 데이터 흐름

field_key 통일 완료

등록: { "unit": "EA" } → 그대로 저장
조회: DB → { "unit": "EA" } → 그대로 표시
수정: { "unit": "EA" } → 그대로 저장

※ 기존 레거시 데이터 (98_unit 형식)도 그대로 동작

코드 변경 요약

Before (복잡한 매핑):

// Edit 모드: 155줄 매핑 로직
const fieldAliases = { 'unit': '단위', ... };
const extractFieldName = (key) => { ... };
const fieldKeyMap = { ... };
// 여러 단계 변환...

After (직접 사용):

// Edit 모드: 15줄
useEffect(() => {
  if (mode !== 'edit' || !structure || !initialData || isEditDataMapped) return;
  resetForm(initialData);  // 직접 사용!
  setIsEditDataMapped(true);
}, [mode, structure, initialData, isEditDataMapped, resetForm]);

남은 작업

파일 업로드 500 에러 (검수 중)

위치: /app/Http/Controllers/Api/V1/ItemsFileController.php (Line 7)
문제: use App\Http\Responses\ApiResponse (잘못된 경로)
수정: use App\Helpers\ApiResponse (올바른 경로)

Phase 2: 컴포넌트 분리 (선택적)

계획 문서: [PLAN-2025-12-08] dynamic-form-separation-plan.md

  • 공통 컴포넌트 추출 (FileUpload, BOM, AutoItemCode)
  • 품목별 컴포넌트 생성 (FG, PT, SM, RM, CS)
  • DynamicFormCore 리팩토링

📋 테스트 체크리스트

등록 테스트

  • FG(제품) 등록
  • PT-조립부품 등록
  • PT-절곡부품 등록
  • SM/RM/CS 등록

수정 테스트

  • 수정 페이지 진입 → 데이터 로드 확인
  • 드롭다운 값 표시 확인
  • 수정 후 저장 → 값 유지 확인

파일 업로드 테스트

  • 절곡부품 전개도 업로드
  • 조립부품 전개도 업로드
  • 제품 시방서/인정서 업로드

📚 관련 문서

문서 위치
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
백엔드 field_key 검증 스펙 sam-api/docs/specs/item-master-field-key-validation.md