Files
sam-docs/projects/5130-migration/phase-3-mapping/field-mapping.md
kent e217266376 docs: 5130 → SAM 품목 마이그레이션 문서 추가
- MASTER_PLAN.md: 마이그레이션 전체 계획
- PROGRESS.md: 진행 상황 및 최종 결과
- phase-1: 5130 소스 스키마 분석
- phase-2: SAM 타겟 스키마 분석
- phase-3: 필드 매핑 설계

마이그레이션 결과:
- 총 425건 품목 이관 완료 (models 18, parts 36, parts_sub 117, BDmodels 59, BOM 195)
- tenant_id: 287 (경동기업)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 13:49:28 +09:00

5.8 KiB

5130 → SAM 필드 매핑

작성일: 2025-12-21 대상: 경동기업 (tenant_id: 287)


1. 기본 설정

항목
tenant_id 287
대상 회사 경동기업
제외 주일기업 (별도 테넌트로 추후 진행)

2. 테이블 매핑

2.1 models → items (완제품)

5130 (models) SAM (items) 변환 규칙
model_id (item_id_mappings에 기록) 매핑 추적용
- tenant_id 고정값: 287
- item_type 고정값: 'FG'
model_name code 그대로 (KSS01 등)
model_name name 그대로
- unit 기본값: 'SET'
description description 그대로
major_category attributes.major_category 스크린/스라트
finishing_type attributes.finishing_type SUS마감/EGI마감
guiderail_type attributes.guiderail_type 그대로
is_deleted deleted_at 1이면 현재시간, 0이면 NULL
created_at created_at 그대로
updated_at updated_at 그대로

items.attributes JSON 구조:

{
  "major_category": "스크린",
  "finishing_type": "SUS마감",
  "guiderail_type": "일반형",
  "source": "5130",
  "source_table": "models",
  "source_id": 12
}

2.2 parts → items (부품)

5130 (parts) SAM (items) 변환 규칙
part_id (item_id_mappings에 기록) 매핑 추적용
- tenant_id 고정값: 287
- item_type 고정값: 'PT'
part_name code 정규화 필요 (공백→언더스코어)
part_name name 그대로
unit unit 그대로 (SET 등)
spec attributes.spec 규격 (120*70 등)
memo description 그대로
unitprice attributes.unit_price varchar→decimal 변환
img_url attributes.image_url 그대로
is_deleted deleted_at 변환
created_at created_at 그대로
updated_at updated_at 그대로

items.attributes JSON 구조:

{
  "spec": "120*70",
  "unit_price": 15000,
  "image_url": "/img/parts/xxx.jpg",
  "source": "5130",
  "source_table": "parts",
  "source_id": 49
}

2.3 parts_sub → items (원자재)

5130 (parts_sub) SAM (items) 변환 규칙
subpart_id (item_id_mappings에 기록) 매핑 추적용
- tenant_id 고정값: 287
- item_type 고정값: 'RM'
subpart_name code 정규화
subpart_name name 그대로
- unit 기본값: 'EA'
material attributes.material SUS 1.2T 등
bendSum attributes.bend_sum varchar→decimal
plateSum attributes.plate_sum varchar→decimal
finalSum attributes.final_sum varchar→decimal
unitPrice attributes.unit_price varchar→decimal
computedPrice attributes.computed_price varchar→decimal
lineTotal attributes.line_total varchar→decimal
image_url attributes.image_url 그대로
is_deleted deleted_at 변환
created_at created_at 그대로
updated_at updated_at 그대로

items.attributes JSON 구조:

{
  "material": "SUS 1.2T",
  "bend_sum": 5000,
  "plate_sum": 3000,
  "final_sum": 8000,
  "unit_price": 1500,
  "computed_price": 1500,
  "line_total": 15000,
  "image_url": "/img/sub/xxx.jpg",
  "source": "5130",
  "source_table": "parts_sub",
  "source_id": 64
}

3. 관계 매핑

3.1 models ↔ parts 관계

entity_relationships 테이블 사용:

필드
tenant_id 287
parent_type 'items'
parent_id (models에서 생성된 items.id)
child_type 'items'
child_id (parts에서 생성된 items.id)
order_no parts.part_id 순서
metadata {"quantity": parts.quantity, "relation": "bom"}

3.2 parts ↔ parts_sub 관계

entity_relationships 테이블 사용:

필드
tenant_id 287
parent_type 'items'
parent_id (parts에서 생성된 items.id)
child_type 'items'
child_id (parts_sub에서 생성된 items.id)
order_no parts_sub.subpart_id 순서
metadata {"quantity": parts_sub.quantity, "relation": "bom"}

4. ID 매핑 (item_id_mappings)

마이그레이션 추적을 위해 원본 ID 기록:

source_table source_id item_id
models 12 (생성된 ID)
parts 49 (생성된 ID)
parts_sub 64 (생성된 ID)

5. 코드 생성 규칙

5.1 items.code 생성

item_type 코드 패턴 예시
FG (완제품) 원본 model_name 유지 KSS01, KSE01
PT (부품) PT-{정규화된 이름} PT-UPPER_BRACKET
RM (원자재) RM-{정규화된 이름} RM-SUS_1_2T_FRONT

5.2 정규화 규칙

  • 한글 → 영문 변환 (또는 유지)
  • 공백 → 언더스코어
  • 특수문자 제거
  • 대문자 변환

6. 타입 변환 규칙

원본 타입 대상 타입 변환 로직
varchar (가격) decimal 숫자만 추출, NULL이면 0
tinyint (is_deleted) timestamp (deleted_at) 1→now(), 0→NULL
enum (major_category) varchar (JSON) 그대로 저장
datetime timestamp 그대로

7. 마이그레이션 순서

  1. models → items (FG) - 18건
  2. parts → items (PT) - 37건
  3. parts_sub → items (RM) - 134건
  4. models↔parts 관계 → entity_relationships
  5. parts↔parts_sub 관계 → entity_relationships
  6. item_id_mappings 기록

총 예상: items 189건, entity_relationships 171건