DynamicItemForm 개선: - 품목코드 자동생성 기능 추가 - 조건부 표시 로직 개선 - 불필요한 컴포넌트 정리 (DynamicField, DynamicSection 등) - 타입 시스템 단순화 새로운 기능: - Sales 페이지 마이그레이션 (견적관리, 거래처관리) - 공통 컴포넌트 추가 (atoms, molecules, organisms, templates) 문서화: - 구현 문서 및 참조 문서 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.3 KiB
6.3 KiB
품목코드/품목명 자동생성 하드코딩 내역
MVP용 프론트엔드 구현 - 추후 백엔드 API 또는 품목기준관리 설정으로 이관 필요
개요
PT(부품) 품목 등록 시 품목코드와 품목명을 자동 생성하는 로직이 프론트엔드에 하드코딩되어 있습니다. 이 문서는 해당 하드코딩 내역을 정리하여 추후 백엔드 이관 시 참고할 수 있도록 합니다.
품목코드/품목명 생성 규칙
적용 범위
| 품목유형 | 품목코드 형식 | 품목명 형식 | 예시 |
|---|---|---|---|
| PT (부품) | 영문약어-순번 |
한글 조합 | GR-001 / 가이드레일 130×80 |
| FG (제품) | 품목명-규격 |
직접 입력 | 스크린-2400 |
| SM (부자재) | 품목명-규격 |
직접 입력 | 볼트-M8 |
| RM (원자재) | 품목명-규격 |
직접 입력 | 알루미늄-T1.5 |
| CS (소모품) | 품목명-규격 |
직접 입력 | 테이프-50mm |
하드코딩 항목 1: 영문약어 매핑 테이블
파일 위치
src/components/items/DynamicItemForm/utils/itemCodeGenerator.ts
상수명
ITEM_CODE_PREFIX_MAP
내용
export const ITEM_CODE_PREFIX_MAP: Record<string, string> = {
// 부품 - 조립품
'가이드레일': 'GR',
'케이스': 'CASE',
'브라켓': 'BRK',
// 부품 - 구매품
'모터': 'MOTOR',
'제어기': 'CTL',
'전동개폐기': 'OPENER',
'스위치': 'SW',
'센서': 'SENSOR',
'리모컨': 'REMOTE',
// 부품 - 절곡품
'레일': 'RAIL',
'커버': 'COVER',
'플레이트': 'PLATE',
// 제품
'스크린': 'SCREEN',
'셔터': 'SHUTTER',
'방화스크린': 'FIRE-SCR',
'롤스크린': 'ROLL-SCR',
// 원자재
'알루미늄': 'ALU',
'스틸': 'STEEL',
'철판': 'STEEL',
// 부자재/소모품
'볼트': 'BOLT',
'너트': 'NUT',
'와셔': 'WASHER',
'나사': 'SCREW',
};
마이그레이션 방안
- 품목기준관리 API에
영문약어 설정기능 추가 - 또는 별도
item_code_prefix테이블 생성
하드코딩 항목 2: 절곡품 코드 체계
파일 위치
src/components/items/DynamicItemForm/utils/itemCodeGenerator.ts
상수명
BENDING_CODE_SYSTEM
내용
export const BENDING_CODE_SYSTEM = {
// 품목명코드 (category2)
품목명코드: {
'R': '가이드레일',
'S': '스크린',
'C': '케이스',
'B': '박스',
'T': '트림',
'L': '라스틱',
'G': '기타',
},
// 종류코드 (category3)
종류코드: {
'M': '마감',
'T': '티',
'C': '채널',
'D': '단면',
'S': '상부',
'U': '하부',
'F': '플랫',
'P': '피스',
'L': '리드',
'B': '브라켓',
'E': '엔드',
'I': '이음',
'A': '각재',
},
// 길이코드 매핑 (mm → 코드)
길이코드: {
1219: '12',
2438: '24',
3000: '30',
3500: '35',
4000: '40',
4150: '41',
4200: '42',
4300: '43',
},
};
사용 예시
- 품목명코드
R+ 종류코드C+ 길이코드24=RC24 - 가이드레일 채널 2438mm
마이그레이션 방안
- 품목기준관리 API에
코드 체계 설정기능 추가 - 또는 별도
bending_code_system테이블 생성
하드코딩 항목 3: 조립품 설치유형 매핑
파일 위치
src/components/items/DynamicItemForm/utils/itemCodeGenerator.ts
상수명
INSTALLATION_TYPE_MAP
내용
export const INSTALLATION_TYPE_MAP: Record<string, string> = {
'standard': '표준형',
'top': '상부형',
'bottom': '하부형',
'side': '측면형',
'custom': '맞춤형',
};
사용 예시
- 품목명
가이드레일+ 설치유형standard→가이드레일표준형
마이그레이션 방안
- 품목기준관리 필드 옵션으로 설정 가능하도록 변경
자동생성 함수 목록
1. generateItemCode (품목코드 생성)
// 용도: PT(부품) 품목코드 자동생성
// 형식: 영문약어-순번 (예: GR-001, MOTOR-002)
generateItemCode(itemName: string, existingCodes: string[]): string
2. generateBendingItemCode (절곡품 품목코드)
// 용도: 절곡품 전용 품목코드
// 형식: 품목명코드 + 종류코드 + 길이코드 (예: RC24)
generateBendingItemCode(category2: string, category3: string, lengthMm: number): string
3. generateAssemblyItemName (조립품 품목명)
// 용도: 조립품 품목명 자동생성
// 형식: 품목명 + 설치유형 + 측면규격*길이코드 (예: 가이드레일표준형50*60*24)
generateAssemblyItemName(itemName, installationType, sideSpecWidth, sideSpecHeight, lengthMm): string
4. generateBendingItemName (절곡품 품목명)
// 용도: 절곡품 품목명 자동생성
// 형식: 품목명 + 종류 + 규격 (예: 가이드레일 채널 50×30)
generateBendingItemName(category2Label, category3Label, specification): string
5. generatePurchasedItemName (구매품 품목명)
// 용도: 구매품 품목명 자동생성
// 형식: 품목명 + 규격 (예: 모터 0.4KW)
generatePurchasedItemName(itemName, specification): string
추후 개발 계획
Phase 1: 품목기준관리 설정 확장
영문약어필드 추가 (품목명 필드 옵션에 매핑)코드생성규칙설정 UI 추가- API에서 코드 생성 규칙 반환
Phase 2: 백엔드 이관
- 품목 저장 시 백엔드에서 코드 자동 생성
- 순번 관리를 DB 시퀀스로 변경 (동시성 처리)
- 프론트엔드 하드코딩 제거
Phase 3: 고급 기능
- 품목별 코드 생성 규칙 커스터마이징
- 코드 중복 검사 강화
- 코드 변경 이력 관리
관련 파일
| 파일 | 설명 |
|---|---|
src/components/items/DynamicItemForm/utils/itemCodeGenerator.ts |
하드코딩된 매핑 및 생성 함수 |
src/components/items/DynamicItemForm/index.tsx |
품목코드 자동생성 로직 호출 |
claudedocs/item-master/[IMPL-2025-12-02] item-code-auto-generation.md |
기존 품목코드 자동생성 문서 |
변경 이력
| 날짜 | 내용 |
|---|---|
| 2025-12-03 | PT 품목코드 영문약어-순번 형식 구현 |
| 2025-12-03 | 하드코딩 내역 문서화 |