Files
sam-react-prod/claudedocs/item-master/[REF] item-code-hardcoding.md
byeongcheolryu 3be5714805 refactor: 품목관리 시스템 리팩토링 및 Sales 페이지 추가
DynamicItemForm 개선:
- 품목코드 자동생성 기능 추가
- 조건부 표시 로직 개선
- 불필요한 컴포넌트 정리 (DynamicField, DynamicSection 등)
- 타입 시스템 단순화

새로운 기능:
- Sales 페이지 마이그레이션 (견적관리, 거래처관리)
- 공통 컴포넌트 추가 (atoms, molecules, organisms, templates)

문서화:
- 구현 문서 및 참조 문서 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 12:48:41 +09:00

6.3 KiB
Raw Blame History

품목코드/품목명 자동생성 하드코딩 내역

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: 품목기준관리 설정 확장

  1. 영문약어 필드 추가 (품목명 필드 옵션에 매핑)
  2. 코드생성규칙 설정 UI 추가
  3. API에서 코드 생성 규칙 반환

Phase 2: 백엔드 이관

  1. 품목 저장 시 백엔드에서 코드 자동 생성
  2. 순번 관리를 DB 시퀀스로 변경 (동시성 처리)
  3. 프론트엔드 하드코딩 제거

Phase 3: 고급 기능

  1. 품목별 코드 생성 규칙 커스터마이징
  2. 코드 중복 검사 강화
  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 하드코딩 내역 문서화