제품관리 (PM) 와이어프레임

로우파이 웹 와이어프레임 · 근거: DE22-1 §04 제품관리 명세(정본) + Figma 시안 fileKey xFn4Tq2vnfAr42PpuxLbbP · 18 프레임 (8화면 시안 참고 재작성 · SCR-PM-012 는 6탭 + 공정구성 팔레트 1상태 · SCR-PM-018 은 입력·결과 안내 2상태 · SCR-PM-026 제품식별번호 관리(#3105) 1상태 · SCR-PM-021·022·024 는 대상 자재 고르개 각 1상태 · SCR-PM-021 사용자 템플릿 수정 창(#3693) 1상태)
← 와이어프레임 목록
SCR-PM-010 제품 목록 /products Figma: node 631:6750

제품 목록 조회. Figma 기준: 상단 검색바(검색 필드 + [검색] 버튼), 좌측 분류 필터는 트리 라디오가 아니라 6개 드롭다운(형식·등급·형태·치수 / 상태·재질) + "복사된 제품만 보기" 토글, 우측 7열 테이블, 하단 가운데 페이지네이션. [+ 제품 등록]은 제목 우측.

진입 — 사이드바 > 제품관리 / 글로벌 검색 ⌘K

다음 단계 — 행 클릭 → SCR-PM-012 · [+ 제품 등록] → SCR-PM-011.

  1. + 제품 등록 버튼 — 우측 상단 고정. 클릭 시 SCR-PM-011 빈 등록 폼으로 이동한다.
  2. 검색 바 — 코드·제품명·modelCode 부분일치 검색. [검색] 클릭 시 목록 조회 파라미터로 전달된다.
  3. 분류 필터(드롭다운 6종) — 형식·등급·형태·치수 4종과 상태·재질 2종을 겹쳐 적용한다. [↺ 초기화]로 전체 리셋.
  4. 복사된 제품만 보기 토글 — ON 시 copiedFrom 값이 있는 사본 제품만 남긴다.
  5. 목록 테이블 — 제품코드·제품명·분류경로·복사 이력·BOM상태·수정일·액션 7열. 행 클릭 시 SCR-PM-012 상세로 진입한다. [액션] 열의 danger [삭제] 버튼은 SCR-PM-012 [기본정보] 탭과 동일한 3단계 삭제 게이트로 연결된다.
  6. 페이지네이션 — 하단 가운데, 서버 페이징으로 다음/이전 페이지를 이동한다.
관련 API Swagger UI ↗
  • GET/api/pm/products — 분류 필터·검색어·복사여부·페이지 파라미터로 제품 목록 조회
  • GET/api/pm/products/{productCode}/dependencies — 삭제 전 참조 의존 확인
  • DELETE/api/pm/products/{productCode} — 제품 삭제
제품관리  ›  제품 목록
CMD+K 검색
🔔3
제품 목록1+ 제품 등록
2검색 바
코드/제품명/modelCode 검색 검색
3분류 필터 (드롭다운) ↺ 초기화
형식전체
등급전체
형태전체
치수전체

상태전체 (전체·초안·배포)
재질전체

4복사된 제품만 보기
5목록 테이블
제품코드제품명분류 경로복사 이력BOM 상태수정일액션
DHS-AE150-TRIPLE-15-COPY3225mm 단열 미서기 이중창CURTAIN_WALL › FESFE › 2X2 › FJIEF원본 : DHS-AE150-TRIPLE-15-COPY(상태)YYYY.MM.DD삭제
DHS-AE150-TRIPLE-15225mm 단열 미서기 이중창 (원본)CURTAIN_WALL › FESFE › 2X2 › FJIEF—(상태)YYYY.MM.DD삭제
DHS-AE150-TRIPLE-14스모크 사본 1-1CURTAIN_WALL › L2 › 2X2 › FJIEF원본 : DHS-AE150-TRIPLE-15(상태)YYYY.MM.DD삭제
6‹1 / 2›
빈 상태 변형: 테이블 본문에 안내 문구 + [등록] 버튼 (Figma "필터 없음" 변형).
SCR-PM-011 제품 등록 /products/new

세그먼트(브랜드·계열·유리타입·리비전)로 제품 코드를 조립하고 분류·기본·규격·특성을 입력해 신규 등록.

진입 — SCR-PM-010 [+ 제품 등록] 버튼 클릭 / SCR-ES-018 제품 팔레트·라이브러리 [+ 제품 등록](returnTo — #2112)

다음 단계 — [등록] 성공 → SCR-PM-012 [기본정보] 탭(자동 이동) — 머리에 한 번 「다음 단계: 자재 구성표(BOM)를 짭니다」 + [자재·공정구성으로] → SCR-PM-013 · returnTo 를 받았으면 제품 상세로 넘긴다 (#2107 2·6).

  1. 제품 코드 생성(세그먼트 입력) — 브랜드·계열·유리타입 3개 드롭다운과 리비전(1~99 드롭다운 또는 영문·숫자 직접 입력 — 예 1x1·CR3, 하이픈 불가, #2889)을 조합해 modelCode 실시간 미리보기와 productClassPath 미리보기를 함께 보여준다. modelCode 조립 후 debounce 300ms 로 중복을 검증해 ✅ 사용가능 / ❌ 활성 중복(기존 제품 링크) / ♻️ 휴지통 중복(복원 안내 + [복원] 버튼) 3상태로 안내한다(R-PRD-TRASH-RESTORE). 저장 전 중복 검증 전용 API가 카탈로그에 없다.
  2. 분류 정보 — L1 형식·L2 등급·L3 형태(필수)·L4 치수크기·재질·단열여부(라디오)를 입력한다. L4 치수크기는 형식(L1)이 미서기일 때만 필수이고 그 밖의 형식은 선택이다(#2523). 미서기는 치수계열로 보강 규칙(TPL-REINFORCE-SIZE)과 견적의 보강 판정이 갈리기 때문이다. 형식을 미서기로 바꾸면 라벨이 「L4 치수크기」(필수 표시)로 바뀐다.
  3. 기본 정보 — 제품명(필수) 텍스트 입력. 조달청 물품목록번호 칸은 두지 않는다(#2330 화면 반영, 결정 #2293 A-5) — 제품식별번호의 주인은 식별번호라 번호는 식별번호 마스터에 넣고, 등록 요청도 이 번호를 싣지 않는다(product-register-page.tsx 562줄 주석, origin/dev a55f8178). 그 제품이 대응하는 식별번호와 그 번호는 SCR-PM-012 상세에서 읽기 전용으로 본다. 제품명 아래에 편창 칸 수 고르개를 둔다(선택 입력, #1617). 형식(L1)이 미서기일 때만 보인다 — 커튼월은 멀리언·트랜섬 구조라 편창 축이 아예 없어, 늘 보이면 채울 수 없는 칸을 내미는 셈이 된다. 고르는 값은 2편창·2편창 · 편(두 칸 폭이 다름)·3편창이고 「선택 안 함」이 기본이다 — 편은 #2295 가 더했고 서버 반영 전이다. 편을 고르면 leafCount 2 와 leafAsymmetric 참으로 저장한다. 비워 두는 것이 정상이라 배지·경고를 붙이지 않는다 — 빈 값은 「모른다」라는 뜻이다. 확인하지 않은 제품에 임의로 2 를 넣지 않는다(3편창 제품이 코너 여덟 칸짜리 화면으로 그려지고 현장이 그대로 잰다).
  4. 규격 · 특성 — 표준 폭/높이/깊이/무게(mm/kg)와 제품 특성 다중 체크박스 7종. 색상·마감재는 옵션구성 탭에서 별도 관리한다.
  5. 등록 후 안내 alert — 등록 후 [자재/공정구성] 탭에서 자재구성(EBOM)을 설정하라는 안내 문구.
  6. 저장 버튼 — 성공 시 SCR-PM-012 상세 화면으로 자동 이동한다.
관련 API Swagger UI ↗
  • POST/api/pm/products — 신규 제품 등록
  • GET/api/cm/codes — 브랜드·계열·유리타입 등 세그먼트 드롭다운 카탈로그 조회(SCR-CM-006 공급)
  • POST/api/pm/products/{productCode}/restore — 휴지통 중복 코드 발견 시 [복원] 액션(설계 요구, 화면 미표현)
  • GET/api/pm/products?code=X&exists=true — 제품코드 실시간 중복검증(debounce 300ms)은 기존 checkCodeAvailable 조회를 재사용한다(전용 /check-code 엔드포인트 불필요, #413). 등록 POST /api/pm/products 의 409 응답으로 최종 확정한다.
제품관리  ›  제품 목록  ›  제품 등록
CMD+K 검색
🔔3
1제품 코드 생성 (세그먼트 입력)
브랜드DHS 계열AE225 유리타입D 리비전1 ▾ · 직접 입력
→ 생성 미리보기: DHS-AE225-D-1
→ productClassPath: 미서기 › 마스 › 단창
✅ 사용 가능modelCode 중복 검증(debounce 300ms) — ❌ 활성 중복 시 기존 제품 상세(SCR-PM-012) 링크 안내 / ♻️ 휴지통 중복 시 [복원] 액션 버튼으로 전환.

2분류 정보
L1 형식미서기
L2 등급마스
L3 형태단창
L4 치수크기치수계열 선택
재질AL
단열 여부◉ 단열○ 비단열
제작도 형태○ 정형○ 비정형◉ 모름비정형이면 제작도가 없을 때 제조 제작도 현황에서 「업로드 필요」로 보인다 (#2908)

3기본 정보
제품명미서기 이중창
편창 칸 수선택 안 함형식이 미서기일 때만 보인다 · 고르는 값: 2편창 · 2편창 · 편(두 칸 폭이 다름) · 3편창 (편은 #2295)

4규격 · 특성
표준 폭(mm)1800
표준 높이(mm)2100
표준 깊이(mm)100
표준 무게(kg)45.0
색상 옵션·마감재는 옵션구성에서 별도 관리
제품 특성 ☐ 방음☐ 단열☐ 방화 ☐ 강화유리☐ 방화 43MM☐ 히든바☐ 복층유리
5제품 등록 후 [자재/공정구성]에서 자재구성(EBOM)을 설정하세요.
취소6저장
새 단추 (#2112 — 정본 「이탈」 행)자재·공정구성으로자리: 도착한 SCR-PM-012 [기본정보] 탭 머리 — 등록 직후 한 번
SCR-PM-012 제품 상세 · [기본정보] 탭 /products/:productCode Figma: node 1713:9274

제품 마스터 조회. Figma 기준: 라벨·값 2열 폼(필드별 "읽기전용" 배지 없이 값만 노출), 편집 필드는 제품명·대표 이미지·편창 칸 수 세 칸(#1617 · 조달청 물품목록번호는 #2330 에서 읽기 전용 「식별번호 · 제품식별번호」 행으로 옮겼다), 하단 단일 버튼 행 [카탈로그 내보내기][판매 중단][삭제][취소][저장].

진입 — SCR-PM-010 [행 클릭] / SCR-PM-011 [저장] 완료 후 자동 이동 / SCR-PM-010 [복사 이력] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프

다음 단계 — 견적에서 왔으면(returnTo) 셸 머리에 「견적에서 왔습니다」 + [견적으로 돌아가기] — 탭을 옮겨도 떨구지 않는다(새 창이면 창을 닫는다) · 탭 줄로 [자재/공정구성]·[옵션구성]·[버전이력] (#2107 6).

  1. 상세 탭 바 — 기본정보·자재/공정구성·옵션구성·시뮬레이터·버전이력·복사 이력 6탭 전환. 현재 [기본정보] 활성.
  2. 제품 코드 — mono 서체로 읽기전용 표시.
  3. 읽기전용 필드 그룹 — 분류경로·분류 네 칸·BOM상태·표준규격·표준무게·색상마감재·제품특성·설명은 모두 조회 전용이다. BOM상태는 표준 자재 구성표(BOM)가 없는 제품에 「미설정」으로 보인다.
  4. 제품명 — 편집 가능한 세 필드 중 하나(#390 확정 · #1617 이 편창 칸 수를 더했다. #908 이 더했던 조달청 물품목록번호는 #2330 에서 읽기 전용이 됐다).
  5. 대표 이미지 업로드 — JPG/PNG 5MB, [업로드하기] 버튼. 제품명·편창 칸 수와 함께 편집 가능한 필드다.
  6. 하단 버튼 행 — [카탈로그 내보내기][판매 중단][삭제][취소][저장]. [삭제]는 3단계 게이트(영향확인→영향안내→최종확인(입력)→삭제완료) 흐름으로 진입한다.
  7. 분류 네 칸 — 분류 경로 바로 아래에 형식(L1)·등급(L2)·형태(L3)·치수(L4) 네 칸을 읽기 전용으로 둔다. 값이 없는 축은 - 로 보인다. 분류 경로는 값이 있는 축만 골라 이어 붙이므로 빈 축이 자리를 남기지 않는다 — 어느 축이 비었는지는 이 네 칸에서만 알 수 있다(#1144 결정). 치수(L4)가 비어 있는 제품만 그 칸이 고르개로 열린다(#2523). 고르고 [저장] 하면 「치수계열은 한 번 정하면 바꿀 수 없습니다」 확인 창을 거친 뒤 저장한다. 값이 들어간 뒤에는 다른 세 칸처럼 읽기 전용이다. 등록 때 비워 둔 제품에 치수계열 템플릿을 적용할 길을 여는 자리다.
  8. 식별번호 · 제품식별번호 — 읽기 전용 행이고 [저장] 대상이 아니다(#2330 화면 반영, 결정 #2293 A-5). 종전 이 자리의 조달청 물품목록번호 입력칸(#908)은 걷었다 — 제품식별번호의 주인이 식별번호이기 때문이다. 이 제품이 대응하는 식별번호마다 한 줄씩 「모델명 · 품명 · 제품식별번호 {번호} · 격자 {격자}」로 보인다(번호가 없으면 「미등재」, 모든 격자 대응은 「모든 격자」). 대응이 없으면 「대응하는 식별번호가 없습니다.」를 보인다. 아래에 「제품식별번호는 식별번호 마스터에서 정합니다. 이 화면에서는 고칠 수 없습니다.」를 적는다. 근거는 product-basic-info-tab.tsx 601~627줄이다(origin/dev a55f8178).
  9. 상태 배지 — 제품 상태(ACTIVE/DISCONTINUED)를 「활성」·「단종」으로 보인다(#937 as-built). 읽기 전용이고 [저장] 대상이 아니다 — 상태를 바꾸는 것은 아래 [판매 중단]/[판매 재개] 전용 단추다. 휴지통(soft delete)과 다르다.
  10. 판매 중단 / 판매 재개 — 제품 상태 전이 전용 단추다. 현재 상태에 따라 라벨이 [판매 중단]↔[판매 재개]로 바뀐다(양방향 토글). 클릭하면 확인 뒤 PATCH /api/pm/products/{productCode}/status(IF-PM-PRD-003)를 부른다 — [저장]이 부르는 PUT 과 다른 주소다(#482 A안). 「판매 중단」은 행을 지우지 않고 조회 가능한 상태로만 바꾼다.
  11. 편창 칸 수 — 편집 가능하고 [저장] 대상이다(#1617). 형식(L1)이 미서기일 때만 보인다. 값이 제품보다 늦게 확인되는 일이 잦아 이 화면에서 나중에 채워 넣는다. 값이 없으면 「선택 안 함」으로 보이고 배지·경고를 붙이지 않는다 — 비어 있는 것이 흠이 아니라 「모른다」라는 정상 상태이기 때문이다. 고르는 값은 2편창·2편창 · 편(두 칸 폭이 다름)·3편창 셋이다 — 편은 #2295 가 더했다(서버 반영 전). 편을 고르면 leafCount 2 와 leafAsymmetric 참으로 저장한다. 편창 옆 칸 가로 칸(OPT-DIM-WL)이 3편창과 편에서만 견적에 서기 때문이다. 지우는 길이 없다. 한 번 넣은 값은 지울 수 없고 2↔3 으로 바꿀 수만 있다(서버가 값을 안 보내면 기존 값을 그대로 두고, 숫자 칸이라 「빈 글자로 지운다」 규약을 못 쓴다 — DE24-1 §5.3.4 leafCount). 값이 이미 있는 제품에서 「선택 안 함」을 고를 수 있게 두면 비웠는데 값이 남는 것을 사용자가 겪는다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode} — 제품 상세 조회
  • GET/api/pm/products/{productCode}/procurement-models — 이 제품이 대응하는 식별번호·제품식별번호 (IF-PM-PCM-001, 읽기 전용)
  • PUT/api/pm/products/{productCode} — 제품명·대표 이미지·편창 칸 수 저장 (빈 치수는 한 번 채움). 조달청 물품목록번호는 싣지 않는다
  • PATCH/api/pm/products/{productCode}/status — 판매 중단·재개 상태 전이 (IF-PM-PRD-003, ACTIVE↔DISCONTINUED 양방향). [저장]의 PUT 과 별개 주소다
  • DELETE/api/pm/products/{productCode} — 3단계 게이트 확정 후 소프트 삭제
  • GET/api/pm/products/{productCode}/dependencies — 삭제 게이트 의존성 카운트 조회
  • MISSINGGET /api/pm/products/{productCode}/catalog-pdf — [카탈로그 내보내기] 버튼 대응 API — 범위 밖 확정(#413). PDF 생성 인프라가 없고, 설계문서도 'PDF IF 미신설, Phase 2 defer'로 명시한다.
제품 상세  ›  기본정보
CMD+K 검색
🔔3
제품 상세
1기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 이력
기본정보
2제품 코드DHS-AE225-D-1
3분류 경로미서기 › 마스 › 단창
7형식 (L1)미서기
등급 (L2)마스
형태 (L3)단창
치수 (L4)- (한 번 채우기)
BOM상태미설정
9상태활성
4제품명미서기 이중창
8식별번호 · 제품식별번호U-P-SM225-A · 미서기 이중창 225 · 제품식별번호 25304780 · 격자 모든 격자
제품식별번호는 식별번호 마스터에서 정합니다. 이 화면에서는 고칠 수 없습니다.
11편창 칸 수2편창
표준 규격W1800 × H2100 × D100 mm
표준 무게45.0 kg
색상·마감재옵션구성 탭에서 관리
제품 특성복층유리
설명미서기 이중창 표준 사양 …
5대표 이미지
JPG/PNG 5MB대표 이미지를 업로드합니다.업로드하기
6하단 버튼 (단일 행, 우측 정렬)
카탈로그 내보내기10판매 중단삭제취소저장
[삭제] → 3단계 삭제 확인 팝업 (Figma 변형: 영향 확인 → 영향 안내 → 최종 확인(입력) → 삭제 완료). [판매 중단] → 확인 뒤 PATCH .../status 로 상태만 바꾼다(라벨은 현재 상태에 따라 [판매 재개]로 뒤집힌다).
새 단추 (#2112 — 정본 「이탈」 행)견적으로 돌아가기자리: 제품 상세 셸 머리 — returnTo 가 있을 때
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 /products/:productCode Figma: node 1713:10199

구 SCR-PM-013 BOM 트리뷰(node 665:3342 EBOM·672:4203 MBOM)를 별도 화면이 아니라 이 탭 안으로 흡수했다. EBOM/MBOM 세그먼트 전환 + 필터(공급구분·자재분류) + 3분할(자재 검색 팔레트 · BOM 트리 · 선택 노드 상세)을 탭 안에서 바로 편집한다(요약 링크 아님).

진입 — SCR-PM-010 [행 클릭] / SCR-PM-011 [저장] 완료 후 자동 이동 / SCR-PM-010 [복사 이력] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [자재/공정구성] 탭 전환 / SCR-PM-003 [BOM 사용처] 탭 행 클릭(직접 진입)

다음 단계 — [버전 저장] 뒤 그 판이 초안이면 「v{N} 은 초안입니다. 견적에서 쓰려면 배포해야 합니다」 + [버전이력에서 배포하기] → SCR-PM-014(그 판을 골라 둔 채) · 팔레트 「검색 결과 없음」 아래 [+ 자재 등록]·[+ 공정 등록] (같은 창 + returnTo) · 판이 없으면 [+ 새 BOM 시작 (자재구성)] (#2107 1·3·9).

  1. EBOM/MBOM 서브탭 — 자재구성(EBOM)·공정구성(MBOM) 전환. MBOM 전환 시 필터에 기준 치수·공정·보기(자재중심/공정중심)가 추가되고 노드 상세에 공정코드·작업순서·작업장·작업 방식(사내·외주, #909)·lossRate·절단산식이 노출된다.
  2. 필터(공급구분·자재분류) — 공통/외창/내창 공급구분과 PROFILE/GLASS 등 자재분류로 트리를 좁힌다. 공급구분이 빈 줄은 부모 줄의 값으로 거른다. 노드 상세는 빈 값을 「상속(비움)」으로, 글자 「공통」을 「공통」으로 따로 보인다(#3231).
  3. 좌측 자재 검색 팔레트 — 코드·품명 검색 결과를 트리로 드래그하면 선택 노드의 자식으로 추가된다. 반제품 행은 체크박스로 여러 개를 고를 수 있고, 체크한 행을 끌면 고른 반제품이 한꺼번에 같은 자리에 붙는다(#2420). 일부가 막히면 들어간 것·막힌 것·까닭을 토스트 한 번으로 알린다. 공정구성(MBOM) 서브탭에서는 이 자리 맨 위에 「이 제품의 자재」 목록이 더 붙는다 — 공정구성 팔레트 프레임(#2471).
  4. 가운데 BOM 트리 — 품목 코드/품목명 검색, [전체펼침]/[전체접기]. ASSEMBLY 노드에만 자식을 허용하고 형제 순서가 의미를 가진다. 줄 왼쪽 띠와 유형 배지를 네 가지 색으로 가른다 — 반제품 노랑 · 원자재 청록 · 부자재 녹색 · 공정 회색(구분이 빈 자재는 청록). 트리 위에 같은 견본의 범례 한 줄을 둔다. 공정구성(MBOM) 서브탭은 줄 맨 왼쪽에 「맨 바깥 반제품 안 작업 순서」 번호 열이 더 붙는다(공정 줄 굵게 · 자재 줄 흐리게 · 반제품 줄 빈칸, 줄 차례는 그대로) — DE22-1 §05 「#3698 결정」.
  5. 우측 선택 노드 상세 — 품목코드·품목명·유형·수량/단위·규격·대체부품을 표시한다. 자재분류는 자재(MATERIAL) 노드에서만, 기능군은 자재구성(EBOM) 의 L2 반제품에서만 줄이 생긴다 — 값이 없는 칸은 '—' 로 자리를 남기지 않고 줄째로 감춘다(#762, DE22-1 §05 「노드 유형별 표시 규칙」). 편집 모드에서는 수량을 숫자 칸으로 바로 고친다(#3864, 두 탭 모두·루트 포함). 그리고 [하위 항목 추가]/[트리에서 빼기] 버튼을 제공한다. [하위 항목 추가] 창은 반제품·공정·자재 탭 모두 체크로 여러 개 골라 [N개 추가]로 넣고, 고른 차례대로 붙인다(#3859). [트리에서 빼기]는 이 BOM 트리에서 노드 한 개를 떼는 동작이며 품목 마스터는 남는다 — 반제품 품목 자체를 지우는 동작(팔레트 반제품 행 ⋯ 메뉴)과 다르다(#734). 하위가 있는 노드를 빼면 확인창 「트리에서 빼기」를 먼저 띄운다. 본문은 「이 BOM 트리에서 「{이름}」 노드를 뺍니다. 하위 N줄도 함께 빠집니다. 품목 자체는 남습니다.」, 단추는 [취소]·[빼기]다. N 은 그 노드 아래 모든 줄 수다. 하위가 없는 노드는 바로 뺀다. 우클릭 메뉴와 이 단추가 같은 확인창을 쓴다(#3869). 공정구성(MBOM) 편집 모드에서는 공급구분을 이 패널의 고르기 칸에서 고른다(#3865). 작업 순서·로스율 숫자 칸은 칸을 떠날 때와 Enter 에 한 번만 변경으로 올린다(#3868). 공정구성 편집 모드에서 Ctrl(⌘)+클릭·Shift+클릭으로 두 줄 이상 고르면 이 자리에 「N줄 고름 — 일괄 편집」 패널이 선다. 작업장·로스율·기준 치수·공급구분 넷 중 [바꾸기]를 켠 칸만 [적용]에 싣는다(#3866).
  6. 하단 액션 — [BOM 전개 검산]/[BOM 비교]/[버전 저장]. 저장 시 새 BOM 버전이 생성된다. [BOM 전개 검산]은 트리의 모든 가지가 원자재까지 이어졌는지 확인하는 자리다 — 발주·견적에 쓸 수량이 아니다(#686). 공정구성 탭에서 열면 「작업 순서 점검」 절이 붙는다(#3930 프레임).
  7. BOM 미등록 변형 — 트리 영역 중앙에 [+ 첫 노드 추가 (L1 완제품)] 버튼으로 신규 BOM을 시작한다. 그 옆에 공정구성 탭은 [자재구성에서 가져오기], 자재구성 탭은 [공정구성에서 가져오기]를 둔다(#3905 3단계 · ✅ 화면 반영 wims2.0_fe aea4e7dc · 서버 #3904). 초안 판·편집 역할이고, 받는 표가 서버에서 비었고, 같은 판 다른 보기에 줄이 하나 이상 있을 때만 보인다. 얼린 판에서는 감춘다. 저장하지 않은 변경이 있으면 잠기고, 말풍선은 [엑셀 올리기]와 같은 「저장하지 않은 변경 N건을 먼저 [버전 저장] 하거나 되돌리세요.」다. 확인 창은 「같은 판 자재구성 N줄을 공정구성으로 베낍니다. 베낀 뒤 두 표는 따로 고칩니다.」를 알린다. N 은 원본 표의 줄 수(루트 포함)다. [가져오기]를 누르면 편집 버퍼를 거치지 않고 서버가 바로 저장한다. 성공하든 실패하든 두 보기 트리를 다시 읽는다.
  8. 반제품 하위 구성 기준 고르기 (#2421) — 이미 쓰이는 반제품을 놓으면 기준 트리의 하위 구성이 복사되어 함께 붙는다. 같은 트리에 그 반제품이 있거나 후보 구성이 하나뿐이면 묻지 않는다. 서로 다른 구성이 둘 이상일 때만 이 창을 띄운다. 가져와 붙이면 토스트와 노드 상세 도움말로 「붙인 반제품은 복사본입니다. 원래 반제품을 고쳐도 여기는 바뀌지 않습니다.」를 알린다. 서버·화면 반영 전.
  9. 기준 고르기의 세부 규칙 (#2446) — 화면이 보내는 값: 같은 트리에 있으면 AUTO, 후보가 하나이거나 사람이 골랐으면 그 제품 코드, 후보가 없거나 빈 반제품을 골랐으면 칸을 싣지 않는다. 「같은 트리」는 편집 중인 트리(이번 편집에서 먼저 붙인 것 포함)로 판정하고, 후보는 지금 보기(EBOM·MBOM)와 같은 것만 쓴다. 같은 구성은 한 줄로 묶고 대표(편집 중인 제품, 없으면 제품 코드 오름차순 첫째)의 코드를 보낸다. 여러 개를 놓으면 고르기가 필요한 반제품만 구역으로 모은 창 하나를 띄우고, [빈 반제품으로 붙이기] 는 구역의 마지막 줄이다 — 한 개일 때도 같은 창이다. [취소] 는 이번 놓기 전체를 없던 일로 한다. 토스트는 놓는 순간 한 번 띄우고, 제품 코드 앞말은 한 개를 놓았고 기준이 다른 제품일 때만 붙인다. 노드 상세 도움말은 이번 편집에서 붙인 노드와 그 밖의 반제품으로 문장을 가른다. 정본은 DE22-1 §05 「#2446 — 빈 규칙을 채운다」 상자다. 서버·화면 반영 전.
  10. [엑셀 내려받기 ▾] (#3158) — 판 표시·「총 자재」 배지 오른쪽 끝. 편집 모드가 아니어도 보이고 조회 역할도 쓴다. 메뉴는 「자재구성(EBOM) 받기」·「공정구성(MBOM) 받기」 둘이고, 지금 보는 판 번호를 늘 실어 그 판 전체를 받는다(초안·배포·폐기 모두, 거르개·보기는 걸지 않는다). 저장하지 않은 변경이 있으면 메뉴 아래에 「서버에 저장된 판을 내려받습니다. 저장하지 않은 변경 N건은 담기지 않습니다」를 둔다. 파일 이름 {productCode}_{ebom|mbom}_yyyyMMdd.xlsx, 판 번호는 시트 이름에 있다. 머리글은 「단계」·「기준 치수」다(서버 반영 완료 — #3164). 이 파일이 올리기 양식이다 — 받은 파일을 고쳐 [엑셀 올리기] 로 빈 초안 판에 올린다(#3854 가 #3178 의 「올리기 양식이 아니다」를 뒤집었다). 공정구성 파일은 끝에 「세로 산식(2차)」·「기본 산식 표시」·「작업 방식」 세 칸이 더해져 19칸이 된다(✅ 서버 반영 #3884). 정본은 DE22-1 §05 「엑셀 내려받기 — BOM 트리」 절이다. 화면 반영 완료 — #3163.
  11. [엑셀 올리기] (#3854) — [엑셀 내려받기 ▾] 바로 오른쪽(표식 11). 지금 보는 판이 초안이고 편집 권한이 있을 때만 보이고, 지금 탭 트리에 줄이 있거나 저장하지 않은 변경이 있으면 잠긴다(말풍선으로 까닭을 알린다). 지금 탭의 보기(자재구성 또는 공정구성) 하나를 받은 양식 그대로의 파일로 채운다. 파일을 고르면 곧바로 미리보기 — 「줄 · 오류 · 경고」 요약과 오류·경고 줄만 담은 표를 보인다. 모든 줄이 통과해야 [반영] 이 열리고, 한 줄이라도 오류면 아무것도 저장하지 않는다. 경고(절단수량산식은 옮기지 않음, #3867)는 「경고를 확인했습니다」 체크 뒤 반영한다. 줄이 있는 트리에 섞거나 갈아끼우지 않는다 — 다시 채우려면 뿌리 줄을 [트리에서 빼기] 로 비운다. 정본은 DE22-1 §05 「엑셀 올리기 — BOM 트리」 절과 DE24-1 §7.3.2-B(IF-DATA-EXCEL-008)다. ✅ 서버 반영 #3884 · ✅ 화면 반영 #3885.
  12. 보기 방식 「목록 | 노드」 (#3917) — 탭 줄 오른쪽 끝(표식 12). 기본은 [목록](이 그림). [노드]를 누르면 같은 판·같은 보기를 왼쪽→오른쪽 노드 그래프로 그리는 읽기 전용 보기로 바뀌고 주소에 mode=graph 가 붙는다. 저장하지 않은 편집은 남는다. 그림은 노드 보기 프레임 · 정본 DE22-1 §05 「#3917 노드 보기」 상자(✅ 화면 반영 wims2.0_fe PR #1463·#1470·#1471·#1472).
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom — EBOM/MBOM 트리 조회
  • PUT/api/pm/products/{productCode}/bom — 노드 추가/삭제/이동 등 트리 편집 저장(버전 저장)
  • GET/api/pm/products/{productCode}/bom/export?format=xlsx&view=ebom|mbom&version= — [엑셀 내려받기 ▾] — 보는 판의 BOM 트리 xlsx (IF-DATA-EXCEL-002, DE24-1 §7.3.1 · #3158 · 화면 반영 완료 #3163)
  • POST/api/pm/products/{productCode}/bom/import?view=ebom|mbom&version=&mode=PREVIEW|APPLY — [엑셀 올리기] — 빈 초안 판의 한 보기 트리를 xlsx 로 채운다, 미리보기 뒤 모두 통과해야 반영 (IF-DATA-EXCEL-008, DE24-1 §7.3.2-B · #3854 · ✅ 서버 반영 #3884 · ✅ 화면 반영 #3885)
  • PUT/api/pm/products/{productCode}/bom — 빈 판 [자재구성에서 가져오기]·[공정구성에서 가져오기](#3905) — 루트 ADD 한 줄(부모 없음, qty 1)을 바로 저장한다. 공정구성 탭은 view=MBOM + subtreeSource=FROM_EBOM, 자재구성 탭은 view=EBOM + FROM_MBOM 이다(IF-PM-BOM-001, 서버 #3904)
  • GET/api/pm/materials — 좌측 자재 검색 팔레트 조회
  • GET/api/pm/boms/{bomVersion}/process-worktime — 공정별 작업시간(MBOM 모드 관련 — 이 탭엔 버튼 미노출)
  • GET/api/pm/products/{productCode}/bom/requirement-summary?view=EBOM|MBOM&version= — [BOM 전개 검산] 버튼 대응 API(IF-PM-BOM-REQ-001, DE24-1 §5.3.5). 자재(itemCode)별 전개·합산, baseQty(손실 미반영)·requiredQty(손실 반영) 동시 제공. 규칙·치수·옵션구성·제품 수량은 반영하지 않는다 — 응답이 ruleEvaluated·dimensionEvaluated·layoutApplied 를 모두 false 로 밝힌다(#686). config별 분리는 Phase 1 미지원. 집계 사양 DE 확정(#489).
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 이력
자재/공정구성 · BOM 트리뷰
DHS-AE225-D-1 v3 (배포) 총 자재 47 10엑셀 내려받기 ▾ 11엑셀 올리기 Figma: node 665:3342 Figma: node 672:4203
1자재구성(EBOM)공정구성(MBOM)
12목록노드
2공급구분공통 / 외창 / 내창 자재분류PROFILE / GLASS / …
MBOM 전환 시 필터에 기준 치수·공정·보기(자재중심/공정중심)가 추가되고, 우측 노드 상세에 공정코드·작업순서·작업장·작업 방식(사내·외주, #909)·lossRate·절단산식이 함께 표시됩니다.
3자재 검색
자재 코드 / 품명 검색
2개 고름 · 끌면 함께 붙습니다 [선택 해제]
☑ ASY-FRM 창틀 반제품
☑ ASY-SSH 창짝 반제품
MAT-GLS 복층유리
검색 결과를 트리로 드래그 → 자식 추가 · 체크한 반제품은 묶음으로 끌린다
4선택 검색 · BOM 트리
품목 코드 / 품목명 검색전체펼침전체접기
▽ 미서기 이중창 L1반제품
▽ └ 구조부 (E-STR) L2반제품
└ 상틀 프로파일 L3자재
└ 하틀 프로파일 L3자재
▽ └ 유리부 (E-GLZ) L2반제품
└ 복층유리 L3자재
▽ └ 개폐부 (E-HDW) L2반제품
▽ └ 밀봉부 (E-SEL) L2반제품
▽ └ 방충부 (E-SCR) L2반제품
드롭 = 대상 노드 자식 추가 · ASSEMBLY 노드에만 자식 허용 · 형제 순서 = 의미 · 우측 배지 = 유형(ASSEMBLY · 원자재 · 부자재 · MATERIAL) — 줄 왼쪽 띠와 같은 색(#3698)
자재구성(EBOM) L2 = 기능군 5종(구조부·유리부·개폐부·밀봉부·방충부). 공정구성(MBOM) 으로 바꾸면 L2 가 반제품(ASY-FRM·ASY-SSH 등)으로 바뀐다.
5선택 노드 상세
품목 코드미서기 이중창 (L1)
품목명미서기 이중창
유형반제품
수량 / 단위1 EA
규격 (W×H×D)—
대체 부품—
지금 고른 것은 L1 완제품이라 자재분류·기능군 줄이 없다. 자재분류는 자재(MATERIAL) 노드에서만, 기능군은 자재구성(EBOM) 의 L2 반제품에서만 나온다. 값이 없는 칸은 '—' 로 남기지 않고 줄째로 감춘다.
편집 모드에서는 「수량 / 단위」의 수량이 숫자 칸이다. 칸을 떠나거나 Enter 면 확정하고, Escape 면 되돌린다. 0 보다 큰 수가 아니면 원래 값으로 돌아간다. 트리 셀 더블클릭과 같은 PUT UPDATE(qty)를 쌓는다. 단위·「(공정 미지정)」 묶음·조회 모드는 읽기 전용이다(#3864).
MBOM 모드에서 추가되는 필드 — 공정코드 · 예상시간(읽기 전용, #3774) · 작업순서 · 작업장 · 작업 방식 · 공급구분 · lossRate · 절단산식. 공정 노드를 고르면 맨 아래에 「메모」 여러 줄 칸(500자, 「N / 500」)이 더해진다 — 같은 피스의 쓰임 구분(외부 체결용·최종 조립용) 같은 참고 글을 적는다. 메모가 있는 공정 줄 끝에는 작은 「메모」 표시가 붙고 마우스를 올리면 전문이 보인다. 작업지시·제작지시서·MES 에는 싣지 않는다(#3998 결정, 서버·화면 반영 전). 「공급구분」은 상속(비움)·공통·외창·내창 넷 가운데 고르는 select 다. 비움이면 칸 아래에 「상속(비움) · 외창」 꼴로 물려받은 값을 보인다. 자재구성(EBOM) 탭과 조회 모드는 글만 보인다. [산식 편집] 창은 공급구분을 더는 고치지 않는다(#3865). 「작업순서」·「lossRate」 숫자 칸은 칸을 떠날 때와 Enter 에 한 번만 변경으로 올리고, Escape 는 되돌린다. 값이 같으면 올리지 않는다. 로스율은 소수 한 자리로 보이므로 손대지 않고 떠나면 올리지 않는다. 수량 칸(#3864)과 같은 꼴이다(#3868). 「작업장」은 공통 코드 WORK_CENTER 목록에서 고르는 select 다(「WC-CUT · 절단」). 목록 밖 지금 값은 「(목록에 없음)」 줄로 남기고 노란 안내를 붙이며, 서버는 목록 밖 새 값을 422 BOM_WORK_CENTER_INVALID 로 거절한다(#3862). 「작업 방식」은 사내 (공정 기본값 따름) 처럼 풀어낸 값을 보이고, 인라인 select 로 직접 고른다. 한 번에 보이는 갈래는 셋이다 — 사내 / 외주 / 빈 자리 하나이며, 빈 자리의 이름은 그 노드에 풀어낸 값이 있으면 「공정 기본값 따름」, 없으면 「미정」이다(둘은 같은 자리의 다른 표기라 함께 뜨지 않는다). 값이 노드에 없으면 풀어낸 값 옆에 「(공정 기본값 따름)」을 회색으로 붙인다(R-BOM-EXEC-TYPE, #909·#1157).
하위 항목 추가트리에서 빼기
[트리에서 빼기] — 하위가 있는 노드를 빼면 확인창 「트리에서 빼기」를 먼저 띄운다. 본문은 「이 BOM 트리에서 「{이름}」 노드를 뺍니다. 하위 N줄도 함께 빠집니다. 품목 자체는 남습니다.」, 단추는 [취소]·[빼기]다. N 은 그 노드 아래 모든 줄 수다. 하위가 없는 노드는 바로 뺀다. 우클릭 메뉴와 이 단추가 같은 확인창을 쓴다(#3869).
6BOM 전개 검산BOM 비교버전 저장
7BOM 미등록 변형: 트리 영역 중앙에 안내 문구 + [+ 첫 노드 추가 (L1 완제품)] 버튼 (Figma "BOM 없음" 변형). 그 옆에 [자재구성에서 가져오기](공정구성 탭) · [공정구성에서 가져오기](자재구성 탭) 단추가 선다(#3905). 버전 이력(v1~v3)은 [버전이력] 탭에서 관리합니다.
8반제품을 놓을 때 — 하위 구성 기준 고르기 (#2421 · 서버·화면 반영 전)
토스트 — DHS-AE225-U 의 구성을 가져왔습니다. 붙인 반제품은 복사본입니다. 원래 반제품을 고쳐도 여기는 바뀌지 않습니다.
같은 문장을 그 반제품 노드의 우측 선택 노드 상세 아래에 회색 도움말로 둔다(토스트를 놓친 사람용). 빈 반제품으로 붙였을 때는 두 안내 모두 띄우지 않는다.
9반제품 여러 개를 놓을 때 — 고르기가 필요한 것만 한 창에 모은다 (#2446 · 서버·화면 반영 전)
토스트(여러 개) — 반제품 4개를 추가했습니다. 붙인 반제품은 복사본입니다. 원래 반제품을 고쳐도 여기는 바뀌지 않습니다.
구역은 반제품마다 하나이고 마지막 줄이 「빈 반제품으로 붙이기」다. 모든 구역을 고르기 전에는 [가져오기] 가 잠긴다(그림은 둘째 구역을 아직 고르지 않았다). 고르기가 필요 없는 반제품(같은 트리에 이미 있거나 후보 구성이 하나)은 창에 넣지 않는다. 토스트는 놓는 순간 한 번 띄운다 — 결과 문장 뒤에 빈 반제품 문장(「가져올 하위 구성이 없는 K개는 빈 반제품으로 붙였습니다.」), 복사본 문장 차례다. 여러 개일 때는 「{제품 코드} 의 구성을 가져왔습니다.」 앞말을 붙이지 않는다. 자식 수는 그림용 예시다.
⑨-1 노드 상세 회색 도움말 — 두 가지 (#2446)
이번 편집에서 하위를 가져와 붙인 노드 — 하위 구성은 [버전 저장] 뒤에 보입니다. 붙인 반제품은 복사본입니다. 원래 반제품을 고쳐도 여기는 바뀌지 않습니다.
그 밖에 하위를 가진 반제품 노드(루트 제외) — 이 반제품의 하위 구성은 이 위치에만 적용됩니다. 다른 위치나 다른 제품의 같은 반제품은 바뀌지 않습니다.
트리 응답에는 어느 노드가 복사본인지 알려 주는 칸이 없어 둘로 갈랐다. 앞 문장은 화면을 떠나기 전까지만 둔다(저장 뒤에는 「하위 구성은 [버전 저장] 뒤에 보입니다.」를 뗀다). 하위가 없는 반제품에는 도움말을 두지 않는다.
11[엑셀 올리기] — 빈 초안 판의 미리보기 창 (#3854 · ✅ 서버 반영 #3884 · ✅ 화면 반영 #3885)
토스트(성공) — 310줄을 올렸습니다.
그림은 오류 줄이 하나 있어 [반영] 이 잠긴 모습이다. 표에는 오류 줄을 먼저, 경고 줄을 다음에 두고 통과한 줄은 넣지 않는다. 오류가 0 이면 표 위에 「310줄을 v1 초안 공정구성에 넣습니다.」를 두고, 경고가 있으면 체크한 뒤 [반영] 이 열린다. 반영이 422(오류 줄)로 돌아오면 창을 닫지 않고 표를 다시 그린다. 성공하면 창을 닫고 트리를 다시 읽는다. 머리 줄 [엑셀 올리기] 단추는 줄이 있는 트리에서 잠긴다(그림의 머리 줄은 배포판 v3 이라 실제로는 감춰진다 — 표식 위치만 보인다).
새 단추 (#2112 — 정본 「이탈」 행)버전이력에서 배포하기자리: 하단 액션 줄 — 초안 저장 뒤+ 자재 등록자리: 팔레트 자재 검색 「검색 결과 없음」 아래+ 공정 등록자리: 팔레트 공정 검색 「검색 결과 없음」 아래
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 · 공정구성(MBOM) — 「이 제품의 자재」 목록 /products/:productCode?view=MBOM

공정구성(MBOM)을 짤 때 자재구성(EBOM)에 넣어 둔 자재를 검색 없이 목록에서 골라 끌어다 놓는다(#2471). 팔레트 맨 위에 같은 판 자재구성의 자재를 묶음별로 펼치고, 종전 검색 칸 셋은 그 아래에 그대로 둔다. 새 서버 계약은 없다. 1단계는 목록과 끌어다 놓기, 2단계는 놓은 자재 표시·거르개·여러 개 한 번에 놓기다. 그림은 2단계까지 들어간 모습이다. 화면 반영 전.

진입 — [자재/공정구성] 탭에서 [공정구성(MBOM)] 서브탭을 누른다. 나머지 영역(필터·트리·노드 상세·하단 액션)은 자재/공정구성 프레임과 같다.

  1. 「이 제품의 자재」 목록 (1단계) — 팔레트 맨 위. 같은 판 자재구성의 자재(MATERIAL)만 올리고 같은 자재 코드는 한 줄로 묶는다. 구역은 안쪽에서 따로 굴리고(최대 320px) 제목을 누르면 접힌다. 제목 옆 「35종 가운데 1종 남음」은 2단계다.
  2. 「아직 안 놓은 것만」 거르개 (2단계) — 켜면 놓은 줄과 다 놓은 묶음을 감춘다. 모두 놓았으면 「자재구성의 자재를 모두 놓았습니다.」를 보인다. 조회 상태에서도 쓸 수 있다.
  3. 묶음 머리글 (1단계) — 자재구성 트리에서 루트 바로 아래 반제품(L2 — 조회 응답의 level 1)별로 묶어 접고 편다. 반제품은 끌 수 있는 줄이 아니라 머리글이다. 루트 바로 아래 자재는 맨 끝 「묶음 없음」에 모은다. 「놓음 n / m」과 묶음 체크는 2단계다.
  4. 목록 줄 — 두 줄 짜임 (1단계) — 윗줄은 자재명(굵게, 두 줄까지 줄바꿈, 넘으면 말줄임 + 말풍선). 아랫줄은 자재 코드 · 자재구성 수량 합 · 단위. 줄을 끌어 트리 노드에 놓으면 종전 자재 놓기와 똑같이 자식으로 붙고 수량은 기본값 1 이다(자재구성 수량을 옮겨 적지 않는다).
  5. 놓음 표시 (2단계) — 편집 중인 공정구성 트리에 같은 자재 코드가 하나라도 있으면 「✓ 놓음 · N곳」, 없으면 「아직 안 놓음」. 수량은 견주지 않는다. 놓은 줄도 잠그지 않아 다른 자리에 또 놓을 수 있다.
  6. 여러 개 한 번에 놓기 (2단계) — 줄마다 체크박스. 고르면 「N개 고름 · 끌면 함께 붙습니다 [선택 해제]」가 뜨고, 체크한 줄을 끌면 고른 자재가 목록 차례대로 함께 붙는다(#2420 방식). 부모가 반제품이 아니면 모두 막는다. 반제품 고름과는 섞이지 않는다.
  7. 종전 검색 칸 셋 — 「자재 검색」·「반제품 검색」·「공정 검색」은 그대로다. 자재구성에 없는 자재는 여기서 찾아 넣는다. 2단계에서 자재 검색 결과 가운데 이 제품 자재구성에 있는 줄에 「이 제품」 딱지를 붙이고 받아 온 결과 안에서 위로 올린다.
  8. 공정구성 트리 — 끌어다 놓는 자리. 반제품 노드에만 자식을 허용한다. 하위 구성을 가져와 붙인 반제품(#2421) 안의 자재는 [버전 저장] 뒤에 놓음으로 센다 — 그동안 목록 아래에 「방금 붙인 반제품의 하위 자재는 저장한 뒤에 반영됩니다.」를 둔다.
  9. 자재구성이 빈 제품 · 조회 상태 — 자재구성에 자재가 없으면 안내와 [자재구성 탭으로 가기] 를 보인다. 배포된 판·권한 없음에서는 목록을 보이되 끌기와 체크를 막는다. 공정중심 보기도 초안이면 끌 수 있다(#3905).
  10. 「노드 추가」 창 자재 탭 — 공정구성 보기에서 열면 검색어가 빈 첫 화면에 같은 목록을 보인다. 글자를 치면 종전 전체 자재 검색 결과로 바뀐다. 1단계는 줄을 누르면 한 개를 넣고 닫는다. 2단계는 체크하고 [N개 추가]. #3859 부터는 검색 결과에서 고른 자재와 한 목록으로 합쳐 고른 차례로 넣고, 공정 탭도 체크로 여러 개 넣는다(공정은 고른 차례대로 작업 순서를 받는다).
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=EBOM&version={지금 보는 판} — 목록의 재료. 공정구성 탭에서 자재구성 트리를 한 번 더 부른다(IF-PM-BOM-001, 계약 그대로)
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={지금 보는 판} — 편집 중인 공정구성 트리. 화면이 두 트리의 자재 코드를 견줘 놓음을 가른다(서버는 가르지 않는다)
  • PUT/api/pm/products/{productCode}/bom — 놓은 자재는 편집 버퍼의 ADD 로 쌓여 [버전 저장] 때 한 번에 간다(view=MBOM, 종전 그대로)
  • GET/api/pm/materials — 종전 전체 자재 검색(검색어가 있을 때만 · 코드 오름차순 50건)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) 편집 중
DHS-AE225-U v18 (초안) 총 품목 413
자재구성(EBOM)공정구성(MBOM)
1이 제품의 자재 ▾ 35종 가운데 1종 남음
자재구성(EBOM) v18 에 넣은 자재입니다. 끌어서 공정구성에 놓으세요.
2☐ 아직 안 놓은 것만
62개 고름 · 끌면 함께 붙습니다 [선택 해제]
3▾ ☐ 우수 후렘 조립모듈(225) 놓음 10 / 10
4☑ 19년 225mm 1등급 미서기 후렘-외부 A
UNI-A225-101A · 2 EA 5✓ 놓음 · 3곳
☑ 19년 225mm 1등급 미서기 후렘-내부 B
UNI-A225-101B · 2 EA ✓ 놓음 · 3곳
☐ 후렘이탈방지
02-0097 · 4 EA ✓ 놓음 · 1곳
▾ ☐ 우수 내측 창짝 조립모듈(225) 놓음 7 / 8
☐ P홈클리핑문짝
UNI-A225-401 · 4 EA 아직 안 놓음
☐ 자력승강 이중창 하부 셋트(225우수)
02-0122-2 · 2 EA ✓ 놓음 · 1곳
▸ ☐ 우수 외측 창짝 조립모듈(225) 놓음 9 / 9
▸ ☐ 우수 방충망 조립모듈(225) 놓음 8 / 8
줄 = 윗줄 자재명(두 줄까지) · 아랫줄 코드 · 자재구성 수량 · 놓음 표시. 끌어서 트리에 놓으면 자식으로 붙는다(수량 1).
7자재 검색
자재 코드 / 명 검색
UNI-A225-101A 19년 225mm… 이 제품
UNI-A160-101 160mm 후렘…
반제품 검색
반제품 코드 / 명 검색
공정 검색
공정 코드 / 명 검색
8공정구성 트리 — 끌어다 놓는 자리
품목 코드 / 품목명 검색전체펼침전체접기
▽ 225 우수 미서기 이중창 L1반제품
▽ └ 우수 후렘 조립모듈(225) L2반제품
└ P-CUT-01 절단공정
└ 19년 225mm 1등급 미서기 후렘-외부 A자재
└ 19년 225mm 1등급 미서기 후렘-내부 B자재
▽ └ 우수 내측 창짝 조립모듈(225) L2 ← 여기에 놓는다반제품
└ 자력승강 이중창 하부 셋트(225우수)자재
토스트(여러 개) — 자재 2개를 추가했습니다.
한 개를 놓으면 종전 자재 놓기와 같다. 자재·공정 노드 위에 놓으면 막고 종전 토스트를 띄운다. 빈 트리에 여러 개를 놓으면 막고 「빈 트리에는 먼저 완제품 루트 반제품 하나를 넣으세요」를 알린다.
방금 붙인 반제품의 하위 자재는 저장한 뒤에 반영됩니다. — 하위 구성을 가져와 붙인 반제품이 편집 버퍼에 있을 때만 목록 아래에 보인다
9목록 자리의 다른 상태
자재구성이 빈 제품
이 버전의 자재구성에 자재가 없습니다. 자재구성을 먼저 짜면 여기에 목록이 나옵니다.
자재구성 탭으로 가기
조회 상태 (배포된 판 · 권한 없음)
목록·놓음 표시·거르개는 보인다. 체크박스가 없고 줄을 끌 수 없다. 안내 문장은 「자재구성(EBOM) v17 에 넣은 자재입니다.」까지만 적는다. 공정중심 보기에서는 「N곳」을 적지 않는다.
읽지 못했을 때
자재구성 목록을 읽지 못했습니다.
다시 시도
10「노드 추가」 창 — 자재 탭 첫 화면 (공정구성 보기에서 열었을 때)
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 · 공정구성(MBOM) — 공정 노드 [다른 공정으로 교체] /products/:productCode?view=MBOM

자재가 이미 붙은 공정 노드를 다른 공정으로 바꾼다(#2550). 저장 한 번에 공정 노드의 공정과, 그 공정을 가리키던 형제 행(자재·공정 중간품)의 공정 코드가 함께 바뀐다. 「(공정 미지정)」으로 떨어지는 행은 없다. 서버 연산은 IF-PM-BOM-001 PUT REPLACE_PROCESS 다. 서버·화면 반영 전.

진입 — 공정구성(MBOM) 편집 중(초안 판)에 공정 노드를 우클릭하거나, 공정 노드를 골라 노드 상세의 단추를 누른다. 나머지 영역은 자재/공정구성 프레임과 같다.

  1. 우클릭 메뉴 — 공정(PROCESS) 노드에만 [다른 공정으로 교체] 줄이 더 붙는다. 자재·반제품 노드에는 없다. 자재중심·공정중심 두 보기에 모두 보인다.
  2. 노드 상세 단추 — 공정 노드를 고르면 편집 단추 줄에 같은 이름 단추가 선다. 배포·폐기된 판과 조회 권한에서는 메뉴 줄과 단추를 감춘다(초안 판에서만 한다).
  3. 지금 공정과 옮겨 갈 행 — 창 맨 위에 지금 공정과 함께 옮겨 갈 행 수를 적는다. 옮겨 가는 행은 같은 부모 바로 아래에서 옛 공정 코드를 가리키는 행이다(자재와 공정 중간품 반제품). 새 공정 코드를 이미 가리키던 「(공정 미지정)」 행이 있으면 「(공정 미지정) 행 K개도 새 공정에 붙습니다」를 더 적는다.
  4. 공정 고르기 — 팔레트 공정 검색과 같은 목록이다. 지금 공정과 같은 부모 아래 이미 있는 공정은 흐리게 두고 「이 반제품에 이미 있음」을 붙여 고르지 못하게 한다(합치지 않는다 — 서버도 422 BOM_PROCESS_NODE_DUPLICATE). 비활성 공정은 나오지 않는다.
  5. 작업 방식 · 작업장 — 공정을 고르면 열린다. 작업 방식의 처음 값은 새 공정 기본값을 따르는 빈 자리다(옛 공정을 두고 고른 덮어쓰기는 비운다). 작업장은 지금 값을 처음 값으로 둔 고르기 칸이다 — 선택지는 공통 코드 WORK_CENTER 활성 값이고, 공정 마스터에 작업장 칸이 없어 새 공정 기준 값이 없으므로 사람이 확인한다(#3862).
  6. 옵션별 규칙 알림 — 이 제품 규칙 가운데 지시문이 옛 공정 코드와 똑같은 값을 가진 규칙이 있을 때만 선다. 이름 세 개까지와 [옵션별규칙에서 보기](새 탭). 저장은 막지 않고 규칙도 고치지 않는다 — 규칙은 모든 판에 걸리기 때문이다(#2503 과 같은 결). 목록을 읽지 못하면 「옵션별 규칙을 확인하지 못했습니다」만 적는다.
  7. 교체 뒤 트리 — [교체]를 누르면 편집 버퍼에 연산 하나가 쌓이고 트리를 바로 고쳐 그린다. 공정 노드의 코드·이름만 바뀌고 작업 순서·형제 순서·옮겨 간 행의 수량·산식은 그대로다. 서버에는 [버전 저장] 때 간다.
  8. 토스트 [되돌리기] — 교체 직후 토스트에 [되돌리기]를 둔다. 누르면 이 연산을 버퍼에서 걷고 교체 전 모습으로 돌린다. 토스트가 닫히거나 다른 편집을 하면 사라진다. 그 뒤에는 같은 메뉴로 옛 공정으로 다시 교체한다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={지금 보는 판} — 편집 중인 트리. 옮겨 갈 행 수는 화면이 이 트리에서 센다(IF-PM-BOM-001, 계약 그대로)
  • GET/api/pm/processes?search=&page=&size= — 공정 고르기 목록(팔레트 공정 검색과 같다)
  • POST/api/pm/processes/{processCode}/item — 새 공정의 PROCESS 품목이 없으면 먼저 만든다(IF-PM-PRC-ITEM-001, 이미 있으면 그대로 돌려준다)
  • GET/api/pm/products/{productCode}/rules — 옛 공정 코드를 가리키는 옵션별 규칙 세기(flat 규칙 목록, 계약 그대로)
  • PUT/api/pm/products/{productCode}/bom — [버전 저장] 때 {"op":"REPLACE_PROCESS","nodeId":…,"childItemCode":"P-CUT-02","workCenter":…,"executionType":null} 를 싣는다(#2550 새 연산 · view=MBOM)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) 편집 중
DHS-AE225-U v18 (초안)
자재구성(EBOM)공정구성(MBOM)
공정구성 트리 — 공정중심 보기
▽ 225 우수 미서기 이중창 L1반제품
▽ └ 우수 후렘 조립모듈(225) L2반제품
▽ └ P-CUT-01 절단 작업 순서 1공정
   └ 19년 225mm 1등급 미서기 후렘-외부 A자재
   └ 19년 225mm 1등급 미서기 후렘-내부 B자재
▽ └ P-WLD-01 모서리 용접 작업 순서 2공정
1우클릭 메뉴 — 공정 노드
위로 이동
아래로 이동
복사
다른 공정으로 교체…
트리에서 빼기
7교체 뒤 트리 (저장 전)
▽ └ 우수 후렘 조립모듈(225) L2반제품
▽ └ P-CUT-02 정밀 절단 작업 순서 1 · 바뀜공정
   └ 19년 225mm 1등급 미서기 후렘-외부 A자재
   └ 19년 225mm 1등급 미서기 후렘-내부 B자재
▽ └ P-WLD-01 모서리 용접 작업 순서 2공정
8토스트 — P-CUT-01 절단을 P-CUT-02 정밀 절단으로 바꿨습니다. 자재 5개가 함께 옮겨 갔습니다. 되돌리기
노드 상세 — P-CUT-01 절단
유형공정
예상시간30초/개 (읽기 전용) 공정관리에서 고치기 ↗
예상시간은 공정관리에서만 고친다(#3774). 값이 없으면 「미입력 — 공정별 작업시간이 0초로 셈」을 경고색으로 보인다. 링크는 공정 상세를 새 탭으로 연다.
작업 순서1
작업장WC-CUT · 절단
작업 방식사내 (공정 기본값 따름)
공급구분상속(비움) ▾
상속(비움) · 공통 — 편집 모드 공정구성에서만 고르는 칸이다(#3865).
2다른 공정으로 교체트리에서 빼기
이 공정 노드는 하위가 없어 [트리에서 빼기] 를 누르면 바로 빠진다. 하위가 있는 노드만 하위 N줄 확인창을 띄운다(#3869). 공정에 붙은 자재가 (공정 미지정)으로 간다는 확인은 공정중심 보기 편집(#3905) 몫이다.
공정 고르기 창
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 · 공정구성(MBOM) — 공정중심 보기에서 공정을 먼저 놓고 자재를 붙인다 /products/:productCode?view=MBOM&groupBy=process

공정을 먼저 정한 뒤 자재를 붙이는 입력 방식이다(#3820, 2026-10-22 UAT 회의 요청). 공정중심 보기에서도 초안을 고친다. 저장 구조는 자재중심 평면 그대로이고, 화면이 묶음 위의 동작을 IF-PM-BOM-001 PUT 평면 연산으로 바꿔 보낸다. 서버 변경은 [가져오기] 하나다(DE22-1 §05 「#3820 결정」). 1·2단계는 화면 반영 wims2.0_fe 1b9be777(#3905)이다. 3단계 [가져오기]도 화면 반영 wims2.0_fe aea4e7dc(#3905, 서버 #3904)이다. 단추는 자재/공정구성 프레임의 빈 판 안내(표식 7)에 있다.

진입 — 공정구성(MBOM) 편집 중(초안 판·편집 역할)에 보기를 「공정중심(그룹)」으로 고른다. 왼쪽은 지금의 자재중심 입력, 오른쪽은 이번에 여는 공정중심 입력이다. 그림은 기준 제품 DHS-AE225-U 후렘 반제품의 일부만 담았다. 작업 순서는 DE35-1 §3.7.6 을 따랐고, P-ASM-04·P-ASM-11 같은 공정 코드는 그림용 예시다. 나머지 영역은 자재/공정구성 프레임과 같다.

  1. 편집 모드 — 초안 판이고 편집 역할이면 공정중심 보기에서도 편집 모드를 켠다. 「읽기 전용 보기 · 편집은 자재중심(평면)에서 가능」 알림은 없어졌고 [버전 저장]을 둔다. 배포·폐기된 판과 조회 역할은 지금처럼 읽기만 한다.
  2. 공정 추가 — 팔레트 「공정 검색」의 공정을 반제품 줄에 놓는다. 작업 순서 창은 열지 않는다. 작업 순서는 모듈 전체 규칙 nextModuleWorkOrder(#3322)가 바로 매긴다(#3905 사용자 결정). 새 공정은 빈 묶음으로 선다. 연산은 ADD 공정 노드다.
  3. 공정 아래 자재 붙이기 — 자재·「이 제품의 자재」·반제품을 공정 묶음 머리 줄에 놓는다. 그 공정이 있는 반제품 아래에 ADD 하고, 공정 코드와 작업 순서를 그 공정 값으로 채운다. 같은 공정 코드가 다른 반제품에도 있어도 묶음 머리 줄이 반제품마다 따로 있어 갈 곳은 하나다.
  4. 다른 공정으로 옮기기 — 줄을 다른 묶음 머리 줄로 끈다. 같은 반제품 안이면 UPDATE(공정 코드·작업 순서) 하나, 다른 반제품의 묶음이면 MOVE 와 UPDATE 를 한 요청에 싣는다.
  5. (공정 미지정) — 이 묶음에 놓으면 공정 코드와 작업 순서를 비운다. 이 묶음의 번호 nodeId=0 은 연산에 싣지 않는다. 묶음 안 줄 위에 놓아도 그 묶음으로 간다. 묶음 밖(반제품 줄 등)에 자재를 놓거나 공정 노드를 끌면 「공정 묶음 머리 줄이나 (공정 미지정) 묶음에 놓으세요…」를 알린다.
  6. 우클릭 메뉴 — [복사]·[트리에서 빼기]·[다른 공정으로 교체](공정 노드)·[다른 품목으로 교체]를 둔다. 공정 노드에는 [작업 순서 앞으로]·[작업 순서 뒤로](#3858)도 둔다. [위로 이동]·[아래로 이동]·[자동 정렬]·[아래 항목 자동 정렬]은 없다 — 이 보기의 차례는 작업 순서가 정한다. 가짜 줄에서는 「묶음 줄은 고칠 수 없습니다」만 보인다. 공정 노드를 빼면 「이 공정에 붙은 자재 N개는 (공정 미지정)으로 갑니다」를 확인하고, 하위 줄이 있으면 「하위 N줄도 함께 빠집니다.」도 붙인다. 묶음 줄마다 비우기 UPDATE 를 REMOVE 앞에 싣는다. 자재중심 보기에서도 같다.
  7. 보기 바꾸기 — 편집 버퍼는 평면 트리 하나다. 화면이 버퍼를 서버와 같은 규칙으로 묶어 그리므로 보기를 바꿔도 고친 것이 남는다. 보기를 바꿀 때 미저장 확인 창은 뜨지 않는다. 마지막으로 고른 보기를 이 브라우저에 기억한다(주소의 groupBy 가 먼저). 가짜 머리(#215) 이름은 트리 안 공정 노드 이름, 없으면 활성 공정 목록에서 찾는다 — 비활성 공정은 코드로 보인다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={지금 보는 판}&groupBy=none — 편집 버퍼의 원본(평면 트리). 공정중심 그림은 화면이 이 버퍼를 묶어 그린다(IF-PM-BOM-001, 계약 그대로)
  • GET/api/pm/processes?search=&page=&size= — 팔레트 공정 검색
  • GET/api/pm/products/{productCode}/bom?view=EBOM&version={지금 보는 판} — 팔레트 「이 제품의 자재」(#2471, 계약 그대로)
  • PUT/api/pm/products/{productCode}/bom — [버전 저장] 때 {"op":"ADD","parentNodeId":{반제품},"childItemCode":"02-0077","processCode":"P-ASM-04","workOrder":4} · {"op":"UPDATE","nodeId":…,"processCode":…,"workOrder":…} · MOVE · REMOVE 를 싣는다(view=MBOM, 새 연산 없음)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) 편집 중
DHS-AE225-U v18 (초안) 7보기: 공정중심(그룹) ▾ 1버전 저장
자재구성(EBOM)공정구성(MBOM)
지금 — 자재중심 입력 (자재를 넣고 줄마다 공정 코드를 고른다)
▽ 우수 후렘 조립모듈(225) L2반제품
├ P-CUT-01 절단 작업 순서 1공정
├ P-ASM-04 풍지판 부착 작업 순서 4공정
├ 19년 225mm 1등급 미서기 후렘-외부 A 공정 P-CUT-01원자재
├ 19년 225mm 1등급 미서기 후렘-내부 B 공정 P-CUT-01원자재
└ 02-0077 풍지판 공정 — 고르기 전부자재
자재를 넣은 뒤 노드 상세의 공정 코드 [변경]으로 공정을 붙인다. 공정과 자재가 같은 반제품 아래 형제로 나란히 보인다.
이번 — 공정중심 입력 (공정을 먼저 놓고 묶음에 자재를 놓는다)
▽ 우수 후렘 조립모듈(225) L2반제품
▽ ⚙ P-CUT-01 절단 작업 순서 1 · 자재 2공정
   └ 19년 225mm 1등급 미서기 후렘-외부 A원자재
   └ 19년 225mm 1등급 미서기 후렘-내부 B원자재
▽ ⚙ P-ASM-04 풍지판 부착 작업 순서 4 · 여기에 놓기공정
   └ 302-0077 풍지판 놓은 줄 · 공정 P-ASM-04 · 작업 순서 4부자재
▽ ⚙ 2P-ASM-11 조립 작업 순서 11 · 새로 놓은 빈 묶음공정
▽ 📂 5(공정 미지정) · 자재 1건
   └ 01-0059 나사 4조립 묶음으로 끌어 옮긴다부자재
6우클릭 메뉴 — 공정중심 보기
복사
다른 공정으로 교체… (공정 노드)
다른 품목으로 교체…
작업 순서 앞으로 (공정 노드)
작업 순서 뒤로 (공정 노드)
트리에서 빼기
토스트 — 02-0077 풍지판을 P-ASM-04 풍지판 부착 공정에 붙였습니다.
팔레트
공정 검색 — 반제품 줄에 놓는다
P-ASM-11조립
이 제품의 자재 — 공정 묶음에 놓는다
02-0077풍지판 · 놓음
01-0059나사 · 놓음
작업 순서 (공정을 놓을 때)
창 없이 모듈 전체 규칙 nextModuleWorkOrder(#3322)가 바로 매긴다(#3905).
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 · 공정구성(MBOM) — 초안 작성 모드: 작업 흐름만 답하면 반제품 · 부모 공정 · 작업 순서 번호를 화면이 만든다 /products/:productCode/bom/draft?version={N}

10-23 사용자 시험에서 실사용자가 공정구성의 구조(반제품 · 부모 공정 · 작업 순서)를 짜다 막혔다(#3939). 빈 공정구성 판을 여섯 단계 질문으로 채운다. 반제품은 모듈과 「새 부품」 스위치를 켠 자리에서만 생기고, 번호는 카드 차례에서 나온다. 저장 뒤에는 지금 트리 편집(전문가 모드)에서 고친다. 새 화면 ID 는 따지 않는다. ✅ 화면 반영 #3944(wims2.0_fe PR #1493~#1496, dev 병합 24fd42cc) · ✅ 서버 반영 #3943(2712d214, 빈 판 올리기 JSON). 정본 문장은 DE22-1 §05 SCR-PM-013 「#3939 결정」 상자다.

진입 — 자재/공정구성 프레임의 공정구성 탭 빈 판 안내(표식 7)에 [+ 첫 노드 추가] · [자재구성에서 가져오기] · [엑셀 올리기]와 나란히 [초안 작성 모드로 짜기]가 선다. 초안 판 · 편집 역할 · 공정구성 트리가 비었음 · 저장하지 않은 변경 없음일 때만 보인다. 그림은 기준 제품 DHS-AE225-U 후렘 모듈을 판 25 실측에서 옮겼다. 2026-10-24 기획 결정으로 탄성 계열(탄성레일바 · 탄성로라 · 탄성스프링 · 탄성레일바 절단)은 빼고 자력승강만 둔다.

  1. 여섯 단계 막대 — 1 모듈 · 2 작업 흐름 · 3 자재 · 4 새 부품 · 5 작업 내용 · 6 확인. 앞 단계로는 언제든 돌아간다. 저장 전 내용은 이 브라우저에만 보관하고, 다시 들어오면 「이어서 쓰기 · 처음부터」를 묻는다. [나가기]는 저장하지 않고 공정구성 탭으로 간다.
  2. 모듈 탭 — 1단계에서 정한 모듈마다 탭이 선다. 코드는 ASM-{부위}-{계열} 제안(#3860), 루트는 FGA-AE225-U 자동. 고정창처럼 다른 모듈 안에 들어가는 덩어리는 「후렘 ⑪ 에 들어간다」 꼬리표를 단다. [다른 제품 모듈 흐름에서 가져오기]는 고른 제품 판의 모듈을 카드로 바꾸고, 못 옮긴 줄은 「옮기지 못한 줄 N」으로 보인다.
  3. 작업 카드 — 왼쪽에서 오른쪽으로 차례대로 놓고 끌어 차례를 바꾼다. 카드 칸 차례는 워크숍 엑셀(#3935)과 같다 — 차례 · 작업(공정) 이름 · 설비 · 작업장 · 들어가는 자재와 수량 · 중간품 생성 여부 · 비고. 공정은 활성 공정에서 고르고, 없으면 그 자리 [공정 등록]. 같은 공정을 한 흐름에 두 번 놓으면 막고 순번이 다른 코드를 제안한다(#3863).
  4. 새 부품 스위치 — 처음엔 꺼져 있다. 「부품번호가 따로 있고 재고나 외주로 따로 다루는 중간품일 때만 켜세요. 자르기 · 구멍 내기 뒤에는 보통 끕니다.」 켜면 [이미 있는 품목 고르기](먼저) · [새로 만들기](ASM-FRAME-AE225-U-KNL 꼴 제안)와 「다음 카드에 몇 개」를 묻는다. 그 카드까지의 구간이 중간품 아래로 들어가고, 중간품 줄은 다음 카드의 공정 코드 · 번호를 받는다.
  5. 아직 안 놓은 자재 — 같은 판 자재구성이 있으면 이 모듈의 자재와 남은 수량을 늘 보인다. 다 놓으면 흐리게 「놓음」. 자재구성이 없으면 자재 검색만 둔다.
  6. 6 확인 — 모듈마다 사용자의 말로 된 요약 · 만들어질 트리(읽기 전용, 번호 열 · 네 종류 색) · 서버 미리보기의 오류 · 경고 목록(줄을 누르면 그 카드로)을 보인다. 작업지시 미리보기(#3937) · 구성 점검 패널(#3938)이 들어오면 이 자리에 둔다. [저장]은 빈 판 올리기(IF-DATA-EXCEL-008)에 JSON 줄 목록으로 싣는다 — 모두 통과해야 반영한다.
  7. 저장 뒤 — 자재구성이 비어 있으면 끝 창이 [자재구성도 만들기](#3904 FROM_MBOM) · [나중에]를 묻는다. 그 뒤 공정구성 탭으로 돌아가 「초안 작성 모드로 N줄을 만들었습니다. 이제 트리에서 고칩니다.」를 띄운다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=EBOM&version={N} — 같은 판 자재구성(모듈 목록 · 아직 안 놓은 자재). view=MBOM 은 빈 판인지 확인(IF-PM-BOM-001, 계약 그대로)
  • GET/api/pm/products/{다른 제품}/bom?view=MBOM&version={고른 판} — [다른 제품 모듈 흐름에서 가져오기]의 원본(계약 그대로)
  • GET/api/pm/processes?search=&page=&size= — 카드 공정 고르기(활성 공정 · 보유 설비) · 없으면 POST /api/pm/processes 짧은 등록(IF-PM-PROC-001)
  • GET/api/pm/assemblies?search=&size= — 중간품 [이미 있는 품목 고르기] · POST /api/pm/assemblies [새로 만들기](IF-PM-ASM-001)
  • POST/api/pm/products/{productCode}/bom/import?view=mbom&version={N}&mode=PREVIEW|APPLY — Content-Type: application/json 본문 {"rows":[{"level":0,"itemCode":"FGA-AE225-U","qty":1}, …]}. 미리보기 뒤 반영(IF-DATA-EXCEL-008 · #3939 JSON — ✅ 서버 반영 #3943 2712d214)
  • PUT/api/pm/products/{productCode}/bom — [자재구성도 만들기] 때 루트 ADD 한 줄에 "subtreeSource":"FROM_MBOM"(#3904, 계약 그대로)
제품 상세  ›  자재/공정구성  ›  공정구성 초안 작성 모드
CMD+K 검색
🔔3
DHS-AE225-U vN (초안) · 공정구성 비어 있음 나가기
1 1 모듈 ✓2 작업 흐름3 자재4 새 부품5 작업 내용6 확인
2완제품 · 카드 1후렘 ASM-FRAME-AE225-U · 카드 11고정창 1단 ASM-FIX-AE225-U-H1 → 후렘 ⑪외측 문짝내측 문짝방충망
3「이 모듈은 어떤 작업을 어떤 차례로 거치나요?」 — 카드를 끌어 차례를 바꾼다
① P-KNL-01 널링(적층)
설비 · 공정 관리 값
작업장 —
UNI-A225-101A ×1
UNI-A225-101B ×1
UNI-P225-101 ×1
4새 부품 ● 켬
비고 —
② P-CUT-01 절단
설비 · 공정 관리 값
작업장 —
① 중간품 ×4 들어옴
새 부품 ○ 끔
③ P-MCH-02 피스홀
자재 없음
새 부품 ○ 끔
④ P-MCH-04 배수홀
자재 없음
새 부품 ○ 끔
⑤ P-MCH-03 풍지판
02-0077 ×4
새 부품 ○ 끔
⑥ P-ASM-04 이탈 방지
02-0097 ×4
⑦ P-MCH-01 가네고
DH-5555-1 ×8
⑧ P-ASM-02 나사 체결
X-003 ×32
⑨ P-ASM-03 후렘 연결
02-0094-1 ×5
02-0094-2 ×1
⑩ P-MCH-13 레버부
자재 없음
⑪ P-ASM-01 조립
자력승강 02-0122-1 ×2 · 02-0122-2 ×2 · 02-0124 ×2 · 자석 2종 · 나사 4종
← 고정창 1단 들어옴
+ 작업
① 널링 뒤 새 부품 — 「이 작업 뒤에 부품번호가 따로 있는 중간품이 생기나요?」
부품번호가 따로 있고 재고나 외주로 따로 다루는 중간품일 때만 켜세요. 자르기 · 구멍 내기 뒤에는 보통 끕니다.
중간품이미 있는 품목 UNI-A225-101 225-H-프레임-1  바꾸기 · 새로 만들기 = ASM-FRAME-AE225-U-KNL 제안
다음 카드에4 개 → ② 절단
이 반제품은 다른 제품 N개도 함께 씁니다. 반제품 정보를 고치면 그 제품들에도 함께 바뀝니다. (#3932)
66 확인 — 만들어질 트리(읽기 전용 · 번호 = 작업 순서)
▽ ASM-FRAME-AE225-U 우수 후렘 조립모듈(225) P-PKG-01 · 1반제품
▽ 2 · UNI-A225-101 225-H-프레임-1 ×4 P-CUT-01 · ① 스위치반제품
   ├ 1 · P-KNL-01 널링(적층)공정
   └ 1 · UNI-A225-101A · 101B · P225-101원자재
▽ 11 · ASM-FIX-AE225-U-H1 고정창 1단 P-ASM-01반제품
├ 2 · P-CUT-01 절단 · 3 · P-MCH-02 · 4 · P-MCH-04 · 5 · P-MCH-03 …공정
└ 11 · P-ASM-01 조립 · 02-0122-1 ×2 · 02-0122-2 ×2 …공정
후렘은 ① 널링 → ② 절단 → ③ 피스홀 → … → ⑪ 조립 차례로 만든다. ② 절단에 225-H-프레임-1 4개가 들어간다. ⑪ 조립에 고정창 1단이 들어간다.
비고 모아 복사이전7저장
5아직 안 놓은 자재 — 후렘 (같은 판 자재구성)
X-00216 남음
01-006520 남음
02-0077놓음
02-0097놓음
카드로 끌어 놓고 수량을 적는다. 두 작업에 나눠 들어가면 두 카드에 나눠 놓는다.
공정 고르기
공정 검색 — 활성 공정
P-ASM-03미서기 후렘 연결
목록에 없으면 [공정 등록](코드 P-{군}-{다음 순번} 제안).
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — 원자재·부자재·반제품 노드 [다른 품목으로 교체] /products/:productCode?view=EBOM|MBOM

이미 넣은 원자재·부자재·반제품 노드를 같은 유형의 다른 품목으로 바꾼다(#3809). 노드 번호·순서·수량·로스율·산식·공정 코드는 그대로 두고 품목만 바뀐다. 반제품은 아래 항목을 기본으로 그대로 둔다. 자재구성(EBOM)·공정구성(MBOM) 두 탭 모두에 있고, 두 탭은 따로 바꾼다. 서버 연산은 IF-PM-BOM-001 PUT REPLACE_ITEM 이다. 서버·화면 반영 전.

진입 — 자재구성 또는 공정구성 편집 중(초안 판, 공정구성은 자재중심·공정중심 두 보기 모두 — #3905)에 원자재·부자재·반제품 노드를 우클릭하거나, 그 노드를 골라 노드 상세의 단추를 누른다. 공정 노드는 공정 노드 교체 프레임이 맡는다. 나머지 영역은 자재/공정구성 프레임과 같다.

  1. 우클릭 메뉴 — 원자재·부자재·반제품 노드에 [다른 품목으로 교체] 줄이 더 붙는다. 공정 노드에는 없다([다른 공정으로 교체]가 있다). 맨 위 완제품 노드에도 없다. 아직 저장하지 않은 노드는 흐리게 두고 「[버전 저장] 뒤에 바꿀 수 있습니다」를 붙인다.
  2. 노드 상세 단추 — 같은 이름 단추가 편집 단추 줄에 선다. 배포·폐기된 판과 조회 권한에서는 메뉴 줄과 단추를 감춘다.
  3. 창 제목과 지금 품목 — 제목은 노드 유형을 따른다(「다른 원자재로 교체」·「다른 부자재로 교체」·「다른 반제품으로 교체」). 맨 위에 지금 품목의 코드·이름·단위를 적는다. 반제품이면 「아래 항목 N개」를 함께 적는다.
  4. 고르는 목록 — 같은 유형만 나온다. 원자재는 materialKind=RAW, 부자재는 materialKind=SUB, 반제품은 반제품 목록이다. 지금 품목은 흐리게 「지금 품목」. 같은 부모 아래 이미 있는 품목에는 「이 반제품에 이미 있음」을 붙이되 고를 수는 있다.
  5. 수량 · 그대로 두는 값 — 수량은 지금 값을 채운 숫자 칸이다. 단위가 다른 품목이면 「단위가 EA 에서 M 로 바뀝니다. 수량을 확인하세요.」를 띄운다. 공정구성 탭이면 로스율·기준 치수·절단 산식·공정·작업 순서를 「그대로 둡니다」 한 줄로 보인다.
  6. 반제품의 아래 항목 — 반제품일 때만 고르개 둘이 선다. 「아래 항목 그대로 두기」(처음 값) · 「새 반제품의 구성으로 바꾸기」. 뒤엣것을 고르면 [교체] 위에 「지금 아래 항목 N개가 지워집니다.」를 적고, 기준 제품이 여럿이면 기준 고르기 창(#2446)을 연다.
  7. 옵션별 규칙 알림 — 옛 품목 코드를 가리키는 규칙이 있으면 「교체한 판에서는 이 규칙이 걸리는 줄이 없을 수 있습니다」, 새 품목 코드를 가리키는 규칙이 있으면 「교체하면 이 규칙이 이 줄에도 걸릴 수 있습니다」. 이름 세 개까지와 [옵션별규칙에서 보기](새 탭). 저장은 막지 않는다.
  8. 다른 탭 안내 — 「자재구성과 공정구성은 따로 저장됩니다. 공정구성에도 이 품목이 있으면 그쪽에서도 바꾸세요.」
  9. 교체 뒤 트리 · 토스트 — [교체]를 누르면 편집 버퍼에 연산 하나가 쌓이고 노드의 코드·이름·배지만 바뀐다. 토스트 [되돌리기]는 10초 동안 이 연산을 걷는다. 서버에는 [버전 저장] 때 간다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=EBOM|MBOM&version={지금 보는 판} — 편집 중인 트리. 아래 항목 수와 「이 반제품에 이미 있음」은 화면이 이 트리에서 센다(IF-PM-BOM-001, 계약 그대로)
  • GET/api/pm/materials?materialKind=RAW|SUB&search=&page=&size= — 원자재·부자재 고르기 목록(구분이 빈 자재는 거르개 없이)
  • GET/api/pm/assemblies?search=&size= — 반제품 고르기 목록(팔레트 반제품 검색과 같다)
  • GET/api/pm/products/{productCode}/rules — 옛 품목 코드·새 품목 코드를 가리키는 옵션별 규칙 세기(계약 그대로)
  • PUT/api/pm/products/{productCode}/bom — [버전 저장] 때 {"op":"REPLACE_ITEM","nodeId":…,"childItemCode":"UNI-A225-102","qty":…,"subtreeSource":…} 를 싣는다(#3809 새 연산 · 두 보기 공통)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 자재구성(EBOM) 편집 중
DHS-AE225-U v18 (초안)
자재구성(EBOM)공정구성(MBOM)
자재구성 트리 — 자재중심 보기
▽ 225 우수 미서기 이중창 L1반제품
▽ └ 우수 후렘 조립모듈(225) L2반제품
   └ UNI-A225-101 19년 225mm 1등급 미서기 후렘-외부 A원자재
   └ UNI-A225-201 후렘 내부 B원자재
   └ SCR-0012 나사 4x20부자재
1우클릭 메뉴 — 원자재 노드
위로 이동
아래로 이동
복사
다른 품목으로 교체…
트리에서 빼기
9교체 뒤 트리 (저장 전)
▽ └ 우수 후렘 조립모듈(225) L2반제품
   └ UNI-A225-102 후렘-외부 A 2등급 바뀜원자재
   └ UNI-A225-201 후렘 내부 B원자재
   └ SCR-0012 나사 4x20부자재
토스트 — UNI-A225-101 후렘-외부 A 를 UNI-A225-102 후렘-외부 A 2등급으로 바꿨습니다. 되돌리기
노드 상세 — UNI-A225-101
유형원자재
수량1 EA
2다른 품목으로 교체트리에서 빼기
품목 고르기 창 — 원자재
품목 고르기 창 — 반제품일 때 더 서는 칸
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — 트리 [자동 정렬] /products/:productCode?view=EBOM|MBOM

같은 반제품 아래 줄을 반제품 · 공정 · 원자재 · 부자재 · 구분이 빈 자재 차례로 한 번에 모은다(#3817). 같은 종류 안의 차례는 그대로다. 형제 순서 값을 다시 매기는 편집이라 [버전 저장] 때 저장된다. 서버 연산은 기존 IF-PM-BOM-001 PUT MOVE(sortOrder 만) 이다. 화면 반영 #3832(wims2.0_fe f2af8c34). 경로 필터로 가린 줄도 함께 정렬한다.

진입 — 자재구성 또는 공정구성 편집 중(초안 판, 자재중심 보기)에 아래 단추 줄의 [자동 정렬]을 누르거나, 반제품 노드를 우클릭해 [아래 항목 자동 정렬]을 고른다. 공정중심 보기에는 없다. 나머지 영역은 자재/공정구성 프레임과 같다.

  1. 정렬 전 트리 — 줄 차례는 사람이 끌어 옮겨 정한 형제 순서다. 종류가 섞여 있다.
  2. 우클릭 메뉴 — 반제품 노드 — [위로 이동]/[아래로 이동] 바로 아래에 [아래 항목 자동 정렬]. 그 반제품 바로 아래 줄만 정렬한다. 원자재·부자재·공정 노드에는 이 줄이 없다.
  3. 아래 단추 [자동 정렬] — [BOM 비교]와 [버전 저장] 사이의 보조 단추. 트리 전체에서 반제품마다 바로 아래 줄을 따로 정렬한다. 부모는 바꾸지 않는다. 마우스를 올리면 「같은 반제품 아래 줄을 반제품 · 공정 · 원자재 · 부자재 차례로 모읍니다. 같은 종류 안의 차례는 그대로입니다.」
  4. 정렬 뒤 트리 (저장 전) — 반제품 → 공정 → 원자재 → 부자재 → 구분이 빈 자재(「자재」 배지, 맨 끝). 같은 종류 안은 정렬 전 차례 그대로다. 공정구성 줄 맨 왼쪽 작업 순서 번호는 바뀌지 않는다.
  5. 토스트 — 「줄 N개의 차례를 바꿨습니다.」 + [되돌리기] 10초. 누르면 이번 정렬을 걷는다. 다른 편집을 하면 바로 닫힌다. 이미 차례대로면 「이미 차례대로입니다.」만 띄우고 아무것도 쌓지 않는다.
  6. 보이는 때 — 편집 모드이고 초안 판일 때만. 배포·폐기된 판과 조회 권한에서는 단추와 메뉴 줄을 감춘다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=EBOM|MBOM&version={지금 보는 판} — 편집 중인 트리. 줄 종류는 itemType·materialKind 로 가른다(IF-PM-BOM-001, 계약 그대로)
  • PUT/api/pm/products/{productCode}/bom — [버전 저장] 때 차례가 바뀐 반제품 아래 저장된 줄마다 {"op":"MOVE","nodeId":…,"sortOrder":새 자리}, 저장 전 새 줄은 ADD 에 sortOrder 를 싣는다(새 연산 없음)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) 편집 중
DHS-AE225-U v18 (초안)
자재구성(EBOM)공정구성(MBOM)
1정렬 전 — 자재중심 보기
▽ └ 우수 후렘 조립모듈(225) L2반제품
2  └ SCR-0012 나사 4x20부자재
1  └ P-CUT-01 절단공정
1  └ UNI-A225-101 후렘-외부 A원자재
   └ TMP-0007 가공 부속자재
   └ 코너 반제품반제품
2  └ P-ASM-01 조립공정
1  └ UNI-A225-201 후렘 내부 B원자재
2우클릭 메뉴 — 반제품 노드
위로 이동
아래로 이동
아래 항목 자동 정렬
복사
다른 품목으로 교체…
트리에서 빼기
4정렬 뒤 (저장 전)
▽ └ 우수 후렘 조립모듈(225) L2반제품
   └ 코너 반제품반제품
1  └ P-CUT-01 절단공정
2  └ P-ASM-01 조립공정
1  └ UNI-A225-101 후렘-외부 A원자재
1  └ UNI-A225-201 후렘 내부 B원자재
2  └ SCR-0012 나사 4x20부자재
   └ TMP-0007 가공 부속자재
5토스트 — 줄 6개의 차례를 바꿨습니다. 되돌리기
맨 왼쪽 숫자는 작업 순서(#3698)다. 정렬은 이 값을 바꾸지 않는다. 그림의 품목 코드·이름은 시험용 보기다.
BOM 전개 검산공정별 작업시간BOM 비교3자동 정렬버전 저장
6편집 모드 · 초안 판에서만 [자동 정렬]이 보인다.
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — 자재·반제품 줄 [공정 변경]이 작업 순서를 채운다 /products/:productCode?view=MBOM

자재 줄의 공정 코드를 [공정 변경] 창에서 고르면 작업 순서를 그 공정 노드의 번호로 함께 채운다(#3855). 사람이 칸에서 다시 고칠 수 있다. 저장은 종전처럼 IF-PM-BOM-001 PUT UPDATE 하나이고, 서버 변경은 없다. 화면 반영 wims2.0_fe 7a13e896. #3930 결정(2026-10-24)으로 반제품 줄도 같은 방식으로 채우고 알린다(화면 반영 08ffeec3). 작업지시 계획기가 줄 유형을 가리지 않고 (모듈, 번호) 짝마다 공정 단계를 세우기 때문이다. 최상위 모듈 자신의 줄은 뺀다(#3670).

진입 — 공정구성 편집 중(초안 판)에 자재 줄을 누르고 노드 상세의 「공정 코드 [변경]」을 누른다. 나머지 영역은 자재/공정구성 프레임과 같다.

  1. 고르기 전 — 자재 줄은 P-MCH-03(작업 순서 6)에 붙어 있다. 같은 반제품 아래 P-CUT-01 공정 노드는 3번이다.
  2. [공정 변경] 창 — 공정 코드를 고르고 [적용]을 누른다. 창은 종전 그대로다.
  3. 채운 뒤 (저장 전) — 공정 코드 P-CUT-01 · 작업 순서 3. 같은 반제품 아래에 없으면 같은 모듈 안 같은 공정 코드의 번호를 쓴다.
  4. 못 채울 때 — 그 공정 노드가 없거나 번호가 비었으면 작업 순서를 그대로 두고 칸 아래에 「이 반제품 안에 P-PNT-01 공정 노드가 없어 작업 순서를 자동으로 채우지 않습니다. 번호를 직접 정하세요.」를 띄운다.
  5. 번호가 다를 때 — 사람이 번호를 고쳐 투입 공정 노드와 달라지면 「P-CUT-01 공정 노드의 번호는 3번입니다. 이 줄은 6번입니다.」를 띄운다. 저장은 막지 않는다. 반제품 줄도 같은 글이다(#3930).
  6. 반제품 줄 (#3930) — 큰 반제품 안 반제품 줄의 [들어가는 공정(바깥)] [변경]도 같은 부모 아래 같은 공정 코드의 노드 번호로 「들어가는 공정 번호」를 채운다(칸 이름 #3936). 노드가 없으면 「이 반제품이 붙은 반제품 안에 P-ASM-06 공정 노드가 없어 작업 순서를 자동으로 채우지 않습니다. 번호를 직접 정하세요.」를 띄운다. 아래에 공정 노드가 있는 반제품은 [변경]이 막힌다(ISS-0459, 그대로).
  7. 새 공정 노드 · 안쪽 공정 (#3930) — 새 공정 노드를 넣으면 같은 부모 아래 그 공정 코드를 쓰고 번호가 빈 줄을 함께 채우고 「같은 공정 코드를 쓰던 2줄의 작업 순서를 함께 채웠습니다.」를 띄운다. 반제품 안 공정이 그 반제품을 넣는 바깥 공정보다 뒤 번호면 노드 상세에 「이 공정(14)이 반제품 ASM-TP-225를 넣는 P-ASM-06(5)보다 뒤입니다. 작업지시에서 이 공정이 조립 뒤에 섭니다.」를 띄운다. 번호는 바꾸지 않는다.
관련 API Swagger UI ↗
  • PUT/api/pm/products/{productCode}/bom — [버전 저장] 때 {"op":"UPDATE","nodeId":…,"processCode":"P-CUT-01","workOrder":3} 하나. 못 채우면 processCode 만 싣는다(IF-PM-BOM-001, 계약 그대로)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) 편집 중
자재구성(EBOM)공정구성(MBOM)
1고르기 전
▽ └ 우수 후렘 조립모듈(225) L2반제품
3  └ P-CUT-01 절단공정
6  └ P-MCH-03 가공공정
6  └ 02-0077 후렘 보강재원자재
2[공정 변경] 창 — P-CUT-01 고름 · [적용]
3노드 상세 — 채운 뒤 (저장 전)
공정 코드P-CUT-01 변경
작업 순서3
작업지시는 이 번호로도 공정 단계를 세웁니다. 투입 공정 노드의 번호와 같게 두세요.
4못 채울 때
이 반제품 안에 P-PNT-01 공정 노드가 없어 작업 순서를 자동으로 채우지 않습니다. 번호를 직접 정하세요.
5번호가 다를 때
P-CUT-01 공정 노드의 번호는 3번입니다. 이 줄은 6번입니다.
6반제품 줄 — 노드 없음 (#3930)
이 반제품이 붙은 반제품 안에 P-ASM-06 공정 노드가 없어 작업 순서를 자동으로 채우지 않습니다. 번호를 직접 정하세요.
7공정 노드 — 안쪽 공정이 뒤 (#3930)
이 공정(14)이 반제품 ASM-TP-225를 넣는 P-ASM-06(5)보다 뒤입니다. 작업지시에서 이 공정이 조립 뒤에 섭니다.
그림의 품목 코드·번호는 개발 서버 실측(#3855 본문) 예를 옮긴 보기다.
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — 공정 노드 [작업 순서 앞으로·뒤로] /products/:productCode?view=MBOM

공정 노드의 작업 순서를 같은 모듈 안 바로 앞·뒤 공정과 우클릭 한 번으로 맞바꾼다(#3858). 그 공정 코드·번호가 맞던 자재 줄도 함께 바꾼다. #3930 결정(2026-10-24)으로 반제품 줄도 함께 바꾼다(화면 반영 08ffeec3). 저장은 IF-PM-BOM-001 PUT UPDATE 를 바뀐 줄마다 하나씩 한 요청에 싣고, 서버 변경은 없다. 화면 반영 wims2.0_fe 69e86855.

진입 — 공정구성 편집 중(초안 판, 자재중심·공정중심 두 보기 모두 — #3905)에 공정 노드를 우클릭한다. 나머지 영역은 자재/공정구성 프레임과 같다.

  1. 고르기 전 — 같은 모듈 안에 P-CUT-01 절단 1번, P-ASM-01 조립 2번이 있다. 자재 줄 번호는 투입 공정 노드와 같다.
  2. 우클릭 메뉴 — 공정 노드에만 [아래로 이동] 다음에 [작업 순서 앞으로]·[작업 순서 뒤로] 두 줄이 붙는다. 줄 꼬리에 맞바꿀 공정을 「1번 P-CUT-01 절단과 맞바꿈」 꼴로 보인다. 그쪽에 공정이 없으면 줄을 흐리게 두고 「맨 앞 공정입니다」·「맨 뒤 공정입니다」를, 번호가 비었으면 「작업 순서가 비어 있습니다」를 붙인다. [위로·아래로 이동]은 줄 차례만 바꾸고 번호는 바꾸지 않는다.
  3. 맞바꾼 뒤 (저장 전) — P-ASM-01 은 1번, P-CUT-01 은 2번이 된다. 모듈 안 같은 공정 코드 노드(하위 반제품 안 것도)와, 그 공정 코드·번호가 맞던 자재 줄이 함께 바뀐다. 반제품 줄도 같은 잣대로 함께 바뀐다(#3930, 최상위 모듈 자신의 줄은 뺀다). 번호가 맞지 않던 줄은 그대로 둔다.
  4. 알림 — 「작업 순서를 맞바꿨습니다. P-ASM-01 2번 → 1번, P-CUT-01 1번 → 2번. 자재 2줄도 함께 바꿨습니다.」 끝 문장은 바꾼 줄에 따라 「반제품 M줄도 함께 바꿨습니다.」·「자재 N줄과 반제품 M줄도 함께 바꿨습니다.」가 된다(#3930). 바꾼 줄이 없으면 뺀다.
  5. 끼우기 — 따로 두지 않는다. 새 공정은 맨 뒤 번호로 붙고, [작업 순서 앞으로]를 거듭 누르면 뒤 번호가 한 칸씩 밀린다.
관련 API Swagger UI ↗
  • PUT/api/pm/products/{productCode}/bom — [버전 저장] 때 바뀐 줄마다 {"op":"UPDATE","nodeId":…,"workOrder":…} 하나. 서버는 요청을 다 처리한 뒤의 상태로 겹침을 보므로 BOM_PROCESS_WORKORDER_CONFLICT(422)가 나지 않는다(IF-PM-BOM-001, 계약 그대로)
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) 편집 중
자재구성(EBOM)공정구성(MBOM)
1고르기 전
▽ └ 우수 후렘 조립모듈(225) L2반제품
1  └ P-CUT-01 절단공정
2  └ P-ASM-01 조립공정
1  └ UNI-A225-101 후렘-외부 A원자재
2  └ SCR-0012 나사 4x20부자재
2우클릭 메뉴 — 공정 노드 P-ASM-01
위로 이동
아래로 이동
작업 순서 앞으로 1번 P-CUT-01 절단과 맞바꿈
작업 순서 뒤로 맨 뒤 공정입니다
복사 (같은 부모 아래)
다른 공정으로 교체…
트리에서 빼기
3맞바꾼 뒤 (저장 전)
▽ └ 우수 후렘 조립모듈(225) L2반제품
2  └ P-CUT-01 절단공정
1  └ P-ASM-01 조립공정
2  └ UNI-A225-101 후렘-외부 A원자재
1  └ SCR-0012 나사 4x20부자재
4토스트 — 작업 순서를 맞바꿨습니다. P-ASM-01 2번 → 1번, P-CUT-01 1번 → 2번. 자재 2줄도 함께 바꿨습니다.
맨 왼쪽 숫자는 작업 순서(#3698)다. 줄 차례는 바뀌지 않는다. 그림의 품목 코드·이름은 시험용 보기다.
5끼우기 — 새 공정은 맨 뒤 번호로 붙고 [작업 순서 앞으로]를 거듭하면 뒤 번호가 한 칸씩 밀린다.
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — [BOM 전개 검산] 창 「작업 순서 점검」 절 /products/:productCode?view=MBOM

공정구성 탭에서 연 [BOM 전개 검산] 창 아래에 작업 순서 어긋남을 센 절을 더한다(#3930 결정, 2026-10-24). 서버를 부르지 않고 화면이 지금 보는 트리로 센다. 편집 중이면 편집 버퍼로 센다. 화면 반영 wims2.0_fe 08ffeec3(PR #1489).

진입 — 공정구성(MBOM) 탭 아래 [BOM 전개 검산]을 누른다. 자재구성 탭에서 연 창에는 이 절이 없다. 창 위쪽 배너·표·합계 줄은 자재/공정구성 프레임과 같다.

  1. 제목·설명 — 「작업 순서 점검」. 설명은 「작업지시는 반제품 안 (반제품, 작업 순서) 짝마다 공정 단계를 하나 세웁니다. 화면이 지금 보는 트리로 셉니다.」다.
  2. 번호 다름 — 「반제품·자재 줄 번호가 공정 노드와 다름 N줄」. 줄은 「{코드} {이름} — 지금 13 · 기대 15」 꼴이다. 같은 반제품·모듈 안에 그 공정 노드가 없는 줄은 기대 번호가 없어 세지 않는다.
  3. 안쪽 공정 뒤 — 「안쪽 공정이 바깥 투입 공정보다 뒤 N줄」. 줄은 「— 지금 14 · 반제품 ASM-TP-225 투입 P-ASM-06(5)」 꼴이다.
  4. 번호 빔 — 「공정 코드가 있는데 번호가 빔 N줄」. 줄은 「— 지금 빈칸 · 기대 3」 꼴이다. 그 줄은 작업지시 단계 후보에서 빠진다.
  5. 줄을 누르면 — 창을 닫고 트리에서 그 노드를 고른다. 걸린 줄이 없으면 「작업 순서 어긋남이 없습니다」를 보인다. 최상위 모듈 자신의 줄은 세지 않는다(#3670).
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — 공정구성 구성 점검 패널 (#3938) /products/:productCode?view=MBOM

공정구성 목록 보기의 가운데 트리 칸 아래에 「구성 점검」 패널을 늘 세워 저장 전에 틀리기 쉬운 곳 8가지를 보인다(#3938 결정, 2026-10-24). 서버를 부르지 않고 화면이 편집 버퍼(아니면 화면 트리)로 센다. 저장은 막지 않는다. 정본 문장은 DE22-1 §05 SCR-PM-013 「#3938 결정」 상자다. 화면 반영 wims2.0_fe 19c49ef0(PR #1491).

진입 — 공정구성(MBOM) 탭을 목록 보기로 연다. 패널은 처음부터 펴져 있고, 머리 줄 [구성 점검 N] 배지 단추로 펴고 접는다. 노드 보기·자재구성 탭에는 없다.

  1. [구성 점검 N] 배지 — 머리 줄 [BOM 전개 검산] 왼쪽. N 은 지금 걸린 건수다. 누르면 패널을 펴고 접고, 접었는지는 브라우저에 기억한다.
  2. 패널 머리 — 「구성 점검 N건」 · 안내 「저장 전에 틀리기 쉬운 곳을 지금 트리로 셉니다. 저장은 막지 않습니다. 줄을 누르면 그 자리로 갑니다.」 · [접기]. 높이는 트리 칸의 40% 까지이고 넘치면 패널 안에서 굴러간다.
  3. 항목 머리 — 「{항목 이름} N건」. 8항목 차례는 번호 빔 · 번호 다름 · 안쪽 공정 뒤 · 공정 노드 없음 · 한 공정 반제품 · 반대 방향 반제품 · 자재구성 어긋남 · 규칙 밖 코드다. 걸린 것이 없는 항목은 감춘다. 모두 없으면 「걸린 곳이 없습니다」.
  4. [고치기] 자동 — 번호 빔 · 번호 다름 줄의 [N번으로 맞추기]는 공정 노드 번호로 바로 바꾼다. 두 줄 이상이면 머리에 [N줄 모두 맞추기]. 고친 줄은 패널에서 바로 사라진다. 편집 모드(초안 · 편집 권한)에서만 선다.
  5. [고치기] 제안 — [자리로 가기]는 트리에서 그 자리를 펴고 고른 뒤 할 말을 패널 위에 남긴다(예: 「우클릭 [작업 순서 앞으로]로 이 공정을 5번보다 앞으로 옮기세요.」). [공정 노드 추가]는 그 반제품의 [하위 항목 추가] 창을 연다.
  6. 반대 방향 반제품 — 저장하면 서버가 막는 유일한 항목이라 붉게 적는다. [버전 저장] 때 이 항목이 있으면 경고를 띄우고 패널을 연다. 요청은 그대로 보낸다.
  7. 목록만 — 자재구성 어긋남 · 규칙 밖 반제품 코드는 단추 없이 줄만 보인다. 자재구성에만 있는 자재는 공정구성에 자리가 없어 누를 수 없다. 자재구성을 읽는 중이거나 비면 「세지 않았습니다」로 적는다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=EBOM&version= — 자재구성 어긋남(7번)을 셀 때만 같은 판 자재구성 트리를 읽는다(IF-PM-BOM-001, 무변경). 자재구성 탭과 같은 조회라 캐시를 함께 쓴다
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
1구성 점검 11BOM 전개 검산공정별 작업시간BOM 비교버전 저장
… 팔레트 · 트리 · 노드 상세 세 칸(자재/공정구성 프레임과 같다). 아래는 가운데 트리 칸 맨 아래다 …
2구성 점검 11건저장 전에 틀리기 쉬운 곳을 지금 트리로 셉니다. 저장은 막지 않습니다. 줄을 누르면 그 자리로 갑니다.접기
3작업 순서가 빈 줄 2건
02-0094-1 후레임연결재-1 — 지금 빈칸 · 공정 노드 17417번으로 맞추기
02-0094-2 후레임연결재-2 — 지금 빈칸 · 공정 노드 1717번으로 맞추기
반제품·자재 줄 번호가 공정 노드와 다름 3건 3줄 모두 맞추기
ASM-FIX-AE225-U-H1 우수 고정창 조립 1단 — 지금 13 · 공정 노드 1515번으로 맞추기
안쪽 공정이 바깥 투입 공정보다 뒤 1건
P-CUT-03 탄성레일바 절단 — 지금 14 · 반제품 ASM-TP-225 투입 P-ASM-06(5)5자리로 가기
공정 노드가 없는 공정 코드 1건
P-CUT-01 ASM-FIX-AE225-U-H1 안 — 이 공정 코드를 쓰는 줄 3개 · 공정 노드 없음공정 노드 추가
6반대 방향으로 담긴 반제품 1건 — 저장하면 서버가 막습니다
ASM-A-X 보기 반제품 — ASM-A-X 안에 ASM-B-X, ASM-B-X 안에 ASM-A-X · 2자리자리로 가기
7자재구성과 어긋난 자재 1건
X-003 Screw(8×13mm) — 자재구성에만 있음 — 공정구성에 옮기지 않았습니다
규칙 밖 반제품 코드 1건
UNI-A225-101 225-H-프레임-1 — 반제품 코드는 ASM- 로 시작합니다
그림의 줄은 표준 DHS-AE225-U 판 26 개발 자료와 보기 값을 섞은 것이다. 한 공정 반제품 항목(ASM-TP-225)은 자리를 아끼려 그리지 않았다.
SCR-PM-012 제품 상세 · [자재/공정구성] 탭 — 노드 보기 (#3917) /products/:productCode?view=MBOM&mode=graph · 공유 뷰어 /products/:productCode/bom/viewer?version=&view=

같은 판·같은 보기(자재구성/공정구성, 자재중심/공정중심)의 BOM 을 왼쪽→오른쪽 노드 그래프로 훑어보는 읽기 전용 보기다(#3917, ✅ 화면 반영 wims2.0_fe PR #1463·#1470·#1471·#1472 — as-built). 새 화면 ID 는 따지 않는다. 조회는 목록 보기와 같은 IF-PM-BOM-001 이고 새로 부르지 않는다. 정본 문장은 DE22-1 §05 SCR-PM-013 「#3917 노드 보기」 상자다.

진입 — 자재/공정구성 프레임의 탭 줄 오른쪽 끝 「목록 | 노드」에서 [노드]를 누른다(표식 12). 주소에 mode=graph 가 붙는다. [목록]을 누르면 지우고 돌아간다. 공유 링크로 들어오면 아래 ⑦ 노드 뷰어가 열린다.

  1. 보기 방식 전환 — 「목록 | 노드」 두 단추. 고른 쪽을 칠한다. 두 탭·두 보기 모두에 있다. 왼쪽 팔레트를 숨기고 그 자리와 목록 자리를 그래프가 쓴다. 경로 필터 줄은 그대로이고 거른 결과를 그린다.
  2. 도구줄 — [모두 펴기]·[모두 접기]·[맞춤]·[전체화면]·[PDF 내려받기]·[공유 링크]와 「코드·이름 찾기」 칸. 찾기는 Enter 로 맞는 노드의 조상을 펴고 골라 가운데로 옮긴다. 같은 말로 다시 Enter 면 다음 결과로 가고 「n / 전체」를 보인다. 그 아래에 목록 보기와 같은 범례 한 줄이 선다.
  3. 노드 상자 — 왼쪽 띠 = 유형 색(#3698 네 종류 그대로) · 공정구성이면 작업 순서 번호(굵게) · 윗줄 품목명 · 아랫줄 품목 코드 · ×수량(완제품·묶음 머리 제외) · 자식이 있으면 ▸/▾ + 자식 수. 완제품은 굵은 테두리. 처음엔 루트만 펴서 1단까지 보인다. 값은 오른쪽 노드 상세에서 본다.
  4. 고르기·옮기기·확대 — 노드를 누르면 고르고 오른쪽 패널이 바뀐다. 빈 바탕을 끌면 옮기고 휠은 마우스 자리 중심 확대·축소(0.1~2배)다. 접기 상태는 목록 보기와 따로 둔다.
  5. 오른쪽 노드 상세 — 언제나 읽기 전용 단일 상세다. 여러 줄을 골라 둔 채 바꿔도 일괄 편집 패널(#3866)은 목록 보기에서만 선다. [자동 정렬]도 감춘다.
  6. 편집 중이면 — 저장하지 않은 편집이 그대로 남고 그래프는 그 편집을 반영한 트리를 그린다. 하단 액션 줄(미저장 n건 · [버전 저장])은 그대로다.
  7. 노드 뷰어 (공유 링크) — [공유 링크]가 복사한 주소로 여는 읽기 전용 전체 화면. 판 번호를 늘 실어 공유한 때의 판으로 고정한다. 제품 조회 역할만 연다. 머리 = 제품·vN·[자재구성 | 공정구성] 탭·(공정구성이면) 보기 고르기·「읽기 전용」·[링크 복사]. 편집·필터·팔레트는 없다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=EBOM|MBOM&version= — 목록 보기와 같은 트리 조회(IF-PM-BOM-001, 무변경). 노드 보기로 바꿀 때 다시 부르지 않는다. 공정중심 묶음은 화면이 묶는다
제품 상세  ›  자재/공정구성
CMD+K 검색
🔔3
자재/공정구성 · 공정구성(MBOM) · 노드 보기
DHS-AE225-U v25 (초안) 총 자재 53
자재구성(EBOM)공정구성(MBOM)
자재중심(평면) ▾ 1목록노드
공급구분공통 / 외창 / 내창자재분류PROFILE / …
2모두 펴기모두 접기맞춤⤢ 전체화면⤓ PDF 내려받기🔗 공유 링크코드·이름 찾기1 / 2
범례 ▮반제품 ▮원자재 ▮부자재 ▮공정 · 맨 왼쪽 번호 = 맨 바깥 반제품 안 작업 순서
3
완제품 225 우수 미서기
DHS-AE225-U ▾ 3
후렘 조립모듈 ×1
ASM-FRAME-AE225-U ▾ 3
외창 문짝 조립모듈 ×2
ASM-VENT-OUT-AE225-U ▸ 9
방충망 조립모듈 ×1
ASM-SCR-AE225-U ▸ 7
1 절단
P-CUT-01
1 후렘-외부 A ×2
UNI-A225-101
2 나사 4x20 ×8
SCR-0012
4빈 바탕 끌기 = 옮기기 · 휠 = 확대·축소 · ▸/▾ = 접기·펴기 · 노드 누름 = 고르기(테두리 칠함). 그림의 품목 코드·이름·수량은 시험용 보기다.
5선택 노드 상세 (읽기 전용)
품목 코드ASM-FRAME-AE225-U
품목명후렘 조립모듈
유형반제품
수량 / 단위1 SET
편집 단추가 없다. 여러 줄을 골라 둔 채 바꿔도 이 단일 상세가 선다.
6미저장 2건BOM 전개 검산BOM 비교버전 저장
7노드 뷰어 — 공유 링크로 연 읽기 전용 전체 화면
DHS-AE225-U225 우수 미서기 이중창v25
자재구성(EBOM)공정구성(MBOM)
읽기 전용🔗 링크 복사
아래는 위와 같은 그래프(도구줄은 [모두 펴기]·[모두 접기]·[맞춤]·[PDF 내려받기]·찾기)와 읽기 전용 노드 상세 둘로 나뉜다. 왼쪽 메뉴·편집·필터·팔레트는 없다. 주소 /products/DHS-AE225-U/bom/viewer?version=25&view=EBOM — 판은 공유한 때의 것으로 고정한다.
토스트 — 공유 링크를 복사했습니다. 로그인한 사람만 열 수 있습니다.
SCR-PM-012 제품 상세 · [옵션구성] 탭 /products/:productCode Figma: node 1730:11489

구 SCR-PM-013B 옵션 구성 / 확정 구성표(별도 페이지)를 이 탭으로 흡수했다. 옵션그룹·옵션별규칙(3뷰 진입점, 처음 열림)·옵션구성 목록·확정구성표 4서브탭 + Wizard(초보 모드) 진입까지 이 탭 하나에서 관리한다 — 옵션 상세는 이제 여기에만 있고 다른 화면에 중복되지 않는다.

진입 — SCR-PM-010 [행 클릭] / SCR-PM-011 [저장] 완료 후 자동 이동 / SCR-PM-010 [복사 이력] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [옵션구성] 탭 전환

다음 단계 — 견적에서 왔으면 옵션구성 추가 성공 뒤 [견적으로 돌아가기] 를 앞에 · [확정구성표] 줄마다 [견적 라인 열기] → SCR-ES-005 (주소는 응답 projectNo·estimateId·estimateLineId 로 화면이 짓는다 — 결정 6) · 규칙 적용·저장 뒤 [결정표에서 보기]·[시뮬레이터로 확인] (#2107 6·7·8).

  1. 초보 모드 토글 — ON 시 상단에 4단계 stepper가 노출되고 Wizard 진입 화면으로 전환된다.
  2. 서브탭 4종 — 일하는 차례대로 옵션그룹/옵션별규칙/옵션구성 목록/확정구성표를 전환한다. 초보 모드 네 단계와 같은 차례이고 단계 하나가 서브탭 하나를 감싼다(#3762). [옵션구성] 탭을 처음 열면 옵션별규칙이 뜬다 — 탭 줄 링크가 /products/:productCode/bom/configs/rules 를 연다. /products/:productCode/bom/configs 주소는 종전대로 옵션구성 목록이라, 다른 화면의 「옵션구성 만들기」 링크와 저장된 링크는 그대로 목록을 연다(#2534). 아래 영역은 서브탭마다 하나씩 늘어놓은 보기이고, 화면에는 한 번에 하나만 뜬다.
  3. ③ 옵션구성 목록 — 구성 코드·구성명·활성 슬롯·BOM 버전·확정·수정일·작업 7열 테이블과 [+ 옵션구성 추가]. PM 단계 옵션구성은 확정(freeze)이 폐기돼 state 가 항상 DRAFT 고정이라 상태 컬럼 자체를 두지 않는다(#321·R14/ISS-0194). [옵션 조합] 열은 [구성명] 과 중복이라 없앴다(#796 결정 1). enablement 경고는 이 표에 두지 않는다 — [활성 슬롯] 은 서버가 설치 구성에서 계산해 내려주는 값이라 정의상 언제나 활성이고, 경고는 시뮬레이터(SCR-PM-023) 치수 입력 칸에서 뜬다(#850 결정). [+ 옵션구성 추가] 모달은 구성 코드를 사람에게 묻지 않고(#796 결정 2), 그 제품이 쓰는 ENUM 옵션 그룹마다 드롭다운 하나를 펼친다(#796 결정 3). 그 제품이 쓰는 옵션 그룹은 「그 제품의 자재 구성표 규칙(BOM_RULE)이 참조하는 ENUM 그룹」이고, 필수 그룹을 따로 얹지 않으며, 후보가 비어도 전역 목록으로 떨어뜨리지 않는다(#907 결정) — 규칙이 없는 제품은 드롭다운을 하나도 펼치지 않고 「[옵션별규칙] 서브탭에서 규칙을 먼저 만들어 주세요」를 안내한다. 커튼월 30종이 그 경우다. 부재 수 원장이 없는 격자 여섯(3×3·4×3·1×4·2×4·3×4·4×4)은 설치 구성 드롭다운에서 고를 수 없게 잠근다(#864 결정) — 감추지 않고 잠근 채로 두며 「아직 자료가 없어 고를 수 없습니다」를 함께 보인다. 값이 사라진 것이 아니라 아직 자료가 없는 것이라서다. 어느 값이 잠기는지는 화면이 코드에 들고 있지 않고 옵션값 조회 응답의 selectable 을 그대로 읽는다(DE24-1 §5.3 IF-PM-OPT-001).
  4. ① 옵션그룹 — 표 두 개를 나란히 둔다. 왼쪽 그룹 목록 표(그룹 코드·그룹 이름·값 종류·필수·값 수·작업)에서 행을 클릭해 그룹을 고르면 오른쪽에 그 그룹의 값 목록 표(값 코드·값 이름·설명·타입·범위·기본·작업)가 나온다. 그룹 자체의 속성(값 종류·필수·설명)은 [+ 그룹 추가]·[수정] 이 여는 모달에서 고치고(#797 결정), 값의 단위·범위·활성화 조건식은 [값 추가]·[수정] 이 여는 값 모달에서 고친다(#815). 값 종류는 우리말 이름(목록형 · 숫자 · 범위)으로 보인다(#3547). 활성화 조건식은 ROLE_PM_ADMIN 전용이고 RANGE는 Phase 1 비활성이다.
  5. ④-1 그룹 모달 [값 종류] — [+ 그룹 추가] 에서 고른 값 종류는 그룹에 저장된다(option_group.value_type). [수정] 에서는 읽기 전용이다. 종류를 바꾸려면 값이 없을 때 그룹을 지우고 다시 만든다(#3560 결정 · ✅ 서버 반영 #3559 · ✅ 화면 반영 #3558).
  6. ④-2 값 모달 [값 타입] — 우측 표의 [값 추가] 를 누르면 [값 타입] 이 그 그룹에 저장된 값 종류로 열리고 잠긴다(읽기 전용). 값이 없는 그룹도 같다. 예: OPT-DIM(숫자) 에서 [값 추가]를 열면 「숫자」로 열리고 단위·최솟값·최댓값 칸이 바로 보인다. [수정] 에서도 읽기 전용이다. 서버도 그룹 종류와 다른 값을 409 OPTION_VALUE_TYPE_MISMATCH 로 거절한다(#3556 · #3560 결정 · ✅ 서버 반영 #3559 · ✅ 화면 반영 #3558).
  7. ④-2 값 모달 · 저장 전 활성화 조건 검사 — [저장] 을 누르면 먼저 문법을 검사한다. 틀리면 저장하지 않고 활성화 조건 칸 아래에 붉은 글씨로 「{column} 번째 글자: {message}」를 보인다(예: OPT-LAY IN ('2×1' → column 18: ')' 기대했지만 '<EOF>'). 식에 쓸 수 없는 이름이 있으면 노란 경고 「이 이름은 활성화 조건을 계산할 때 값이 없습니다. 이대로 저장하면 칸이 늘 닫힙니다」를 띄우되 저장은 막지 않는다. 목록형 값에 잠금 문장이 아닌 식을 넣으면 「목록형 값은 다른 옵션을 읽지 못합니다」를 띄운다(#3548 결정 · ✅ 서버 반영 #3553 · ✅ 화면 반영 #3552).
  8. [조건 문법 도움말] 창 — ④-2 값 모달의 [조건 문법 도움말] 버튼을 누르면 열리는 읽기 전용 창이다. 서버를 부르지 않는다. 닫기 = [닫기] · ESC · 바깥 누르기. 연산자·쓸 수 있는 이름·예시는 정본 「#3548 결정」 표를 그대로 옮긴다 — 종전 예시 PRODUCT.series_code 는 쓸 수 없는 이름이라 뺐다(R-COND-HELP-MODAL #3548 정정 · ✅ 화면 반영 #3552).
  9. ② 옵션별규칙 — 템플릿 갤러리(SCR-PM-021)·결정표(SCR-PM-022)·전문가 모드(SCR-PM-024) 3뷰 진입 카드를 제공한다. 세 뷰에서 규칙이 다룰 자재를 고르는 칸은 같은 「대상 자재 고르개」다 — 템플릿 적용 창 · 결정표 규칙 폼 · 전문가 편집 패널(#2503). 종전 [🔍 시뮬레이터 열기] 보조 버튼은 #278 결정으로 폐지됐다 — 시뮬레이터는 [시뮬레이터] 탭으로만 진입한다.
  10. ④ 확정구성표 — 활성 탭이다. 눌러서 들어가고 자료도 있다. 옵션구성을 고르면 그 구성을 쓴 견적 라인의 확정 구성표를 읽기 전용 9칸 표로 보인다. 정본 여섯 칸(resolvedBomKey·확정·확정일시·견적라인 ID·견적 번호·견적 라인 link)에 정본 밖 세 칸(펼침·BOM 버전·자재행 수)이 붙는다(#2208). [견적 라인 열기] 는 견적설계 조회 권한(ES_VIEWER_PLUS)이 없으면 잠기고, 말풍선으로 까닭을 보인다(⑥-1). 발급·확정(freeze)·MES 전달 단추는 없다(R14). 종전의 「Phase 1·Phase 2 모두 비활성 탭」(R-FROZEN-TAB-DISABLED, #209)은 뒤집혔다 — 화면 GH-403(53a7ac17, 2026-07-09)이 탭을 켰고, 정본 §05 as-built 상자(#972)가 이를 적었다.
  11. ⑤ Wizard(초보 모드) — 4단계 stepper(옵션 그룹·값→옵션별규칙→옵션구성→확정)로 현재 단계 콘텐츠를 인라인 노출한다. 종전 ① 옵션값·② 옵션그룹은 같은 화면이라 한 단계로 합쳤다(#3762, ✅ 화면 반영 69c37de5). 제목 아래 한 줄은 단계마다 바뀌는 머리 안내 글이다. Phase 1 은 Expert 전용 빌드이며 [🎓 Wizard] 토글은 disabled + "Phase 2 제공" 툴팁(R-WIZARD-5STEP) — 아래는 Phase 2 예시다.
  12. ④ 확정구성표 · 펼친 행 — 줄이나 펼침 단추를 누르면 그 견적 라인의 자재 절단 행 10칸(자재코드·자재명·분류·공급구분·수량·부모당·기준 치수·절단길이·2차길이·실절단길이)이 바로 아래에 펼쳐진다. 수량 두 칸과 2차길이는 #2415 결정이고 종전 「절단수량」 칸은 뺐다(서버 #2437 · 화면 #2438 반영). 한 번에 한 줄만 펼친다. 공급구분 고르개(전체·공통·외창·내창)는 이 펼친 행 안에 있다.
  13. ④ 확정구성표 · [엑셀 내려받기] — 이 제품의 확정된 견적 라인을 옵션별로 맞댄 xlsx 를 받는다(#2451 · 서버 반영 #2466 · 화면 반영 #2467). 메뉴는 둘이다 — 「모든 옵션구성 — 옵션별 비교」(기본, 제품의 확정 라인 전부)와 「고른 옵션구성만」(옵션구성을 고른 뒤에만 열린다). 파일은 시트 둘이다 — 시트 1 「옵션별 수량」은 자재가 행이고 견적 라인이 열 묶음(라인마다 수량·부모당)이며, 시트 2 「자재 행」은 라인 × 자재 한 줄씩 절단 값까지 적는다. 확정(Frozen) 라인만 담고, 라인이 50개를 넘으면 받지 않고 옵션구성을 골라 좁히라고 알린다. 시뮬레이터 [엑셀 다운로드]와는 단추·주소·파일 이름이 다르다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/configs — 옵션구성 목록 조회
  • POST/api/pm/products/{productCode}/configs — 옵션구성 추가
  • PUT/api/pm/products/{productCode}/configs/{configId} — 옵션구성 수정
  • DELETE/api/pm/products/{productCode}/configs/{configId} — 옵션구성 삭제(DRAFT만 허용, FE 보수 정책)
  • PUT/api/pm/products/{productCode}/configs/{configId}/options — 옵션 조합 저장
  • POST/api/pm/products/{productCode}/configs/{configId}/resolve — 확정구성표 evaluate-only 미리보기
  • GET/api/pm/options/groups?productCode={productCode} — [+ 옵션구성 추가] 모달 — 그 제품이 쓰는 ENUM 옵션 그룹만 (#907)
  • GET/api/pm/options/groups — 옵션그룹 서브탭 — 좌측 그룹 목록 표 (매개변수 없이 전역 전건)
  • POST/api/pm/options/groups — [+ 그룹 추가] 모달 저장 — 고른 값 종류(valueType)를 그룹에 저장(#3560 · ✅ 서버 반영 #3559)
  • PUT/api/pm/options/groups/{groupCode} — [수정] 모달 저장
  • DELETE/api/pm/options/groups/{groupCode} — 그룹 삭제(자식 값 잔존 시 409 OPTION_GROUP_HAS_VALUES)
  • GET/api/pm/options/groups/{groupCode}/values — 우측 옵션값 목록 표
  • POST/api/pm/options/groups/{groupCode}/values — [값 추가] — 그룹에 저장된 종류와 다른 값 종류는 409 OPTION_VALUE_TYPE_MISMATCH(#3556 · ✅ 서버 반영 #3559)
  • PUT/api/pm/options/values/{valueId} — 옵션값 수정 — 값 종류를 바꿔 보내면 409 OPTION_VALUE_TYPE_MISMATCH · 활성화 조건 문법 오류는 400 OPTION_ENABLEMENT_CONDITION_INVALID(#3548)
  • POST/api/pm/rules/validate-expr — ④-2 값 모달 [저장] 전 활성화 조건 문법 검사(valid·column·message·identifiers) (#3548 · ✅ 서버 반영 #3553)
  • DELETE/api/pm/options/values/{valueId} — 옵션값 삭제(사용 중이면 409 OPTION_VALUE_IN_USE)
  • GET/api/pm/options/values/{valueId}/usage — 옵션값 삭제 차단 시 사용처 표시
  • GET/api/pm/products/{productCode}/rules/decision-table — 옵션별규칙 카드 → SCR-PM-022 결정표 진입 데이터
  • GET/api/pm/products/{productCode}/rules — 옵션별규칙 목록(전문가 모드 진입 대응)
  • GET/api/pm/products/{productCode}/configs/{configId}/resolved-boms — ④ 확정구성표 — 옵션구성 참조 확정 구성표 목록(견적 라인 단위 요약·확정(frozen) 상태) (IF-PM-RBOM-001, #402·BE #403)
  • GET/api/pm/products/{productCode}/configs/{configId}/resolved-boms/{estimateLineId}/lines — 선택 견적 라인의 확정 구성표 자재 행(펼친 행 — 공급구분 거름) (IF-PM-RBOM-001)
  • GET/api/pm/products/{productCode}/resolved-boms/export?format=xlsx&configIds= — ④ 확정구성표 [엑셀 내려받기] — 제품의 확정 라인을 옵션별로 맞댄 xlsx (IF-PM-RBOM-EXPORT-001, #2451 · 서버 반영 #2466 · 화면 반영 #2467)
제품 상세  ›  옵션구성
CMD+K 검색
🔔3
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 이력
옵션구성 관리
DHS-AE225-D-1 1초보 모드
2옵션그룹 옵션별규칙 옵션구성 목록 확정구성표
4① 옵션그룹 (서브탭 미리보기) Figma: node 672:4206
⚠ 전역 옵션 마스터 — 이 화면의 변경 사항은 전 제품에 영향을 미칩니다. (항상 고정 노출)
옵션 그룹+ 그룹 추가
그룹 코드그룹 이름값 종류필수값 수작업
OPT-LAY설치 구성목록형필수16✏ 🗑
OPT-FIN색상·표면처리목록형6✏ 🗑
OPT-DIM치수 입력숫자7✏ 🗑
OPT-FIN 옵션 값값 추가
값 코드값 이름설명타입범위기본작업
2COAT2코팅2코팅목록형—✓✏ 🗑
3COAT3코팅3코팅목록형——✏ 🗑
MF무피무피목록형——✏ 🗑
분체도장분체도장파우더코팅 (색상 자유)목록형——✏ 🗑
불소도장불소도장고내후성 불소 도장목록형——✏ 🗑
아노다이징아노다이징양극산화 표면처리목록형——✏ 🗑
좌측 행을 클릭해 그룹을 고르면 우측에 그 그룹의 값 목록이 나온다. 그룹을 고르지 않았으면 우측은 "좌측에서 그룹을 선택하세요." 안내만 둔다. 편집 권한(ROLE_PM_EDITOR 이상)이 없으면 두 표의 [작업] 열과 [+ 그룹 추가]·[값 추가] 를 감춘다. 좌측 [값 종류]·[필수] 열은 권한과 상관없이 보인다. 값 종류는 우리말 이름(목록형 · 숫자 · 범위)만 보이고 코드(ENUM 등)는 마우스를 올리면 보인다(#3547).
④-1 [옵션 그룹 상세] 모달 (추가·수정 공용) — 좌측 표의 [+ 그룹 추가]·[수정]
④-2 [옵션값 상세] 모달 (추가·수정 공용) — 우측 표의 [값 추가]·[수정]
11④-2 모달 [저장] 을 눌렀을 때 — 저장 전 활성화 조건 검사 (#3548 · ✅ 서버·화면 반영)
문법 오류 — 저장하지 않는다
활성화 조건OPT-LAY IN ('2×1'
18 번째 글자: ')' 기대했지만 '<EOF>'
취소저장 (막힘)
쓸 수 없는 이름 — 경고만, 저장은 된다
활성화 조건PRODUCT.series_code == 'AE225'
이 이름은 활성화 조건을 계산할 때 값이 없습니다. 이대로 저장하면 칸이 늘 닫힙니다
목록형 값에 잠금 문장(OPT-LAY == '__LOCKED__')이 아닌 식을 넣으면 같은 자리에 「목록형 값은 다른 옵션을 읽지 못합니다」
취소저장
12[조건 문법 도움말] 창 — ④-2 값 모달의 [조건 문법 도움말] 버튼을 누르면 열린다 (서버 호출 없음 · R-COND-HELP-MODAL #3548 정정)
그룹 자체의 속성은 표 안에서 고치지 않고 ④-1 모달에서, 값 슬롯의 범위·단위·활성화 조건은 ④-2 모달에서 고친다(#797 결정 — 정본 §05 [옵션그룹] 화면 배치 · #815 개발 서버 실측으로 그룹/값 속성 분리).
5② 옵션별규칙 (3뷰 진입점) — [옵션구성] 탭을 처음 열면 뜨는 서브탭 Figma: node 672:4207
계열 AE225sbv12상태 DRAFT
제품군은 고르는 칸이 아니라 읽는 배지다(#1119) — 주소에 제품이 박혀 있어 고를 것이 없다. 앞말은 형식을 따라 갈린다(미서기 「계열」·그 밖 「시리즈」).
시뮬레이터 진입은 [시뮬레이터] 탭으로 단일화됐다(#278) — 종전 [🔍 시뮬레이터 열기] 보조 버튼은 폐지됐다.
📋 템플릿 갤러리(견적 담당자용)
빌트인 카드 그리드 · 클릭 한 번으로 규칙 추가
→ SCR-PM-021
📊 결정표(PM 담당자용)
옵션 조합 × 규칙 매트릭스 · 충돌·미커버 자동 검출
→ SCR-PM-022
⚙️ 전문가 모드(관리자용)
행 단위 직접 편집 · SET/REPLACE/ADD/REMOVE 노출
→ SCR-PM-024
3③ 옵션구성 목록 Figma: node 672:4204
+ 옵션구성 추가
구성 코드구성명활성 슬롯BOM 버전확정수정일작업
CFG-0011×1 (가로1모듈 세로1모듈) / 45도 사선 / 기본유리 / PVC / 2코팅[W, H]v12—2026-07-28✏ 🗑
CFG-0022×1 (가로2모듈 세로1모듈) / 직각-가로우선 / 기본유리 / 알루미늄 / 무피[W, H, W1]v12—2026-07-28✏ 🗑
CFG-0033×2 (가로3모듈 세로2모듈) / 45도 사선 / 24t복층 / 알루미늄+PVC단열 / 아노다이징[W, H, W1, H1, H2]v12Frozen2026-07-29✏ 🗑
[옵션 조합] 열은 없앴다 — [구성명] 과 같은 정보를 값 코드로 적은 중복 열이었다(#796 결정 1). [상태] 열도 두지 않는다(#321·R14 — PM 단계는 늘 DRAFT). [치수 요약] 열은 R13 에서 폐기됐고 그 자리를 [활성 슬롯] 이 쓴다.
③-1 [옵션구성 추가] 모달 — 제품이 쓰는 ENUM 옵션 그룹만 펼침 (예: 미서기 DHS-AE225-U — 네 개)
③-2 [옵션구성 추가] 모달 — 쓰는 옵션이 아직 없는 제품 (예: 커튼월 30종)
6④ 확정구성표 — 활성 탭 (읽기 전용 조회) Figma: node 672:4208
이 서브탭은 열려 있다 — 눌러서 들어가고 자료도 있다(product-config-shell.tsx 18줄 disabled: false). 종전의 「Phase 1·Phase 2 모두 비활성(disabled) 탭 + 안내 배너」(R-FROZEN-TAB-DISABLED, #209)는 뒤집혔다 — 화면 GH-403(53a7ac17, 2026-07-09)이 탭을 켰고, 정본 §05 as-built 상자(#972)가 이를 적었다. 발급·확정(freeze)·MES 전달은 여전히 이 화면에 없다 — 견적 라인에 들어가 견적 화면에서 한다(R14).
옵션구성CFG-003 확정상태전체 확정상태 고르개는 구성을 고른 뒤에만 선다 — 값은 전체 · Frozen · Unfrozen. 구성을 고르기 전에는 「구성을 선택하세요」 안내만 둔다. 9엑셀 내려받기 ▾
[엑셀 내려받기 ▾] 를 누르면 열리는 메뉴 (#2451 — 화면 반영 #2467)
① 모든 옵션구성 — 옵션별 비교 기본 · 이 제품의 확정 라인 전부
② 고른 옵션구성만 CFG-003 · 옵션구성을 고르기 전에는 잠근다
확정된 라인만 담습니다. 파일 이름 resolved-bom_{productCode}_yyyyMMdd.xlsx
 resolvedBomKey확정확정일시견적라인 ID견적 번호견적 라인 linkBOM 버전정본 밖자재행 수정본 밖
▾RBOM-AE225-3E-sbv3-7a1c…-EL10042Frozen2026. 05. 04. 오후 02:2210042EST-2026-0117 / 1AW견적 라인 열기v3110건
8자재 절단 행 (견적라인 #10042)공급구분전체
자재코드자재명분류공급구분수량 ⓘ부모당기준 치수절단길이2차길이실절단길이
FRM-TOP-001상부 프레임PROFILE공통21W1500.00-1560.00
FRM-MUL-W1중간 멀리언PROFILE공통22H1200.00-1248.00
GLS-OUT-P1외창 유리GLASS외창21-485.001185.00-
✅ #2415 결정 — 서버 #2437 · 화면 #2438 반영. 「수량」은 제품 한 틀 기준 총수(펼친 수량 expandedQty)이고 머리 ⓘ 에 그 안내를 단다. 「부모당」은 부모 하나당 수량(resolvedQty)으로 자재 구성표 트리 값과 맞대 보는 칸이다. 종전 「절단수량」 칸(cutQtyEvaluated)은 수량 계산에 쓰지 않는 값이라 뺐다(#2105 ⑦). 2차길이는 유리만 값이 있다.
▸RBOM-AE225-3E-sbv3-9b2d…-EL10071Frozen2026. 05. 05. 오후 04:4510071EST-2026-0121 / 2AW견적 라인 열기v3110건
▸—Unfrozen—10089EST-2026-0124 / 1AW견적 라인 열기v396건
칸 이름과 차례는 화면 그대로다(wims2.0_fe origin/dev config-frozen-tab.tsx). 확정 전 줄은 resolvedBomKey·확정일시를 「—」로 둔다. 견적 번호는 estimateNo / sectionCode 이고, 값이 없으면 「—」다. [견적 라인 열기] 는 응답의 projectNo·estimateId·estimateLineId 로 SCR-ES-005 주소를 짓고, 앞의 둘이 없으면 칸을 비워 둔다(#2112 결정 6).
점선 머리 세 칸(펼침·BOM 버전·자재행 수)은 정본 밖이다. 정본 §05 「컬럼 설명」 표는 여섯 칸만 정한다. #2208 완료 선언이 셋을 남긴 까닭은 이렇다 — BOM 버전은 운영에서 표준 자재 구성표가 몇 판인지 바로 보려고 두고, 자재행 수는 자료 양을 가늠하려고 두며, 펼침은 자재 절단 행으로 들어가는 길이라 지우면 운영이 불편하다.
⑥-1 견적설계 조회 권한이 없을 때 — [견적 라인 열기] 잠금
 resolvedBomKey확정확정일시견적라인 ID견적 번호견적 라인 linkBOM 버전정본 밖자재행 수정본 밖
▸RBOM-AE225-3E-sbv3-7a1c…-EL10042Frozen2026. 05. 04. 오후 02:2210042EST-2026-0117 / 1AW견적 라인 열기견적설계 조회 권한이 없습니다v3110건
견적설계 조회 권한 묶음 ES_VIEWER_PLUS(ROLE_ES_VIEWER · ROLE_ES_EDITOR · ROLE_ADMIN)에 들지 않으면, 제품관리 역할만 가진 사람처럼 링크 대신 흐린 글자가 선다. 잠긴 글자에도 키보드가 닿고(tabIndex 0), 읽기 도구는 「견적 라인 열기 (견적설계 조회 권한 없음)」으로 읽는다(aria-disabled·aria-label). 마우스를 올리거나 초점이 가면 말풍선 「견적설계 조회 권한이 없습니다」가 뜬다. 표의 나머지 칸은 권한과 상관없이 그대로 보인다.
정본 스케치에 있는 [소요량 요약]·[Base BOM 비교]·[PDF 내보내기] 단추와 머리의 공급 구분·검색 칸은 지금 화면에 없다. 공급구분 고르개는 펼친 행 안에 있다(표식 8).
⑥-2 [엑셀 내려받기] 가 주는 파일 — 시트 1 「옵션별 수량」 (표식 9, #2451)
옵션1×1 / 세로우선2×2 / 세로우선
치수2000×20002000×2000
견적 라인EST-2026-0117 / 1AW (#10042)EST-2026-0121 / 2AW (#10071)
자재코드자재명분류공급구분단위부모 자재코드절단방향수량부모당수량부모당
FRM-TOP-001상부 프레임PROFILE공통EAASM-FRAMEW2121
FRM-MUL-W1중간 멀리언PROFILE공통EAASM-FRAMEH22
HDW-LCK-001잠금장치HARDWARE공통EAASM-VENT-IN2182
자재가 행이고 견적 라인이 열 묶음이다. 「수량」은 제품 한 틀 기준 총수(expandedQty), 「부모당」은 부모 하나당 수량(resolvedQty)이다 — 화면 칸과 같은 낱말이다(#2415). 그 라인에 없는 자재는 비운다(0 이 아니다 — 둘째 줄의 1×1 칸). 행은 「부모 자재코드 + 자재코드 + 절단방향 + 공급구분」으로 가른다 — 같은 자재라도 부모나 공급구분이 다르면 다른 행이라, 받은 뒤 공급구분으로 걸러도 합계가 맞는다(#2482). 부모 자재코드는 확정 구성표 줄이 가리키는 부모 줄의 자재코드다. 열은 옵션구성 코드 · 확정일시 차례로 선다. 절단 길이는 라인마다 치수가 달라 시트 2 「자재 행」에 라인 × 자재 한 줄씩 적는다. 칸 정본은 DE24-1 §5.3.5 IF-PM-RBOM-EXPORT-001 이다. 숫자는 그림용 예시다.
7⑤ Wizard (초보 모드) 4단계 — #3762 Figma: node 1349:7055
Phase 1 은 Expert 전용으로 빌드한다. [🎓 Wizard] 토글은 Phase 1 에서 비활성(disabled)이며 hover 시 "Phase 2 제공 — 초보 모드는 Phase 2 에서 활성됩니다." 툴팁을 노출한다(R-WIZARD-5STEP). 아래 5-step stepper 는 Phase 2 활성 시점의 명세 예시다.
[초보 모드] 토글 ON 시(Phase 2) 상단에 5단계 stepper 가 붙고 현재 단계 콘텐츠를 인라인으로 노출합니다.
① 옵션 그룹·값 완료 ② 옵션별규칙 (현재) ③ 옵션구성 미도달 ④ 확정 미도달
옵션 구성 단계 — 옵션값에 따라 자재가 어떻게 바뀌는지 규칙으로 정합니다. 처음이면 📋 템플릿에서 골라 적용하는 것이 가장 쉽습니다. (② 단계 머리 안내 글)
② 옵션별규칙: 결정표 충돌 2건 — 충돌 해소 후 다음 단계 진행 가능. (예시)
새 단추 (#2112 — 정본 「이탈」 행)견적으로 돌아가기자리: 옵션구성 추가 성공 뒤 — returnTo 가 있을 때견적 라인 열기자리: [확정구성표] 서브탭 줄마다결정표에서 보기자리: 템플릿 적용 완료 칸 (창을 저절로 닫지 않는다)시뮬레이터로 확인자리: 템플릿 적용 완료 칸 · 결정표·전문가 편집기 저장 뒤
SCR-PM-021 옵션별규칙 템플릿 갤러리 · 적용 창 — 대상 자재 고르개 /products/:productCode/bom/configs/rules/templates

템플릿 [적용] 창에서 규칙이 다룰 자재를 「이 제품의 자재」 목록에서 고른다(#2503). 목록은 제품의 현행 표준 판 공정구성(MBOM) 트리의 자재·반제품이고, 전체 자재 검색은 같은 고르개 안 다른 구역으로 남는다. 새 서버 계약은 없다. 그림은 BR3 옵션별 자재교체의 「교체 전 자재」(fromItem) 칸을 연 모습이다. 화면 반영 #2514 (wims2.0_fe 7f0702d6).

진입 — [옵션구성] 탭 › [옵션별규칙] 서브탭 › 📋 템플릿 갤러리 › 카드 [적용]. 갤러리 카드 그리드는 정본 SCR-PM-021 스케치 그대로다. 같은 고르개를 결정표 규칙 폼과 전문가 편집 패널도 쓴다.

  1. 자재 슬롯 = 대상 자재 고르개 — item_ref 슬롯(item·fromItem·toItem·targetItem·horizontalBar·verticalBar·reinforceItem)은 모두 이 고르개다. 칸에 글자를 직접 쳐도 된다.
  2. 「이 제품의 자재」 구역 — 현행 표준 판(제품 상세 currentStandardBomVersion, 시뮬레이터 기본 판과 같다) 공정구성 트리의 자재·반제품. 공정·루트는 올리지 않는다. 같은 코드는 한 줄. 슬롯이 자재분류를 정해 두면 같은 분류만 보인다. 구역은 안쪽에서 굴린다(최대 320px).
  3. 묶음 머리글 — 루트 바로 아래 노드(반제품 또는 공정)별로 접고 편다. 머리글이 반제품이면 그 반제품도 묶음 첫 줄로 고를 수 있다. 루트 바로 아래 자재는 맨 끝 「묶음 없음」.
  4. 줄 — 두 줄 짜임 — 윗줄 품목명(굵게, 두 줄까지). 아랫줄 코드 · 단위, 반제품이면 「반제품」 딱지. 수량은 적지 않는다. 줄을 누르면 코드가 칸에 들어가고 닫힌다.
  5. 「전체 자재 검색」 구역 — 검색어가 비면 아무것도 보이지 않는다(전체 마스터 앞 20건을 보이지 않는다). 글자를 치면 위 목록은 화면 안에서 거르고, 이 구역은 종전 서버 검색 20건을 보인다. 이 제품 목록에 있는 줄에는 「이 제품」 딱지.
  6. 주 경로가 다른 슬롯 — 새로 넣는 자재(item·toItem·reinforceItem)는 두 구역의 위아래를 바꾸고 「이 제품의 자재」를 접어 둔다. 바뀌는 대상(fromItem·targetItem·horizontalBar·verticalBar)은 그림처럼 목록이 위다.
  7. 목록 자리의 다른 상태 — 현행 판이 없거나 트리에 자재·반제품이 없을 때 · 읽지 못했을 때. 어느 경우에도 전체 검색은 쓸 수 있다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode} — 현행 표준 판 번호(currentStandardBomVersion). 옵션별규칙 서브탭이 이미 읽어 둔 값
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={현행 판} — 목록의 재료(IF-PM-BOM-001, 계약 그대로). 「이 제품」 판정도 화면이 이 트리의 코드로 가른다
  • GET/api/pm/materials?size=20&search=&itemCategory= — 전체 자재 검색(검색어가 있을 때만)
  • GET/api/pm/materials/{itemCode} · /api/pm/assemblies/{itemCode} — 손으로 친 코드의 존재 확인(목록에 없을 때만). 둘 다 없으면 [미리보기]를 끈다 — [적용]은 미리보기를 지나야 닿는다(#2514)
제품 상세  ›  옵션구성  ›  옵션별규칙 · 템플릿 갤러리
CMD+K 검색
🔔3
7목록 자리의 다른 상태
현행 판이 없음 · 트리에 자재·반제품이 없음
이 제품에 현행 버전이 없어 목록을 만들 수 없습니다. 아래 전체 검색으로 고르세요.
읽지 못했을 때
이 제품의 자재를 읽지 못했습니다.
다시 시도
SCR-PM-021 옵션별규칙 템플릿 갤러리 · 사용자 템플릿 [수정] 창 /products/:productCode/bom/configs/rules/templates

사용자 템플릿을 갤러리에서 바로 고친다(#3693). 카드 단추줄에 [수정]을 더하고, 「템플릿 수정」 창에서 이름·설명·적용 범위·빈칸 양식·규칙 내용 다섯을 고친다. 빌트인은 단추를 끈다. 복사가 끝나면 이 창이 이어서 열린다. 새 서버 계약은 없다. 정본은 DE22-1 §05 SCR-PM-021 「#3693」 상자다. 화면 반영 wims2.0_fe PR #1356.

진입 — [옵션구성] 탭 › [옵션별규칙] 서브탭 › 📋 템플릿 갤러리 › 사용자 템플릿 카드 [수정]. 또는 카드 [복사] › 「템플릿 복사」 창 [복사]가 끝난 직후(이때 창 설명이 「복사한 템플릿입니다…」로 바뀐다).

  1. 카드 단추줄 — [삭제]·[복사]·[수정]·[적용] 차례. 규칙 편집 권한이 있을 때만 보인다.
  2. 빌트인 [수정] — 꺼 두고 마우스를 올리면 「빌트인 템플릿은 복사한 뒤 고칠 수 있습니다」. 서버도 409 BUILTIN_TEMPLATE_IMMUTABLE 로 막는다.
  3. 이미 만든 규칙 안내 — 사용 횟수가 1 이상일 때만 뜬다. 이미 만든 규칙은 바뀌지 않고, 출처 배지 「템플릿: 이름」만 새 이름을 따른다.
  4. 이름 · 설명 · 적용 범위 — 이름 필수 128자, 설명 4000자, 적용 범위는 RULE_SCOPE 활성 코드. 분류·그림은 고치지 않는다.
  5. 빈칸 양식 (JSON) — slotsSchema. 저장 전에 JSON 목록 · 칸마다 key·type·label · key 겹침을 검사해 어긋나면 칸 아래 붉은 글씨와 [저장] 끔.
  6. 규칙 내용 (JSON) — compileTemplate. 비지 않은 JSON 목록이나 묶음이어야 한다.
  7. [저장] — 바뀐 칸만 보낸다. 아무것도 안 바꿨으면 꺼져 있다. 성공하면 「템플릿을 고쳤습니다」 알림 뒤 창을 닫는다.
관련 API Swagger UI ↗
  • GET/api/pm/rules/templates/{templateId} — 고칠 템플릿의 지금 값(slotsSchema·compileTemplate·usageCount 포함)
  • PUT/api/pm/rules/templates/{templateId} — 사용자 템플릿 수정(IF-PM-TPL-001, 계약 그대로). 보내지 않은 칸은 그대로 둔다. 빌트인은 409
  • POST/api/pm/rules/templates — [복사]. 응답의 새 templateId 로 이 창을 이어 연다
제품 상세  ›  옵션구성  ›  옵션별규칙 · 템플릿 갤러리
CMD+K 검색
🔔3
옵션에 따라 자재 더하기 빌트인
공통 · 사용 25회
삭제복사2수정적용
옵션에 따라 자재 더하기 (복사)
미서기 · 사용 3회
1삭제복사수정적용
SCR-PM-022 옵션별규칙 결정표 · [+ 규칙 추가] 폼 — 대상 자재 고르개 /products/:productCode/bom/configs/rules/decision-table

결정표 셀의 간이 동사별 폼에서 자재 코드 칸을 맨 글자 입력 대신 템플릿 적용 창과 같은 고르개로 바꾼다(#2503). 품목 마스터에 없는 코드는 [저장]을 누르기 전에 알린다. 화면 반영 #2514 (wims2.0_fe 7f0702d6).

진입 — 결정표 셀 클릭 › 우측 상세 패널 › [+ 규칙 추가] (또는 기존 규칙 편집). 행·열 축과 매트릭스는 정본 SCR-PM-022 스케치 그대로다.

  1. 바뀌는 대상 칸 — SET 범위(match.itemCode·itemCode) · REPLACE 교체 전 · REMOVE 제거 대상. 열면 「이 제품의 자재」가 위다. 칸 안 예시 코드(FRM-TOP-001·OLD-001 등)는 지우고 「이 제품의 자재에서 고르기」를 적는다.
  2. 새로 넣는 자재 칸 — ADD 자재 코드 · REPLACE 교체 후. 열면 「전체 자재 검색」이 위다. 자리표시 「자재 코드·이름으로 찾기」.
  3. 품목 마스터에 없는 코드 — 손으로 친 코드가 이 제품 목록에도, 자재·반제품 단건 조회에도 없으면 붉은 글씨로 알리고 [저장]을 막는다. 서버의 422 RULE_ACTION_ITEM_NOT_FOUND 와 같은 선이다.
  4. 이 제품 공정구성에 없는 대상 — 마스터에는 있으나 바뀌는 대상 칸인데 공정구성 v{N} 에 없으면 회색 안내만 둔다. 다른 규칙이 추가한 줄을 겨누는 규칙이 정상으로 있어 막지 않는다.
  5. 행 추가(ADD) 칸 차례 — 동사를 ADD 로 고르면 자재 코드 · 수량 · 놓일 자리 · 기준 치수 · 절단 길이 산식 · 절단 수량 산식 · 공급 구분 차례로 보인다(#3575 결정 · ✅ 화면 반영 #3581 회송, wims2.0_fe 7ae207dd — 전문가 모드와 같은 부품).
  6. 수량 — 처음 값 1, 0보다 큰 수만 받는다. 비우면 「수량을 0보다 큰 수로 넣으세요.」로 [저장]을 막는다. 수량 없이 저장된 옛 규칙을 열면 칸을 빈칸으로 두고 「수량이 비어 있습니다」를 알린다(1로 고쳐 읽지 않는다). 서버도 없음 · 0 · 숫자 아님을 400 INVALID_PARAMETER, 음수를 422 RULE_ACTION_QTY_INVALID 로 거절한다(✅ 서버 반영 #3582).
  7. 놓일 자리 — 이 제품 공정구성 트리에서 반제품만 고르는 고르개다. 칸 아래에 「비워 두면 맨 위(뿌리)에 붙습니다.」를 적는다. 같은 코드가 여러 자리면 위 반제품 이름과 기준 치수를 붙여 가르고, 그래도 같으면 「n번째」를 붙인다. 실린 자리를 이 판에서 못 찾으면 「놓일 자리를 이 판에서 찾지 못했습니다. 다시 고르십시오.」를 보인다.
  8. 절단 수량 산식 — 이름 옆에 「수량이 아닙니다 — 수량은 위 칸」을 단다. 이 칸 값은 수량 계산에 들어가지 않는다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={현행 판} — 「이 제품의 자재」 목록과 「없음」 안내의 재료(IF-PM-BOM-001, 계약 그대로)
  • GET/api/pm/materials?size=20&search= — 전체 자재 검색
  • GET/api/pm/materials/{itemCode} · /api/pm/assemblies/{itemCode} — 저장 전 존재 확인
  • POST/api/pm/products/{productCode}/rules · PUT …/rules/{ruleId} — 저장(IF-PM-RULE-CRUD-001). 행 추가는 item.qty(필수) · item.parentItemCode(같은 코드가 여럿이면 item.parentNodeId 함께)를 싣는다 — 수량 없음 · 0 · 숫자 아님은 400 INVALID_PARAMETER(#3575 · ✅ 서버 반영 #3582)
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={현행 판} — 놓일 자리 고르개의 반제품 목록(같은 판 공정구성 트리, 계약 그대로)
제품 상세  ›  옵션구성  ›  옵션별규칙 · 결정표
CMD+K 검색
🔔3
규칙 추가 — 3×2 × 가로우선 · 동사 SET
fieldcutLengthFormulavalueW - 94
1범위 대상UNI-A225-10KN
225 후렘 널링반제품 · 반제품 · 이 제품
범위 필수 — match.itemCode 기준 적용
취소저장
규칙 추가 — 동사 REPLACE
교체 전UNI-A225-101A
2교체 후UNI-CW135-HIDDN
3품목 마스터에 없는 코드입니다
취소저장 (막힘)
규칙 추가 — 동사 REMOVE
제거 대상UNI-A160-101
4이 제품의 공정구성 v19 에 없는 자재입니다. 다른 규칙이 추가하는 줄이 아니면 이 규칙은 어느 줄에도 걸리지 않습니다.
취소저장
규칙 추가 — 3×2 × 가로우선 · 동사 ADD (행 추가 — #3575 결정 · ✅ 화면 반영 #3581 회송)
자재 코드 (itemCode)PRF-REIN-01 · 자재 코드·이름으로 찾기
5수량1EA
수량이 비어 있습니다 — 수량 없이 저장된 옛 규칙을 열었을 때만 · 비우거나 0 이하면 「수량을 0보다 큰 수로 넣으세요.」
6놓일 자리225 후렘 널링반제품 (UNI-A225-10KN) — 우수 후렘 조립모듈(225) 아래 ▾
비워 두면 맨 위(뿌리)에 붙습니다.
기준 치수예: H절단 길이 산식예: H - 40
절단 수량 산식수량이 아닙니다 — 수량은 위 칸 
공급 구분상속(비움) ▾
취소저장
고르개를 연 모습은 템플릿 적용 창 프레임과 같다 — 두 구역 · 묶음 목록 · 두 줄 짜임 · 빈 판·실패 안내.
SCR-PM-024 옵션별규칙 전문가 편집기 · 우측 편집 패널 — 대상 자재 고르개 /products/:productCode/bom/configs/rules/expert

전문가 모드 편집 패널의 동작(action_json) 자재 코드 칸도 결정표 규칙 폼과 같은 고르개·같은 주 경로·같은 저장 전 확인을 쓴다(#2503). 관리자 화면이라도 맨 입력으로 남기지 않는다. 화면 반영 #2514 (wims2.0_fe 7f0702d6).

진입 — [옵션별규칙] 서브탭 › [전문가 모드 열기] › 좌측 규칙 목록에서 행 선택 또는 [+ 규칙 추가]. 좌측 목록·조건(when_expr)·AST 검증은 정본 SCR-PM-024 스케치 그대로다.

  1. 동사별 자재 코드 칸 — 동사를 바꾸면 그 동사의 자재 칸만 보인다. 칸마다 주 경로는 결정표 폼과 같다(그림은 ADD — 새로 넣는 자재라 전체 검색이 위).
  2. 저장 전 확인 — 품목 마스터에 없으면 붉은 글씨 + [저장] 막음. 바뀌는 대상이 이 제품 공정구성에 없으면 회색 안내만.
  3. 공정 (읽기 전용) — 더하기 동작에 공정(item.processCode)이 있으면 자재 코드 칸 아래에 「공정: {이름} ({코드})」를 읽기만 보인다. 화면에서 고르지 않는다 — 템플릿 재적용이나 JSON 가져오기로 바꾼다. 좌측 목록은 「동사」 칸 대신 「동작」 칸(동사 · 자재 코드 · 공정 이름)을 둔다(#3536 결정, ⏳ 화면 반영 전).
  4. 행 추가(ADD) 칸 차례 — 자재 코드 · 수량(필수, 처음 값 1, 0보다 큰 수) · 놓일 자리(선택) · 기준 치수 · 절단 길이 산식 · 절단 수량 산식 · 공급 구분. 놓일 자리는 같은 판 공정구성 트리에서 반제품만 고르고 칸 아래에 「비워 두면 맨 위(뿌리)에 붙습니다.」를 적는다. 절단 수량 산식 이름 옆에 「수량이 아닙니다 — 수량은 위 칸」을 단다. 칸 모양과 검사는 결정표 규칙 폼과 같은 부품이다(#3575 결정 · ✅ 화면 반영 #3581, wims2.0_fe 3e05b7c9 · ✅ 서버 반영 #3582).
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={현행 판} · /api/pm/materials?size=20&search= — 고르개 두 구역(계약 그대로)
  • GET/api/pm/materials/{itemCode} · /api/pm/assemblies/{itemCode} — 저장 전 존재 확인
  • PUT/api/pm/products/{productCode}/rules/{ruleId} — 저장(IF-PM-RULE-CRUD-001). 행 추가 item.qty 없음 · 0 · 숫자 아님은 400 INVALID_PARAMETER(#3575 · ✅ 서버 반영 #3582)
  • GET/api/pm/products/{productCode}/bom?view=MBOM&version={현행 판} — 놓일 자리 고르개의 반제품 목록(계약 그대로)
제품 상세  ›  옵션구성  ›  옵션별규칙 · 전문가 편집기
CMD+K 검색
🔔3
우: 규칙 편집 패널 (#12 🔩 치수초과 보강재)
조건 (when_expr)OPT-LAY = '3×2' AND W > 3000
동사ADD
1자재 코드 (itemCode)PRF-REIN-01 · 자재 코드·이름으로 찾기
2품목 마스터에 없는 코드입니다
3공정미서기 보강재 삽입 (P-RNF-01) · 읽기 전용
4수량1EA필수 · 처음 값 1 · 0보다 큰 수
5놓일 자리놓일 자리를 고르세요 ▾ (맨 위(뿌리) · 이 판 공정구성의 반제품)
비워 두면 맨 위(뿌리)에 붙습니다.
기준 치수예: H절단 길이 산식예: H - 40
절단 수량 산식수량이 아닙니다 — 수량은 위 칸 
공급 구분상속(비움) ▾
priority100scopeMASTER
취소저장 (막힘)
SCR-PM-012 제품 상세 · [시뮬레이터] 탭 /products/:productCode Figma: node 1730:13691

Figma 신규 화면. 옵션·치수 입력에 따른 BOM 미리보기와 규칙 적용 결과를 확인하는 3-패널 레이아웃 [옵션 입력 · 결과 미리보기 · 적용/기각 규칙]. (기존 DE22-1 와이어프레임에 없던 탭)

진입 — SCR-PM-010 [행 클릭] / SCR-PM-011 [저장] 완료 후 자동 이동 / SCR-PM-010 [복사 이력] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [시뮬레이터] 탭 전환

다음 단계 — (다음 단계 없음) — 규칙을 돌려 보는 검증 화면. 고칠 것은 탭 줄의 [옵션구성] → [옵션별규칙] 서브탭으로.

  1. 안내 칩 — 옵션·치수 입력에 따른 BOM 미리보기와 규칙 적용 결과를 확인한다는 안내.
  2. 헤더 정보 바 — 제품코드·평가 시간·적용 규칙 수 셋을 표시한다. 캐시 배지는 감춘다 — 서버가 cacheHit 를 늘 거짓으로 보낸다(#3759 결정). 규칙 엔진 판(rule_engine_version)은 싣지 않는다 — 시뮬레이터 응답에 그 칸이 없어 정본이 비채택했다(#1330 결정, 2026-08-21).
  3. 옵션 입력 패널 — 그 제품이 쓰는 ENUM 옵션 그룹과 W/H/W1/H1(조건부 활성) NUMERIC 치수를 입력한다. 값 변경 시 결과 미리보기가 다시 계산된다. 옵션 칸은 이 제품 옵션구성이 고른 그룹만 펼친다(#3578 결정, 2026-10-19) — 서버가 거른 「이 제품이 쓰는 그룹」(#2504, productCode 조회) 가운데 그 제품 옵션구성이 실제로 고른 그룹만 남긴다. 화면이 옵션구성 목록과 구성 상세의 options[].groupCode 를 모아 좁히고 서버는 고치지 않는다. 그 칸의 값도 그 제품 옵션구성이 그 그룹에서 고른 값만 보인다(#4049 결정, 2026-10-27) — 옵션 마스터 값 가운데 옵션구성(작성 중 포함)이 고른 값의 합집합만 남기고, 구성 상세의 options[].valueCode 로 좁힌다. 잠긴 값(#1088)·막힌 값(disabledValues)은 좁힌 목록 안에서 지금처럼 잠그고, 기본값은 좁힌 목록 안에서만 채운다. 옵션 입력 제목 아래에 「값은 이 제품 옵션구성이 고른 것만 보입니다. 다른 값을 시험하려면 [옵션구성 목록] 서브탭에서 그 값을 고른 옵션구성을 먼저 만들어 주세요.」 한 줄을 둔다(⏳ 화면 반영 전). (경위 — #3578 은 값을 옵션 마스터 값 전부로 두었다.) 옵션별 규칙만 쓰고 어떤 옵션구성도 고르지 않은 그룹은 칸을 세우지 않고 안내 상자에 이름을 적는다(그림 아래 상자 — 개발 서버 DHS-AE225-U 의 고정 열 OPT-FIX-COL). 보이는 그룹이 하나도 없으면 드롭다운 자리에 「이 제품 옵션구성에 담긴 옵션이 없습니다. 치수만 넣어 평가해 볼 수 있습니다. 옵션을 넣어 평가하려면 [옵션구성 목록] 서브탭에서 옵션구성을 먼저 만들어 주세요.」를 보이고 치수 칸은 그대로 둔다. 고정 단 경고도 이 좁힌 목록을 쓴다. 그림은 DHS-AE225-U 의 그룹 가운데 다섯을 그렸다. 정본 표시: ⏳ 화면 반영 전(wims2.0_fe PR #1291). (경위 — #2504 는 규칙이 참조하는 그룹을 그대로 보였고, 빈 안내는 「규칙을 먼저 만들라」였다.)
  4. 결과 미리보기 패널 — 추가/변경/삭제 건수 배지와 품목·수량·절단 실치수·상태 테이블. 정본 목표는 구조부/유리부/방충부 계층 트리이나 현재 FE는 들여쓰기(└) flat 목록(잠정, R-SIM-PREVIEW-TREE)이다.
  5. 옵션구성 고르개 · [이 옵션구성으로 평가] — 고르개 자리표시는 「옵션구성 선택」, 항목은 옵션구성 코드와 묶인 판 「v{n}」(제품 현재 판보다 낮으면 「옛 판」 배지)이다. 단추를 누르면 옵션구성 값 위에 왼쪽 값을 덮어 그 구성이 묶인 판으로 평가하고(IF-PM-SIM-002), 결과는 「옵션구성 평가 결과」 칸에 「자재 N줄 · 조건 통과 규칙 M건」과 「v{n} 기준 · 저장하지 않음」으로 보인다. 저장 모양 아이콘을 쓰지 않고, 툴팁은 「저장하지 않습니다. 이 옵션구성과 묶인 판으로 미리 계산합니다.」다(#3759 결정 · ⏳ 화면 반영 전). 종전 이름은 [평가 결과 확인 (ESTIMATE 평가)]였다. 고르개와 옵션 칸은 서로를 따라간다(#4099 결정, 2026-10-28) — 왼쪽 목록형 칸 값이 모두 같은 옵션구성이 저절로 골라지고, 맞는 것이 없으면 고르개가 「맞는 옵션구성 없음」이 되며 그 아래에 「지금 고른 옵션 값에 맞는 옵션구성이 없습니다. 견적에서는 이 조합을 고를 수 없습니다. 쓰려면 [옵션구성 목록] 서브탭에서 옵션구성을 추가하세요.」를 적는다(평가는 막지 않고 단추만 잠근다). 고르개에서 구성을 고르면 그 값으로 옵션 칸을 덮고 구성에 없는 칸은 비운다. 치수는 남긴다. 처음 열 때는 현재 판 기본 구성을 고른다(⏳ 화면 반영 전).
  6. 적용/기각 규칙 패널 — 규칙코드·조건·동작(적용) 또는 기각 이유(기각)를 카드로 표시하고 [추적 상세 펼치기]로 근거를 확장한다.
  7. 규칙만 쓰는 그룹 안내 상자 — 탭을 열어 옵션 그룹·옵션구성 조회가 끝났을 때, 서버 그룹 목록에는 있으나 옵션구성에 없는 그룹이 있으면 옵션 입력 패널 아래에 이름을 적는다. 시험하려면 [옵션구성] 탭 › [옵션구성 목록] 서브탭에서 그 그룹을 고른 옵션구성을 먼저 만든다(#3578 결정 ② · ⏳ 화면 반영 전).
  8. 참고 이미지 — 고르개에 골라진 옵션구성에 그림(imageUrl)이 있으면 「옵션 입력」 안내 한 줄 아래, 옵션 칸 위에 보인다. 높이 240px 이하, 누르면 크게 본다. 그림이 없거나 맞는 옵션구성이 없으면 자리째 그리지 않는다. 그림은 [옵션구성 목록] 서브탭 [수정] 창 「참고 이미지」 칸에서 붙인다(#4107 결정 · ⏳ 서버 · 화면 반영 전).
관련 API Swagger UI ↗
  • POST/api/pm/products/{productCode}/rules/simulate — 옵션·치수 조합 시뮬레이션 실행(evaluate-only)
  • POST/api/pm/products/{productCode}/rules/simulate/export — 엑셀 다운로드(규칙이 뺀 줄은 싣지 않음·머리글 한글, #3695)
  • POST/api/pm/products/{productCode}/rules/estimate-overlay — [이 옵션구성으로 평가] 버튼 — 옵션구성 평가(저장하지 않음, IF-PM-SIM-002 · #3759)
  • GET/api/pm/options/groups?productCode={productCode} — 이 제품이 쓰는 옵션 그룹(서버 거름 #2504, 계약 그대로)
  • GET/api/pm/products/{productCode}/configs · …/configs/{configId} — 옵션구성 목록·상세의 options[].groupCode 로 보일 그룹을 좁힌다(#3578 · 서버 그대로)
제품 상세  ›  시뮬레이터
CMD+K 검색
🔔3
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 이력
1옵션별규칙 시뮬레이터
옵션·치수 입력에 따른 BOM 미리보기와 규칙 적용 결과를 확인합니다.
2DHS-AE225-D-1 평가 시간: 142 ms 적용 규칙: 4 / 12 v25 기준
3옵션 입력
🖼 참고 이미지 · {configCode} (고른 옵션구성에 그림이 있을 때만 · 누르면 크게)
설치 구성 · OPT-LAY3×2 (가로3모듈 세로2모듈)
절단 방식 · OPT-CUT45도 사선
중간띠 유무 · OPT-MID없음
고정창 유무 · OPT-FIX없음
프레임 두께 · OPT-THK1.35T
전체 폭 W (mm)3,200
전체 높이 H (mm)2,400
1편 가로 W1 (mm)500
1단 높이 H1 (mm)1,200
2단 높이 H2·3단 높이 H3 는 현재 설치 구성(OPT-LAY)에서 비활성 🚫. 비활성 칸에 마우스를 올리면 「이 치수 슬롯은 현재 설치 구성에서 비활성입니다」 툴팁이 뜬다(#850).
7옵션별 규칙이 쓰지만 이 제품 옵션구성에 없는 그룹은 보이지 않습니다: 고정 열(OPT-FIX-COL). 그 규칙을 시험하려면 [옵션구성 목록] 서브탭에서 그 그룹을 고른 옵션구성을 먼저 만들어 주세요.
보이는 그룹이 없을 때(다른 상태) — 드롭다운 자리에 「이 제품 옵션구성에 담긴 옵션이 없습니다. 치수만 넣어 평가해 볼 수 있습니다. 옵션을 넣어 평가하려면 [옵션구성 목록] 서브탭에서 옵션구성을 먼저 만들어 주세요.」 · 치수 칸은 그대로 (#3578 · ⏳ 화면 반영 전)
4자동 평가 미리보기 · v25 기준
선택한 옵션 조합으로 자재 구성표가 어떻게 바뀌는지 미리 확인합니다.
추가 2변경 3삭제 1
품목수량절단 실치수상태
+ 프레임 상부 AL-FR-00111,800 mm추가
└ ~보강재 ST-RF-21011,764 mm변경
+ 하부 레일 AL-RA-12011,800 mm (평가 1,798)추가
└ 유리 GL-24T-CLEAR2⚠ 미평가확인 필요
- 기본 손잡이 HD-SV-0011없음삭제
엑셀 다운로드옵션구성 선택5이 옵션구성으로 평가
6적용/기각 규칙
왜 적용됐는지와 왜 빠졌는지를 함께 보여줍니다.
적용 4기각 2
R-AL-FRAME-WIDTH적용
조건: 창 폭 W가 1,500 mm 이상입니다.동작: 상부 프레임을 추가하고 길이를 W 기준으로 계산합니다.
R-HANDLE-BLACK적용
조건: 손잡이 옵션이 블랙 매립형입니다.동작: 기본 손잡이를 제외하고 블랙 손잡이를 추가합니다.
R-MID-BAND-ADD기각
기각 이유: 중간띠 유무가 「있음」이 아닙니다.사용자가 선택한 값은 「없음」입니다.동작 정보는 저장용 원본 규칙값과 함께 유지됩니다.
‹1 / 2›
추적 상세 펼치기
SCR-PM-012 제품 상세 · [버전이력] 탭 /products/:productCode Figma: node 1730:15019

Figma 기준: 서브탭 [자재구성(EBOM) 버전]·[공정구성(MBOM) 버전], 상태 워크플로우 안내 문구 + 칩, (버전·상태·품목수·생성일·생성자·변경 내용) 테이블, 하단 [버전 비교]·[새 버전 생성](→ SCR-PM-014). 기본 탭은 EBOM.

진입 — SCR-PM-010 [행 클릭] / SCR-PM-011 [저장] 완료 후 자동 이동 / SCR-PM-010 [복사 이력] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [버전이력] 탭 전환

다음 단계 — [승격 (배포)] 뒤 옵션구성 0건이면 [옵션구성 만들기], 있으면 [옵션구성 보기] → SCR-PM-013B · [새 버전 생성] 뒤 새 판의 SCR-PM-013 편집기로 옮긴다 (#2107 4·5).

  1. 버전 서브탭 — 자재구성(EBOM) 버전/공정구성(MBOM) 버전을 전환한다.
  2. 상태 워크플로 안내 — DRAFT→RELEASED→DEPRECATED 순서와 'RELEASED BOM 직접 수정 불가' 칩으로 새 버전 생성이 필요함을 안내한다.
  3. 버전 이력 테이블 — 버전·상태·품목수·생성일·생성자·변경내용 6열.
  4. 버전 비교 버튼 — SCR-PM-014로 이동해 두 버전의 차이를 확인한다. 상태 배지는 추가됨·삭제됨·변경됨·동일, 수량 머리글은 「v{고른 버전} 수량」이다(#3697).
  5. 새 버전 생성 버튼 — SCR-PM-014로 이동해 새 DRAFT 버전을 생성한다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/versions — EBOM/MBOM 버전 목록 조회
  • GET/api/pm/products/{productCode}/versions/compare — 버전 비교(SCR-PM-014로 진입)
제품 상세  ›  버전이력
CMD+K 검색
🔔3
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 이력
버전이력
1자재구성(EBOM) 버전공정구성(MBOM) 버전
상태: DRAFT → RELEASED → DEPRECATED
2RELEASED BOM 직접 수정 불가 — 새 버전 생성 필요
3버전상태품목수생성일생성자변경 내용
v3RELEASED472025-09-10김지광조립 공정 분할
v2DEPRECATED492024-11-02이미희검사 공정 추가
v1DEPRECATED452023-06-15유미숙초기 발행
4버전 비교 → SCR-PM-0145새 버전 생성 → SCR-PM-014
새 단추 (#2112 — 정본 「이탈」 행)옵션구성 만들기자리: 승격 성공 알림 곁 — 옵션구성 0건옵션구성 보기자리: 같은 자리 — 옵션구성이 있을 때
SCR-PM-012 제품 상세 · [복사 이력] 탭 /products/:productCode Figma: node 1730:16329

Figma 기준: "출처 (이 제품의 원본)"을 테두리 패널로 표시(원본 제품 라벨·값), 아래 "사본 목록(빠른 참조 최대 5건)" 테이블, 하단 가운데 [전체보기]·[+ 제품 복사] 버튼.

진입 — SCR-PM-010 [행 클릭] / SCR-PM-011 [저장] 완료 후 자동 이동 / SCR-PM-010 [복사 이력] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [복사 이력] 탭 전환

  1. 출처 패널 — 이 제품의 원본 productCode와 분류경로를 테두리 박스로 표시한다.
  2. 사본 목록 테이블 — 최대 5건 빠른 참조. 사본 productCode · 복사 일시 · BOM 상태 세 열이다. 깊이 열은 값이 늘 같아 두지 않는다(#2541).
  3. 목록 제목 — 「이 제품을 직접 복사한 사본」. 이 목록이 직접 사본만 보인다는 뜻을 제목이 담는다. 사본의 사본은 그 사본의 [복사 이력] 탭에서 본다(#2541 — 종전 안내 칩을 대체한다).
  4. 전체보기 버튼 — SCR-PM-010의 ?copiedFrom={id} 필터 목록으로 이동한다.
  5. 제품 복사 버튼 — SCR-PM-018 복사 모달을 연다.
관련 API Swagger UI ↗
  • GET/api/pm/products — ?copiedFrom={productId}&size=5 파라미터로 직접 사본 목록 조회
  • GET/api/pm/products/{productCode} — 원본 제품 정보 조회
제품 상세  ›  복사 이력
CMD+K 검색
🔔3
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 이력
복사 이력
1출처 (이 제품의 원본)
원본 제품DHS-AE225-D-1 (미서기/마스/단창)
2이 제품을 직접 복사한 사본 (빠른 참조 최대 5건)3
사본 productCode복사 일시BOM 상태
DHS-AE225-D-1-COPY-A2026-04-12 14:02DRAFT
DHS-AE225-D-1-COPY-B2026-04-25 09:31RELEASED
4전체보기5+ 제품 복사
[+ 제품 복사] → SCR-PM-018 복사 모달 / [전체보기] → SCR-PM-010 (?copiedFrom={id}) 사본 목록.
SCR-PM-017 파생제품 등록 / 조회 DEPRECATED · R12 /products/:productCode/derivatives

(폐기) Variant BOM 패턴 — 파생제품 등록/조회. 히스토리 보존용이며 신규 구현은 SCR-PM-018 제품 복사로 대체.

진입 — (이관 완료, 현재 진입 경로 없음) 구 진입 경로였던 SCR-PM-012 [파생제품] 탭 [전체보기] / SCR-PM-010 [파생만 보기] 토글 / 글로벌 검색 ⌘K 는 모두 SCR-PM-018 로 이관됐다. 본 화면은 히스토리 추적용으로만 남아 있다.

  1. DEPRECATED 경고 배너 — R12 폐기 안내와 대체 화면(SCR-PM-018) 링크. 히스토리 추적용으로만 남아 있다.
  2. 기본제품 표시 · 변경 — 현재 파생의 기준이 되는 기본제품 정보와 [기본제품 변경] 버튼.
  3. + 파생제품 추가 버튼 — 신규 파생 등록(폐기 화면이라 신규 구현 대상 아님).
  4. 파생 목록 테이블 — 파생코드·파생종류·차이규칙수·BOM상태·제품상태.
관련 API Swagger UI ↗
  • N/A이 화면과 직접 연결되는 API 없음
제품관리  ›  제품 상세  ›  파생제품
CMD+K 검색
🔔3
1DEPRECATED (R12 v1.7-r1) — Variant BOM 패턴 폐기. 대체 화면: SCR-PM-018 제품 복사. 본 화면은 히스토리 추적용으로만 보존.
2기본제품 · 파생 추가
기본제품:DHS-AE225-D-1 (미서기/마스/단창)기본제품 변경
3+ 파생제품 추가
4파생 목록
파생코드파생 종류차이 규칙 수BOM 상태제품 상태
DHS-AE225-D-1-1MM1MM2RELEASEDACTIVE
DHS-AE225-D-1-CTHCAP_TO_HIDDEN3DRAFTACTIVE
DHS-AE225-D-1-TEMPTEMPERED1DRAFTACTIVE
DHS-AE225-D-1-F43FIRE_43MM5DRAFTACTIVE
SCR-PM-018 제품 복사 · 입력 /products/:productCode/clone

원본을 완전 독립 제품으로 복제(6 도메인 일괄 트랜잭션) + 즉시 수정(overrides)·재분류. 모달 형태. 복사가 끝난 뒤 빠진 규칙이 있으면 복사 결과 안내 상태로 이어진다.

진입 — SCR-PM-012 [복사 이력] 탭 [+ 제품 복사] 클릭 / 글로벌 검색 ⌘K 제품 점프

다음 단계 — [복사 등록] 성공 → 만든 사본의 SCR-PM-012(자동 이동). 빠진 규칙이 있으면 그 사실을 먼저 알린다.

  1. 안내 alert — 사본은 원본과 완전히 독립되며 원본 변경/삭제가 전파되지 않는다는 설명.
  2. 기본 입력 — 원본 제품(잠금, 읽기전용)·신규 제품 코드(필수)·신규 제품명(필수)·설명.
  3. 휴지통 코드 되살리기 (#3982) — 신규 제품 코드가 휴지통 제품과 같으면 「동일 코드의 제품이 휴지통에 있습니다 ({이름}).」 옆에 [복원]. 확인 창은 등록 화면과 같고, 되살리면 그 제품 상세로 간다. [복사 등록]은 잠긴다.
  4. 복사 범위(자동) — PRODUCT·EBOM·MBOM·BOM_RULE(OPTION)·product_feature 5개 도메인은 자동 복제(✓)되고 OPTION_VALUE·BOM_VERSION 이력·partner_material·견적 참조는 승계되지 않는다(×).
  5. 즉시 수정 — 표준 규격 — 폭/높이/깊이/무게. 변경한 필드만 전송된다.
  6. 즉시 수정 — 분류 재분류 — L1~L4 분류. 이 모달이 재분류의 유일한 통로다.
  7. 복사 등록 버튼 — 6개 도메인 일괄 트랜잭션으로 클론 API를 호출한다. 응답에 bomRuleSkippedRows 가 1건 이상이면 이 모달을 대신해 복사 결과 안내 창이 열리고, 0건이면 성공 알림만 뜨고 사본 상세(SCR-PM-012)로 바로 옮겨 간다.
관련 API Swagger UI ↗
  • POST/api/pm/products/{productCode}/clone — 원본 제품 복제 + overrides 일괄 적용
SCR-PM-018 제품 복사 · 복사 결과 안내 (빠진 규칙) /products/:productCode/clone

복사가 끝난 뒤 사본에 걸릴 수 없어 빠진 옵션별 규칙을 알리는 딸림 창. 복사 응답의 bomRuleSkippedRows 가 1건 이상일 때만 입력 모달을 대신해 열린다. 빠진 것이 없으면 이 창은 뜨지 않는다 — 성공 알림만 뜨고 사본 상세(SCR-PM-012)로 바로 옮겨 간다.

진입 — SCR-PM-018 [복사 등록] 성공 응답에 빠진 규칙이 1건 이상일 때 자동 전환 (입력 모달을 대신한다 · 복사 자체는 이미 성공한 뒤다)

  1. 창 제목 — 「복사 완료 — 빠진 규칙 안내」. 복사가 이미 끝났다는 것을 제목이 먼저 알린다. 실패 안내가 아니다.
  2. 경고 알림(Toast) — 창이 열리기 직전 화면 오른쪽 위에 「복사 완료 — {복제 요약} — 규칙 N건이 빠졌습니다」 경고 알림이 뜬다. 복제 요약은 EBOM·MBOM·규칙·특성 가운데 1건 이상 복제된 것만 적는다. 빠진 것이 없을 때는 같은 자리에 「복사 완료 — {복제 요약}」 성공 알림만 뜬다(§00 R-ERR-ACTION-TOAST 계열).
  3. 건수 경고 띠 — 「복사는 완료되었으나, 사본에 걸릴 수 없는 규칙 N건을 빼고 베꼈습니다. 아래에서 빠진 사유를 확인하세요.」 N 은 응답 bomRuleSkippedRows 다.
  4. 사유 목록 — 응답 bomRuleSkippedReasons 를 서버가 보낸 글 그대로 한 줄에 하나씩 놓는다. 화면이 글을 다시 짓지 않는다. 사유는 「{규칙 이름}: {문제}」 꼴이고, 규칙 이름이 비어 있으면 「규칙 {번호}」로 적힌다. 규칙은 통째로 빠진다 — 지시문 한 자리만 걸릴 수 없어도 그 규칙 전체를 뺀다(DE24-1 §5.3.6.1).
  5. 목록 스크롤 — 사유가 여러 줄이면 목록 높이를 제한하고 그 안에서 굴려 본다(구현 max-h-64 ≒ 256px). 창 전체는 늘어나지 않고 제목·경고 띠·[확인]은 늘 보인다.
  6. 확인 버튼 — 누르면 사본 상세(SCR-PM-012)로 옮겨 간다. 창을 그냥 닫아도(× · 바깥 클릭) 같은 자리로 옮겨 간다 — 복사는 이미 성공했으므로 사용자가 사본을 볼 수 있어야 한다. [취소]에 해당하는 단추는 두지 않는다.
관련 API Swagger UI ↗
  • POST/api/pm/products/{productCode}/clone — 응답 bomRuleSkippedRows(빠진 수)·bomRuleSkippedReasons(사유 글)가 이 창의 건수와 목록을 채운다 (DE24-1 §5.3.6.1)
  • GET/api/pm/products/{productCode} — [확인]·닫기 뒤 옮겨 가는 사본 상세(SCR-PM-012) 조회
SCR-PM-026 제품식별번호 관리 · 대응 탭 /procurement-models · /procurement-models/:modelCode

식별번호 마스터와 그 모델의 (제품, 격자) 대응 표를 고치는 유일한 자리(2026-10-14 신설, #3105 · ⏳ 화면 반영 전). 공정 관리(SCR-PM-007)처럼 왼쪽 목록 + 오른쪽 상세 패널([기본정보]·[대응]) 한 화면이다. 서버 계약 IF-PM-PCM-001 은 이미 있다.

진입 — 사이드바 [제품관리] › 2차 메뉴 「제품식별번호 관리」 / SCR-PM-012 [기본정보] 「식별번호 · 제품식별번호」 줄의 모델명 링크 → 그 모델 상세(대응이 없으면 [제품식별번호 관리 열기] → 목록) / SCR-ES-016 식별번호 단가 표가 비었을 때 [제품식별번호 관리 열기] → 목록 / SCR-ES-009 합계 패널 「대응 없는 라인」 안내 [제품식별번호 관리 열기] → 목록. 세 링크는 PM 조회자 이상에게만 보인다.

다음 단계 — 다른 모델 행을 고르면 오른쪽 패널만 바뀐다. 저장하지 않은 대응이 있으면 먼저 확인 창.

  1. 대응 표 — 이 모델의 대응 줄. 대응은 이 화면에서만 고친다 — 서버가 모델 하나의 대응을 통째로 바꾸기 때문이다(PUT …/maps, 빈 배열이면 전부 지움). 제품 상세는 읽기 전용이다.
  2. 저장 — 줄을 더하고 빼는 것은 화면에만 들고 있다가 [저장] 한 번에 전체를 보낸다. 저장 전에 다른 모델을 고르거나 떠나면 「저장하지 않은 대응이 있습니다. 나가면 바꾼 내용이 사라집니다.」 확인 창.
  3. 갈래 고르개 — 갈래 넷 가운데 하나를 먼저 고르고 필요한 칸만 연다: 제품 몸체·모든 격자(제품) / 제품 몸체·한 격자(제품·격자) / 모듈·모든 제품(모듈) / 모듈·한 제품(제품·모듈). 제품도 모듈도 없으면 서버가 400 PROCUREMENT_MODEL_MAP_INVALID.
  4. 겹침 미리 알림 — 「제품 몸체」 갈래에서 제품을 고르면 제품 기준 조회(#2401)로 다른 모델이 같은 대응을 가졌는지 보고 「이 제품(과 격자)은 이미 {모델명}에 대응돼 있습니다.」를 보이며 [+ 대응 추가]를 막는다. 서버 409 MAP_DUPLICATE 는 어느 모델인지 주지 않는다. 모듈 갈래는 서버 409 에 맡긴다 — 「다른 식별번호가 이미 같은 대응을 갖고 있습니다.」
  5. 권한 — 조회 PM 조회자 이상 · 편집 PM 편집자 이상(서버 /api/pm 공통 규칙 그대로). 편집 권한이 없으면 [+ 식별번호 등록]·[저장]·[삭제]·[+ 대응 추가]·[빼기]를 감춘다.
  6. 삭제 — 409 PROCUREMENT_MODEL_IN_USE 이면 「대응이나 견적 단가 표가 이 모델을 쓰고 있어 지울 수 없습니다. 먼저 [대응] 탭의 줄을 모두 빼고 저장하세요.」
  7. 등록 — 모델명은 등록할 때만 입력하고 그 뒤로는 바꿀 수 없다([기본정보] 탭에 「수정 불가」 배지). 같은 코드면 409 CODE_DUPLICATE.
관련 API Swagger UI ↗
  • GET/api/pm/procurement-models — 식별번호 목록 (DE24-1 §5.3.17)
  • POST/api/pm/procurement-models — 식별번호 등록
  • GET/api/pm/procurement-models/{modelCode} · PUT 같은 주소 — 단건 · [기본정보] 수정(모델명은 못 바꿈)
  • DELETE/api/pm/procurement-models/{modelCode} — soft delete, 쓰이면 409 IN_USE
  • GET/api/pm/procurement-models/{modelCode}/maps — 이 모델의 대응 목록
  • PUT/api/pm/procurement-models/{modelCode}/maps — 대응 전체 교체(replace-all)
  • GET/api/pm/products/{productCode}/procurement-models — 제품 기준 조회(몸체 대응만) — 겹침 미리 알림 (#2401)
  • GET/api/pm/products — 제품 고르개 (격자는 그 제품의 OPT-LAY 옵션값, 모듈은 모듈 조립품 자재)
제품관리  ›  제품식별번호 관리
CMD+K 검색
🔔3
제품식별번호 관리7+ 식별번호 등록
모델명 / 품명 / 제품식별번호 검색
모델명품명제품식별번호단위대응 수
PCM-AE225-11AE225 이중창 1×125304780Kg1
PCM-AE225-22AE225 이중창 2×225304781Kg2
PCM-SCR-01방충망 모듈미등재Kg1
‹1 / 1›
PCM-AE225-22 AE225 이중창 2×26삭제× 닫기
기본정보대응 (2)
대응은 이 화면에서만 고칩니다. 줄을 더하고 뺀 뒤 [저장]을 누르면 이 모델의 대응 전체가 바뀝니다.
1대응 표
갈래제품격자모듈
제품 몸체 · 한 격자DHS-AE225-U2×2—빼기
제품 몸체 · 한 격자DHS-AE225-D-12×2—빼기
3대응 줄 넣기
제품 몸체 · 한 격자
DHS-AE225-U1×1+ 대응 추가
4이 제품(과 격자)은 이미 PCM-AE225-11 에 대응돼 있습니다.

되돌리기2저장
5편집 버튼은 PM 편집자 이상에게만 보인다.
SCR-PM-026 제품식별번호 관리 · 기본정보 탭 (기본 정보 · 인증현황) /procurement-models/:modelCode

이전 시스템 식별번호 상세처럼 식별번호 한 건의 기본 정보 · 계약단가 · 인증현황을 한 탭에서 관리한다(2026-10-22 #3845 · ⏳ 서버 반영 전 · ⏳ 화면 반영 전). 칸 정의는 DE33-1 §3.X procurement_model 「#3845 결정」, 계약은 DE24-1 §5.3.17 「#3845 결정」이다. 그림 값은 사용자가 보낸 이전 시스템 캡처(식별번호 22685422)다.

진입 — SCR-PM-026 목록에서 식별번호 행을 고르면 오른쪽 패널이 열리고 [기본정보] 탭이 먼저 보인다. [+ 식별번호 등록] 창도 같은 두 묶음의 칸을 받는다.

다음 단계 — [저장] 하면 같은 패널에 남는다. [대응] 탭으로 옮겨 제품(과 격자)을 잇는다.

  1. 기본 정보 묶음 — 제품식별번호 · 모델명 · 품명 · 견적 정렬 순번 · 평가등급 · 계약단가 · 형태 · 재질 · 규격 · 유리 · 유리사양 · 인증 유효 기간 · 인증기한 없음 · 단위 · 비고. 붉은 별은 필수다. 제품식별번호와 모델명은 등록 뒤 「수정 불가」다(임시 번호 TMP- 만 한 번 고친다). 평가등급 · 형태 · 재질은 공통코드(PROC_GRADE · PROC_FORM · PROC_MATERIAL)에서 고른다.
  2. 견적 정렬 순번 — 0~999999 정수. 작을수록 견적서 식별번호 줄 앞에 선다. 비우면 「정하지 않음」이고 지금 차례 뒤에 선다.
  3. 계약단가 — 원/kg, 부가세 포함. 견적 식별번호별 견적 표(SCR-ES-016) 단가의 처음 값이 된다. 이미 저장한 견적 단가는 바뀌지 않는다.
  4. 인증 유효 기간 — 「인증기한 없음」을 켜면 두 날짜 칸을 비우고 잠근다(날짜는 null 로 보낸다, #3853). 꺼져 있고 종료일이 지나면 「기한 지남」 표시(응답 certExpired). 견적은 막지 않고 알리기만 한다.
  5. 인증현황 묶음 — 열관류율 · 기밀성 숫자 둘과 조달청 인증 일곱(공통코드 PROC_CERT, 여러 개 체크). [저장] 한 번에 기본 정보와 함께 간다.
관련 API Swagger UI ↗
  • GET/api/pm/procurement-models/{modelCode} · PUT 같은 주소 — 단건 · [기본정보] 수정. 새 칸은 키를 보내지 않으면 그대로 둔다(#3845)
  • POST/api/pm/procurement-models — 등록(제품식별번호 · 평가등급 · 계약단가 · 형태 · 재질 · 인증 유효 기간 필수, #3845)
  • GET/api/cm/codes?categoryCode=PROC_GRADE · PROC_FORM · PROC_MATERIAL · PROC_CERT — 고르는 칸의 목록
제품관리  ›  제품식별번호 관리
CMD+K 검색
🔔3
제품식별번호 관리+ 식별번호 등록
모델명 / 품명 / 제품식별번호 검색
제품식별번호모델명품명계약단가인증 기한대응 수
22685422UNI-NAC225-A225mm, 단열복합미서기이중창14,300기한 없음1
25039678U-P-SM225-A225mm, 단열미서기이중창16,800기한 지남1
TMP-13EDU-SC-1[교육] 15mm, 방충망——0
UNI-NAC225-A 225mm, 단열복합미서기이중창삭제× 닫기
기본정보대응 (1)
8기본 정보
제품식별번호22685422수정 불가
모델명UNI-NAC225-A수정 불가
품명225mm, 단열복합미서기이중창
9견적 정렬 순번정하지 않음
평가등급2등급
10계약단가14,300원/kg · 부가세 포함
형태미서기A재질복합
규격225유리24
유리사양24(5LE+14Ar+5CL)
11인증 유효 기간—~—☑ 인증기한 없음
단위Kg
비고
12인증현황
열관류율0.962W/㎡·K기밀성0.33㎥/h·㎡
조달청 인증 ☑ 우수 제품☐ 녹색 기술☑ G-PASS☑ 에너지 1등급 ☑ KS☑ 특허☑ 환경표지 인증

되돌리기저장
SCR-PM-023 옵션별규칙 시뮬레이터 (경로 미확정) Figma: node 1333:7949

Figma 기준: 규칙을 실제 자재 구성표에 반영하기 전에 결과와 적용 규칙을 확인하는 독립 화면. 제목 우측 [초기화]·[시뮬레이션 실행], SCR-PM-012 시뮬레이터 탭과 동일한 3-패널 + 헤더 정보 바이나 좌측 패널 하단에 [옵션 조건 다시 불러오기]/[실행] 버튼을 추가로 둔다. (제품 상세 [시뮬레이터] 탭 진입 — SCR-PM-012)

  1. 제목 액션 — [초기화]·[시뮬레이션 실행] 버튼이 제목 우측에 고정된다. 좌측 패널 하단의 [옵션 조건 다시 불러오기]/[실행]과 역할이 겹쳐 보이므로, 제목 버튼 = 화면 전체 재설정·재계산 / 패널 버튼 = 옵션 입력값만 초기화·재계산으로 구분한다.
  2. 안내 칩 — 규칙을 실제 자재 구성표에 반영하기 전에 결과와 적용 규칙을 확인하는 화면이라는 설명.
  3. 헤더 정보 바 — 제품코드·평가 시간·적용 규칙 수 셋을 표시한다. 캐시 배지는 감춘다 — 서버가 cacheHit 를 늘 거짓으로 보낸다(#3759 결정). 규칙 엔진 판(rule_engine_version)은 싣지 않는다 — 시뮬레이터 응답에 그 칸이 없어 정본이 비채택했다(#1330 결정, 2026-08-21).
  4. 옵션 입력 패널 — 그 제품이 쓰는 ENUM 옵션 그룹과 W/H/W1/H1(조건부 활성) NUMERIC 치수를 입력하고 하단 [옵션 조건 다시 불러오기]/[실행]으로 재계산한다. 옵션 칸은 이 제품 옵션구성이 고른 그룹만 펼친다(#3578 결정, 2026-10-19) — 서버가 거른 「이 제품이 쓰는 그룹」(#2504, productCode 조회) 가운데 그 제품 옵션구성이 실제로 고른 그룹만 남긴다. 화면이 옵션구성 목록과 구성 상세의 options[].groupCode 를 모아 좁히고 서버는 고치지 않는다. 그 칸의 값도 그 제품 옵션구성이 그 그룹에서 고른 값만 보인다(#4049 결정, 2026-10-27) — 옵션 마스터 값 가운데 옵션구성(작성 중 포함)이 고른 값의 합집합만 남기고, 구성 상세의 options[].valueCode 로 좁힌다. 잠긴 값(#1088)·막힌 값(disabledValues)은 좁힌 목록 안에서 지금처럼 잠그고, 기본값은 좁힌 목록 안에서만 채운다. 옵션 입력 제목 아래에 「값은 이 제품 옵션구성이 고른 것만 보입니다. 다른 값을 시험하려면 [옵션구성 목록] 서브탭에서 그 값을 고른 옵션구성을 먼저 만들어 주세요.」 한 줄을 둔다(⏳ 화면 반영 전). (경위 — #3578 은 값을 옵션 마스터 값 전부로 두었다.) 옵션별 규칙만 쓰고 어떤 옵션구성도 고르지 않은 그룹은 칸을 세우지 않고 안내 상자에 이름을 적는다(그림 아래 상자 — 개발 서버 DHS-AE225-U 의 고정 열 OPT-FIX-COL). 보이는 그룹이 하나도 없으면 드롭다운 자리에 「이 제품 옵션구성에 담긴 옵션이 없습니다. 치수만 넣어 평가해 볼 수 있습니다. 옵션을 넣어 평가하려면 [옵션구성 목록] 서브탭에서 옵션구성을 먼저 만들어 주세요.」를 보이고 치수 칸은 그대로 둔다. 고정 단 경고도 이 좁힌 목록을 쓴다. 그림은 DHS-AE225-U 의 그룹 가운데 다섯을 그렸다. 정본 표시: ⏳ 화면 반영 전(wims2.0_fe PR #1291). (경위 — #2504 는 규칙이 참조하는 그룹을 그대로 보였고, 빈 안내는 「규칙을 먼저 만들라」였다.) 부재 수 원장이 없는 격자 여섯(3×3·4×3·1×4·2×4·3×4·4×4)은 이 화면에서도 고를 수 없게 잠근다(#1088 결정) — 감추지 않고 잠근 채로 두며 「(아직 자료가 없어 고를 수 없습니다)」를 함께 보인다. 기본값을 미리 채울 때도 잠긴 값은 채우지 않는다 — 기본값과 고를 수 있는지는 서로 다른 물음이라, 잠긴 값이 기본값으로 들어오면 아무도 고르지 않았는데 잠긴 격자가 골라진 채로 화면이 열린다. 옵션구성 목록(SCR-PM-013B)과 같은 방식이고 어느 값이 잠기는지는 같은 조회 응답의 selectable 을 그대로 읽는다. 화면 반영은 #1132 가 2026-08-18 에 끝냈다(simulator-option-form.tsx 151·175·179~181줄, wims2.0_fe 56a7809).
  5. 결과 미리보기 패널 — 추가/변경/삭제 배지와 품목·수량·절단실치수·상태 테이블. 정본 목표는 계층 트리이나 현재는 flat 목록(잠정, R-SIM-PREVIEW-TREE). 규칙이 더한 줄에 공정이 있으면 「규칙 #N」 옆에 회색 「공정 {이름}」을 보인다. 엑셀에는 공정 칸을 더하지 않는다(#3536 결정, ⏳ 화면 반영 전).
  6. 적용/기각 규칙 패널 — 규칙코드별 적용/기각 카드와 [추적 상세 펼치기].
  7. 페이지네이션 — 적용/기각 규칙 카드 목록 하단, 페이지 이동.
  8. 규칙만 쓰는 그룹 안내 상자 — 화면을 열어 옵션 그룹·옵션구성 조회가 끝났을 때, 서버 그룹 목록에는 있으나 옵션구성에 없는 그룹이 있으면 옵션 입력 패널 아래에 이름을 적는다. 시험하려면 제품 상세 [옵션구성] 탭 › [옵션구성 목록] 서브탭에서 그 그룹을 고른 옵션구성을 먼저 만든다(#3578 결정 ② · ⏳ 화면 반영 전).
  9. 참고 이미지 — 고르개에 골라진 옵션구성에 그림(imageUrl)이 있으면 「옵션 입력」 안내 한 줄 아래, 옵션 칸 위에 보인다. 높이 240px 이하, 누르면 크게 본다. 그림이 없거나 맞는 옵션구성이 없으면 자리째 그리지 않는다. 그림은 [옵션구성 목록] 서브탭 [수정] 창 「참고 이미지」 칸에서 붙인다(#4107 결정 · ⏳ 서버 · 화면 반영 전).
관련 API Swagger UI ↗
  • POST/api/pm/products/{productCode}/rules/simulate — 시뮬레이션 실행
  • POST/api/pm/products/{productCode}/rules/simulate/export — 엑셀 다운로드(설계 도구 아이콘 없음, 결과 패널 하단에 있어야 함 · 규칙이 뺀 줄은 싣지 않음, #3695)
  • POST/api/pm/products/{productCode}/rules/estimate-overlay — 이 옵션구성으로 평가(옵션구성 평가, 저장하지 않음 · #3759)
  • GET/api/pm/options/groups?productCode={productCode} — 이 제품이 쓰는 옵션 그룹(서버 거름 #2504, 계약 그대로)
  • GET/api/pm/products/{productCode}/configs · …/configs/{configId} — 옵션구성 목록·상세의 options[].groupCode 로 보일 그룹을 좁힌다(#3578 · 서버 그대로)
제품관리  ›  제품 상세  ›  시뮬레이터
CMD+K 검색
🔔3
옵션별규칙 시뮬레이터1초기화시뮬레이션 실행
제목 우측 버튼 = 화면 전체 초기화·재계산 · 좌측 패널 하단 버튼 = 옵션 입력값만 초기화·재계산(역할 구분).
안내
2규칙을 실제 자재 구성표에 반영하기 전에 결과와 적용 규칙을 확인하는 화면입니다.
3DHS-AE225-D-1 평가 시간: 142 ms 적용 규칙: 4 / 12 v25 기준
4옵션 입력
🖼 참고 이미지 · {configCode} (고른 옵션구성에 그림이 있을 때만 · 누르면 크게)
설치 구성 · OPT-LAY3×2 (가로3모듈 세로2모듈)
절단 방식 · OPT-CUT45도 사선
중간띠 유무 · OPT-MID없음
고정창 유무 · OPT-FIX없음
프레임 두께 · OPT-THK1.35T
전체 폭 W (mm)3,200
전체 높이 H (mm)2,400
1편 가로 W1 (mm)500
1단 높이 H1 (mm)1,200
2단 높이 H2·3단 높이 H3 는 현재 설치 구성(OPT-LAY)에서 비활성 🚫. 비활성 칸에 마우스를 올리면 「이 치수 슬롯은 현재 설치 구성에서 비활성입니다」 툴팁이 뜬다(#850).
8옵션별 규칙이 쓰지만 이 제품 옵션구성에 없는 그룹은 보이지 않습니다: 고정 열(OPT-FIX-COL). 그 규칙을 시험하려면 [옵션구성 목록] 서브탭에서 그 그룹을 고른 옵션구성을 먼저 만들어 주세요.
보이는 그룹이 없을 때(다른 상태) — 드롭다운 자리에 「이 제품 옵션구성에 담긴 옵션이 없습니다. 치수만 넣어 평가해 볼 수 있습니다. 옵션을 넣어 평가하려면 [옵션구성 목록] 서브탭에서 옵션구성을 먼저 만들어 주세요.」 · 치수 칸은 그대로 (#3578 · ⏳ 화면 반영 전)
옵션 조건 다시 불러오기실행
5결과 미리보기
선택한 옵션 조합으로 자재 구성표가 어떻게 바뀌는지 미리 확인합니다.
추가 3변경 3삭제 1
품목수량절단 실치수상태
+ 프레임 상부 AL-FR-00111,800 mm추가
+ 보강재 UNI-A160-101-S 규칙 #301 공정 미서기 보강재 삽입23,200 mm추가
└ ~보강재 ST-RF-21011,764 mm변경
+ 하부 레일 AL-RA-1201평가값 1,798 mm추가
└ 유리 GL-24T-CLEAR2⚠ 미평가확인 필요
- 기본 손잡이 HD-SV-0011없음삭제
6적용/기각 규칙
왜 적용됐는지와 왜 빠졌는지를 함께 보여줍니다.
적용 4기각 2
R-AL-FRAME-WIDTH적용
조건: 창 폭 W가 1,500 mm 이상입니다.동작: 상부 프레임을 추가하고 길이를 W 기준으로 계산합니다.
R-HANDLE-BLACK적용
조건: 손잡이 옵션이 블랙 매립형입니다.동작: 기본 손잡이를 제외하고 블랙 손잡이를 추가합니다.
R-MID-BAND-ADD기각
기각 이유: 중간띠 유무가 「있음」이 아닙니다.사용자가 선택한 값은 「없음」입니다.동작 정보는 저장용 원본 규칙값과 함께 유지됩니다.
7‹1 / 2›
추적 상세 펼치기