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

로우파이 웹 와이어프레임 · 근거: DE22-1 §04 제품관리 명세(정본) + Figma 시안 fileKey xFn4Tq2vnfAr42PpuxLbbP · 12 프레임 (8화면 시안 참고 재작성 · SCR-PM-012 는 6탭 · SCR-PM-018 은 입력·결과 안내 2상태)
← 와이어프레임 목록
SCR-PM-010 제품 목록 /products Figma: node 631:6750

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

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

  1. + 제품 등록 버튼 — 우측 상단 고정. 클릭 시 SCR-PM-011 빈 등록 폼으로 이동한다.
  2. 검색 바 — 코드·제품명·modelCode 부분일치 검색. [검색] 클릭 시 목록 조회 파라미터로 전달된다.
  3. 분류 필터(드롭다운 6종) — 형식·등급·형태·치수 4종과 상태·재질 2종을 겹쳐 적용한다. [↺ 초기화]로 전체 리셋.
  4. 복사된 제품만 보기 토글 — ON 시 copiedFrom 값이 있는 사본 제품만 남긴다.
  5. 목록 테이블 — 제품코드·제품명·분류경로·복사lineage·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 검색
제품 목록1+ 제품 등록
2검색 바
코드/제품명/modelCode 검색 검색
3분류 필터 (드롭다운) ↺ 초기화
형식전체
등급전체
형태전체
치수전체

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

4복사된 제품만 보기
5목록 테이블
제품코드제품명분류 경로복사 lineageBOM 상태수정일액션
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삭제
61 / 2
빈 상태 변형: 테이블 본문에 안내 문구 + [등록] 버튼 (Figma "필터 없음" 변형).
SCR-PM-011 제품 등록 /products/new

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

진입 — SCR-PM-010 [+ 제품 등록] 버튼 클릭

  1. 제품 코드 생성(세그먼트 입력) — 브랜드·계열·유리타입·리비전 4개 드롭다운을 조합해 modelCode 실시간 미리보기와 productClassPath 미리보기를 함께 보여준다. modelCode 조립 후 debounce 300ms 로 중복을 검증해 ✅ 사용가능 / ❌ 활성 중복(기존 제품 링크) / ♻️ 휴지통 중복(복원 안내 + [복원] 버튼) 3상태로 안내한다(R-PRD-TRASH-RESTORE). 저장 전 중복 검증 전용 API가 카탈로그에 없다.
  2. 분류 정보 — L1 형식·L2 등급·L3 형태(필수)·L4 치수크기(선택 프리셋)·재질·단열여부(라디오)를 입력한다.
  3. 기본 정보 — 제품명(필수) 텍스트 입력. 그 아래에 조달청 물품목록번호 입력칸을 둔다(선택 입력, #908). 조달청 물품목록에 등재된 제품만 값을 갖고, 대부분은 비워 둔 채 등록한다. 비어 있는 것이 정상 상태라 배지·경고를 붙이지 않고 안내 문구만 보인다. 등재가 제품 등록보다 늦는 것이 보통이라 나중에 SCR-PM-012 상세에서 채워 넣을 수 있다. 자릿수·숫자만 쓰는지가 아직 확정되지 않아 화면에서 형식을 강제하지 않고 길이만 64자로 막는다. 안내 문구는 「미등록 시 비워 두세요」 한 가지다(#1229 결정, 2026-08-18). 등록·상세 두 화면이 같은 문구를 쓰고 정본도 그것으로 맞췄다 — 근거는 product-register-page.tsx 526줄과 product-basic-info-tab.tsx 463줄이다(origin/dev 0dca9500). 그 아래에 편창 칸 수 고르개를 둔다(선택 입력, #1617). 형식(L1)이 미서기일 때만 보인다 — 커튼월은 멀리언·트랜섬 구조라 편창 축이 아예 없어, 늘 보이면 채울 수 없는 칸을 내미는 셈이 된다. 고르는 값은 2편창·3편창 둘뿐이고 「선택 안 함」이 기본이다. 비워 두는 것이 정상이라 배지·경고를 붙이지 않는다 — 빈 값은 「모른다」라는 뜻이다. 확인하지 않은 제품에 임의로 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 검색
1제품 코드 생성 (세그먼트 입력)
브랜드DHS 계열AE225 유리타입D 리비전1
→ 생성 미리보기: DHS-AE225-D-1
→ productClassPath: 미서기 › 마스 › 단창
✅ 사용 가능modelCode 중복 검증(debounce 300ms) — ❌ 활성 중복 시 기존 제품 상세(SCR-PM-012) 링크 안내 / ♻️ 휴지통 중복 시 [복원] 액션 버튼으로 전환.

2분류 정보
L1 형식미서기
L2 등급마스
L3 형태단창
L4 치수크기 (선택)프리셋 선택
재질AL
단열 여부◉ 단열○ 비단열

3기본 정보
제품명미서기 이중창
조달청 물품목록번호미등록 시 비워 두세요
편창 칸 수선택 안 함형식이 미서기일 때만 보인다

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

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

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

  1. 상세 탭 바 — 기본정보·자재/공정구성·옵션구성·시뮬레이터·버전이력·복사 lineage 6탭 전환. 현재 [기본정보] 활성.
  2. 제품 코드 — mono 서체로 읽기전용 표시.
  3. 읽기전용 필드 그룹 — 분류경로·분류 네 칸·BOM상태·표준규격·표준무게·색상마감재·제품특성·설명은 모두 조회 전용이다. BOM상태는 표준 자재 구성표(BOM)가 없는 제품에 「미설정」으로 보인다.
  4. 제품명 — 편집 가능한 세 필드 중 하나(#390 확정, #908 이 조달청 물품목록번호를 더해 셋이 됐다).
  5. 대표 이미지 업로드 — JPG/PNG 5MB, [업로드하기] 버튼. 제품명·조달청 물품목록번호와 함께 편집 가능한 필드다.
  6. 하단 버튼 행 — [카탈로그 내보내기][판매 중단][삭제][취소][저장]. [삭제]는 3단계 게이트(영향확인→영향안내→최종확인(입력)→삭제완료) 흐름으로 진입한다.
  7. 분류 네 칸 — 분류 경로 바로 아래에 형식(L1)·등급(L2)·형태(L3)·치수(L4) 네 칸을 읽기 전용으로 둔다. 값이 없는 축은 - 로 보인다. 분류 경로는 값이 있는 축만 골라 이어 붙이므로 빈 축이 자리를 남기지 않는다 — 어느 축이 비었는지는 이 네 칸에서만 알 수 있다(#1144 결정).
  8. 조달청 물품목록번호편집 가능하고 [저장] 대상이다(#908). 조달청 물품목록 등재가 제품 등록보다 늦는 것이 보통이라 이 화면에서 나중에 채워 넣는다. 값이 없으면 빈 입력칸에 안내 문구만 보이고 배지·경고를 붙이지 않는다 — 비어 있는 것이 정상 상태이기 때문이다. 안내 문구는 「미등록 시 비워 두세요」 한 가지다(#1229 결정, 2026-08-18). 등록 화면과 같은 문구이고 정본도 그것으로 맞췄다 — 근거는 product-basic-info-tab.tsx 463줄이다(origin/dev 0dca9500). 칸을 비우고 [저장] 하면 지워진다. 자릿수·숫자만 쓰는지가 아직 확정되지 않아 화면에서 형식을 강제하지 않고 길이만 64자로 막는다.
  9. 편창 칸 수편집 가능하고 [저장] 대상이다(#1617). 형식(L1)이 미서기일 때만 보인다. 값이 제품보다 늦게 확인되는 일이 잦아 이 화면에서 나중에 채워 넣는다. 값이 없으면 「선택 안 함」으로 보이고 배지·경고를 붙이지 않는다 — 비어 있는 것이 흠이 아니라 「모른다」라는 정상 상태이기 때문이다. 고르는 값은 2편창·3편창 둘뿐이다. 지우는 길이 없다 — 조달 번호와 다른 자리다. 한 번 넣은 값은 지울 수 없고 2↔3 으로 바꿀 수만 있다(서버가 값을 안 보내면 기존 값을 그대로 두고, 숫자 칸이라 「빈 글자로 지운다」 규약을 못 쓴다 — DE24-1 §5.3.4 leafCount). 값이 이미 있는 제품에서 「선택 안 함」을 고를 수 있게 두면 비웠는데 값이 남는 것을 사용자가 겪는다.
  10. 상태 배지 — 제품 상태(ACTIVE/DISCONTINUED)를 「활성」·「단종」으로 보인다(#937 as-built). 읽기 전용이고 [저장] 대상이 아니다 — 상태를 바꾸는 것은 아래 [판매 중단]/[판매 재개] 전용 단추다. 휴지통(soft delete)과 다르다.
  11. 판매 중단 / 판매 재개 — 제품 상태 전이 전용 단추다. 현재 상태에 따라 라벨이 [판매 중단]↔[판매 재개]로 바뀐다(양방향 토글). 클릭하면 확인 뒤 PATCH /api/pm/products/{productCode}/status(IF-PM-PRD-003)를 부른다 — [저장]이 부르는 PUT 과 다른 주소다(#482 A안). 「판매 중단」은 행을 지우지 않고 조회 가능한 상태로만 바꾼다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode} — 제품 상세 조회
  • 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 검색
제품 상세
1기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 lineage
기본정보
2제품 코드DHS-AE225-D-1
3분류 경로미서기 › 마스 › 단창
7형식 (L1)미서기
등급 (L2)마스
형태 (L3)단창
치수 (L4)-
BOM상태미설정
9상태활성
4제품명미서기 이중창
8조달청 물품목록번호25304780
11편창 칸 수2편창
표준 규격W1800 × H2100 × D100 mm
표준 무게45.0 kg
색상·마감재옵션구성 탭에서 관리
제품 특성복층유리
설명미서기 이중창 표준 사양 …
5대표 이미지
JPG/PNG 5MB대표 이미지를 업로드합니다.업로드하기
6하단 버튼 (단일 행, 우측 정렬)
카탈로그 내보내기10판매 중단삭제취소저장
[삭제] → 3단계 삭제 확인 팝업 (Figma 변형: 영향 확인 → 영향 안내 → 최종 확인(입력) → 삭제 완료). [판매 중단] → 확인 뒤 PATCH .../status 로 상태만 바꾼다(라벨은 현재 상태에 따라 [판매 재개]로 뒤집힌다).
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 [복사 lineage] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [자재/공정구성] 탭 전환 / SCR-PM-003 [BOM 사용처] 탭 행 클릭(직접 진입)

  1. EBOM/MBOM 서브탭 — 자재구성(EBOM)·공정구성(MBOM) 전환. MBOM 전환 시 필터에 절단방향·공정·보기(자재중심/공정중심)가 추가되고 노드 상세에 공정코드·작업순서·작업장·작업 방식(사내·외주, #909)·lossRate·절단산식이 노출된다.
  2. 필터(공급구분·자재분류) — 공통/외창/내창 공급구분과 PROFILE/GLASS 등 자재분류로 트리를 좁힌다.
  3. 좌측 자재 검색 팔레트 — 코드·품명 검색 결과를 트리로 드래그하면 선택 노드의 자식으로 추가된다.
  4. 가운데 BOM 트리 — 품목 코드/품목명 검색, [전체펼침]/[전체접기]. ASSEMBLY 노드에만 자식을 허용하고 형제 순서가 의미를 가진다.
  5. 우측 선택 노드 상세 — 품목코드·품목명·유형·수량/단위·규격·대체부품을 표시한다. 자재분류는 자재(MATERIAL) 노드에서만, 기능군은 자재구성(EBOM) 의 L2 조립체에서만 줄이 생긴다 — 값이 없는 칸은 '—' 로 자리를 남기지 않고 줄째로 감춘다(#762, DE22-1 §05 「노드 유형별 표시 규칙」). 그리고 [자식 노드 추가]/[트리에서 빼기] 버튼을 제공한다. [트리에서 빼기]는 이 BOM 트리에서 노드 한 개를 떼는 동작이며 품목 마스터는 남는다 — 조립체 품목 자체를 지우는 동작(팔레트 조립체 행 ⋯ 메뉴)과 다르다(#734).
  6. 하단 액션 — [BOM 전개 검산]/[BOM 비교]/[버전 저장]. 저장 시 새 BOM 버전이 생성된다. [BOM 전개 검산]은 트리의 모든 가지가 원자재까지 이어졌는지 확인하는 자리다 — 발주·견적에 쓸 수량이 아니다(#686).
  7. BOM 미등록 변형 — 트리 영역 중앙에 [+ 첫 노드 추가 (L1 완제품)] 버튼으로 신규 BOM을 시작한다.
관련 API Swagger UI ↗
  • GET/api/pm/products/{productCode}/bom — EBOM/MBOM 트리 조회
  • PUT/api/pm/products/{productCode}/bom — 노드 추가/삭제/이동 등 트리 편집 저장(버전 저장)
  • GET/api/pm/products/{productCode}/bom/export — BOM 내보내기
  • 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 검색
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 lineage
자재/공정구성 · BOM 트리뷰
DHS-AE225-D-1 v3 (배포) 총 자재 47 Figma: node 665:3342 Figma: node 672:4203
1자재구성(EBOM)공정구성(MBOM)
2공급구분공통 / 외창 / 내창 자재분류PROFILE / GLASS / …
MBOM 전환 시 필터에 절단방향·공정·보기(자재중심/공정중심)가 추가되고, 우측 노드 상세에 공정코드·작업순서·작업장·작업 방식(사내·외주, #909)·lossRate·절단산식이 함께 표시됩니다.
3자재 검색
자재 코드 / 품명 검색
ASY-FRM 창틀 조립체
ASY-SSH 창짝 조립체
MAT-GLS 복층유리
검색 결과를 트리로 드래그 → 자식 추가
4선택 검색 · BOM 트리
품목 코드 / 품목명 검색전체펼침전체접기
▽ 미서기 이중창 L1ASSEMBLY
▽ └ 구조부 (E-STR) L2ASSEMBLY
└ 상틀 프로파일 L3MATERIAL
└ 하틀 프로파일 L3MATERIAL
▽ └ 유리부 (E-GLZ) L2ASSEMBLY
└ 복층유리 L3MATERIAL
▽ └ 개폐부 (E-HDW) L2ASSEMBLY
▽ └ 밀봉부 (E-SEL) L2ASSEMBLY
▽ └ 방충부 (E-SCR) L2ASSEMBLY
드롭 = 대상 노드 자식 추가 · ASSEMBLY 노드에만 자식 허용 · 형제 순서 = 의미 · 우측 배지 = 유형(ASSEMBLY/MATERIAL)
자재구성(EBOM) L2 = 기능군 5종(구조부·유리부·개폐부·밀봉부·방충부). 공정구성(MBOM) 으로 바꾸면 L2 가 조립체(ASY-FRM·ASY-SSH 등)로 바뀐다.
5선택 노드 상세
품목 코드미서기 이중창 (L1)
품목명미서기 이중창
유형ASSEMBLY
수량 / 단위1 / EA
규격 (W×H×D)
대체 부품
지금 고른 것은 L1 완제품이라 자재분류·기능군 줄이 없다. 자재분류는 자재(MATERIAL) 노드에서만, 기능군은 자재구성(EBOM) 의 L2 조립체에서만 나온다. 값이 없는 칸은 '—' 로 남기지 않고 줄째로 감춘다.
MBOM 모드에서 추가되는 필드 — 공정코드 · 작업순서 · 작업장 · 작업 방식 · lossRate · 절단산식. 「작업 방식」은 사내 (공정 기본값 따름) 처럼 풀어낸 값을 보이고, 인라인 select 로 직접 고른다. 한 번에 보이는 갈래는 셋이다 — 사내 / 외주 / 빈 자리 하나이며, 빈 자리의 이름은 그 노드에 풀어낸 값이 있으면 「공정 기본값 따름」, 없으면 「미정」이다(둘은 같은 자리의 다른 표기라 함께 뜨지 않는다). 값이 노드에 없으면 풀어낸 값 옆에 「(공정 기본값 따름)」을 회색으로 붙인다(R-BOM-EXEC-TYPE, #909·#1157).
자식 노드 추가트리에서 빼기
6BOM 전개 검산BOM 비교버전 저장
7BOM 미등록 변형: 트리 영역 중앙에 안내 문구 + [+ 첫 노드 추가 (L1 완제품)] 버튼 (Figma "BOM 없음" 변형). 버전 이력(v1~v3)은 [버전이력] 탭에서 관리합니다.
SCR-PM-012 제품 상세 · [옵션구성] 탭 /products/:productCode Figma: node 1730:11489

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

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

  1. 초보 모드 토글 — ON 시 상단에 5단계 stepper가 노출되고 Wizard 진입 화면으로 전환된다.
  2. 서브탭 4종 — 옵션구성 목록/옵션그룹/옵션별규칙/확정구성표를 전환한다.
  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. ② 옵션그룹 — 표 두 개를 나란히 둔다. 왼쪽 그룹 목록 표(그룹 코드·그룹 이름·값 수·작업)에서 행을 클릭해 그룹을 고르면 오른쪽에 그 그룹의 값 목록 표(값 코드·값 이름·설명·타입·범위·기본·작업)가 나온다. 그룹 자체의 속성(ValueType·단위·min/max·설명·활성화 조건식)은 [+ 그룹 추가]·[수정] 이 여는 모달에서 고친다(#797 결정). 활성화 조건식은 ROLE_PM_ADMIN 전용이고 RANGE는 Phase 1 비활성이다.
  5. ③ 옵션별규칙 — 템플릿 갤러리(SCR-PM-021)·결정표(SCR-PM-022)·전문가 모드(SCR-PM-024) 3뷰 진입 카드를 제공한다. 종전 [🔍 시뮬레이터 열기] 보조 버튼은 #278 결정으로 폐지됐다 — 시뮬레이터는 [시뮬레이터] 탭으로만 진입한다.
  6. ④ 확정구성표 — Phase 1·Phase 2 모두 비활성(disabled) 탭 + 안내 배너로 노출한다(R-FROZEN-TAB-DISABLED, #209). 정식 확정(freeze)은 SCR-ES-015 종속. 아래 표는 Phase 2 활성 시점의 참고 명세다.
  7. ⑤ Wizard(초보 모드) — 5단계 stepper(옵션값→옵션그룹→옵션별규칙→옵션구성→확정)로 현재 단계 콘텐츠를 인라인 노출한다. Phase 1 은 Expert 전용 빌드이며 [🎓 Wizard] 토글은 disabled + "Phase 2 제공" 툴팁(R-WIZARD-5STEP) — 아래는 Phase 2 예시다.
관련 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 — [+ 그룹 추가] 모달 저장
  • 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 — [값 추가]
  • PUT/api/pm/options/values/{valueId} — 옵션값 수정
  • 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)
제품 상세  ›  옵션구성
CMD+K 검색
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 lineage
옵션구성 관리
DHS-AE225-D-1 1초보 모드
2옵션구성 목록 옵션그룹 옵션별규칙 🔒 확정구성표
3① 옵션구성 목록 Figma: node 672:4204
+ 옵션구성 추가
구성 코드구성명활성 슬롯BOM 버전확정수정일작업
CFG-0011×1 (가로1모듈 세로1모듈) / 45° 마이터(연귀) / 기본유리 / PVC / 2코팅[W, H]v122026-07-28✏ 🗑
CFG-0022×1 (가로2모듈 세로1모듈) / 직각-가로우선 / 기본유리 / 알루미늄 / 무피[W, H, W1]v122026-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종)
4② 옵션그룹 (서브탭 미리보기) Figma: node 672:4206
⚠ 전역 옵션 마스터 — 이 화면의 변경 사항은 전 제품에 영향을 미칩니다. (항상 고정 노출)
옵션 그룹+ 그룹 추가
그룹 코드그룹 이름값 수작업
OPT-LAY설치 구성16✏ 🗑
OPT-FIN색상·표면처리6✏ 🗑
OPT-DIM치수 입력 (NUMERIC)7✏ 🗑
OPT-FIN 옵션 값값 추가
값 코드값 이름설명타입범위기본작업
2COAT2코팅2코팅ENUM✏ 🗑
3COAT3코팅3코팅ENUM✏ 🗑
MF무피무피ENUM✏ 🗑
분체도장분체도장파우더코팅 (색상 자유)ENUM✏ 🗑
불소도장불소도장고내후성 불소 도장ENUM✏ 🗑
아노다이징아노다이징양극산화 표면처리ENUM✏ 🗑
좌측 행을 클릭해 그룹을 고르면 우측에 그 그룹의 값 목록이 나온다. 그룹을 고르지 않았으면 우측은 "좌측에서 그룹을 선택하세요." 안내만 둔다. 편집 권한(ROLE_PM_EDITOR 이상)이 없으면 두 표의 [작업] 열과 [+ 그룹 추가]·[값 추가] 를 감춘다.
④-1 [옵션 그룹 상세] 모달 (추가·수정 공용) — 좌측 표의 [+ 그룹 추가]·[수정]
④-2 [옵션값 상세] 모달 (추가·수정 공용) — 우측 표의 [값 추가]·[수정]
그룹 자체의 속성은 표 안에서 고치지 않고 ④-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
6④ 확정구성표 — 비활성(disabled) 탭 Figma: node 672:4208 🔒 Phase 2 ES 연동 시점 활성
Phase 1·Phase 2 모두 본 서브탭은 비활성(disabled) 탭으로 둔다 — 클릭 불가, hover 시 "Phase 2 ES 연동 시점 활성 — 견적 라인 확정(freeze) 데이터는 Phase 2 에서 생성됩니다." 툴팁을 노출한다. 정식 확정(freeze)은 견적설계(ES) SCR-ES-015 구현에 종속된다(R-FROZEN-TAB-DISABLED, #209).
아래는 Phase 2 활성 시점의 read-only 조회 명세(참고) — Phase 1 화면에는 노출되지 않는다.
resolved_bom_keyfrozenfrozen_at견적 번호
RBOM-AE225-3E-sbv3-7a1c…-EL100422026-05-04 14:22EST-2026-0117 / L01
EST-2026-0124 / L01 (작성중)
freeze·발급·MES 전달은 견적 라인 진입 후 ES 화면에서 진행. [소요량 요약]·[BASE BOM 비교]·[PDF 내보내기] 버튼 제공(Phase 2 활성 시).
7⑤ Wizard (초보 모드) 5-step — Phase 2 빌드 이연 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건 — 충돌 해소 후 다음 단계 진행 가능. (Phase 2 예시)
SCR-PM-012 제품 상세 · [시뮬레이터] 탭 /products/:productCode Figma: node 1730:13691

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

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

  1. 안내 칩 — 옵션·치수 입력에 따른 BOM 미리보기와 규칙 적용 결과를 확인한다는 안내.
  2. 헤더 정보 바 — 제품코드·평가 시간·적용 규칙 수·캐시 상태 넷을 표시한다. 규칙 엔진 판(rule_engine_version)은 싣지 않는다 — 시뮬레이터 응답에 그 칸이 없어 정본이 비채택했다(#1330 결정, 2026-08-21).
  3. 옵션 입력 패널 — 설치 구성(OPT-LAY)·절단방향(OPT-CUT)·유리사양(OPT-GLZ)·재질(OPT-MAT)·색상(OPT-FIN) ENUM과 W/H/W1/H1(조건부 활성) NUMERIC 치수를 입력한다. 값 변경 시 결과 미리보기가 다시 계산된다.
  4. 결과 미리보기 패널 — 추가/변경/삭제 건수 배지와 품목·수량·절단 실치수·상태 테이블. 정본 목표는 구조부/유리부/방충부 계층 트리이나 현재 FE는 들여쓰기(└) flat 목록(잠정, R-SIM-PREVIEW-TREE)이다.
  5. 평가 결과 확인 버튼 — [평가 결과 확인 (ESTIMATE 평가)] 클릭 시 견적 라인 평가 미리보기 API를 호출한다.
  6. 적용/기각 규칙 패널 — 규칙코드·조건·동작(적용) 또는 기각 이유(기각)를 카드로 표시하고 [추적 상세 펼치기]로 근거를 확장한다.
관련 API Swagger UI ↗
  • POST/api/pm/products/{productCode}/rules/simulate — 옵션·치수 조합 시뮬레이션 실행(evaluate-only)
  • POST/api/pm/products/{productCode}/rules/simulate/export — 엑셀 다운로드
  • POST/api/es/estimate-lines/evaluate-preview — [평가 결과 확인 (ESTIMATE 평가)] 버튼 — 견적 라인 평가 미리보기
제품 상세  ›  시뮬레이터
CMD+K 검색
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 lineage
1옵션별규칙 시뮬레이터
옵션·치수 입력에 따른 BOM 미리보기와 규칙 적용 결과를 확인합니다.
2DHS-AE225-D-1 평가 시간: 142 ms 적용 규칙: 4 / 12 캐시 HIT (warm)
3옵션 입력
설치 구성 · OPT-LAY3×2 (가로3모듈 세로2모듈)
절단 방향 · OPT-CUT45° 마이터(연귀)
유리 사양 · OPT-GLZ24t복층
재질 · OPT-MAT알루미늄+PVC단열
색상 · OPT-FIN아노다이징
전체 폭 W (mm)3,200
전체 높이 H (mm)2,400
1편 가로 W1 (mm)500
1단 높이 H1 (mm)1,200
2단 높이 H2·3단 높이 H3 는 현재 설치 구성(OPT-LAY)에서 비활성 🚫. 비활성 칸에 마우스를 올리면 「이 치수 슬롯은 현재 설치 구성에서 비활성입니다」 툴팁이 뜬다(#850).
4결과 미리보기
선택한 옵션 조합으로 자재 구성표가 어떻게 바뀌는지 미리 확인합니다.
추가 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평가 결과 확인 (ESTIMATE 평가)
6적용/기각 규칙
왜 적용됐는지와 왜 빠졌는지를 함께 보여줍니다.
적용 4기각 2
R-AL-FRAME-WIDTH적용
조건: 창 폭 W가 1,500 mm 이상입니다.동작: 상부 프레임을 추가하고 길이를 W 기준으로 계산합니다.
R-HANDLE-BLACK적용
조건: 손잡이 옵션이 블랙 매립형입니다.동작: 기본 손잡이를 제외하고 블랙 손잡이를 추가합니다.
R-GLASS-LOWE-UPGRADE기각
기각 이유: 유리 사양이 로이유리가 아닙니다.사용자가 선택한 값은 24T 복층유리입니다.동작 정보는 저장용 원본 규칙값과 함께 유지됩니다.
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 [복사 lineage] 셀(원본) 클릭 / SCR-PM-018 [사본 행] 클릭 / 글로벌 검색 ⌘K 제품 점프 → [버전이력] 탭 전환

  1. 버전 서브탭 — 자재구성(EBOM) 버전/공정구성(MBOM) 버전을 전환한다.
  2. 상태 워크플로 안내 — DRAFT→RELEASED→DEPRECATED 순서와 'RELEASED BOM 직접 수정 불가' 칩으로 새 버전 생성이 필요함을 안내한다.
  3. 버전 이력 테이블 — 버전·상태·품목수·생성일·생성자·변경내용 6열.
  4. 버전 비교 버튼 — SCR-PM-014로 이동해 두 버전의 차이를 확인한다.
  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 검색
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 lineage
버전이력
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
SCR-PM-012 제품 상세 · [복사 lineage] 탭 /products/:productCode Figma: node 1730:16329

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

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

  1. 출처 패널 — 이 제품의 원본 productCode와 분류경로를 테두리 박스로 표시한다.
  2. 사본 목록 테이블 — 최대 5건 빠른 참조. 사본productCode·복사일시·lineage깊이(+1 고정)·BOM상태.
  3. lineage 깊이 안내 칩 — 항상 직접 사본(+1) 상수이며 다단 절대깊이는 표시하지 않는다는 설계 규칙.
  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} — 원본 제품 정보 조회
제품 상세  ›  복사 lineage
CMD+K 검색
제품 상세
기본정보자재/공정구성옵션구성 시뮬레이터버전이력복사 lineage
복사 lineage
1출처 (이 제품의 원본)
원본 제품DHS-AE225-D-1 (미서기/마스/단창)
2사본 목록 (이 제품을 출처로 하는 사본, 빠른 참조 최대 5건)
사본 productCode복사 일시lineage 깊이 (직접 +1)BOM 상태
DHS-AE225-D-1-COPY-A2026-04-12 14:02+1DRAFT
DHS-AE225-D-1-COPY-B2026-04-25 09:31+1RELEASED
3lineage 깊이는 직접 사본(+1) 상수입니다. 다단 절대깊이를 표시하지 않습니다.
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 검색
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 [복사 lineage] 탭 [+ 제품 복사] 클릭 / 글로벌 검색 ⌘K 제품 점프

  1. 안내 alert — 사본은 원본과 완전히 독립되며 원본 변경/삭제가 전파되지 않는다는 설명.
  2. 기본 입력 — 원본 제품(잠금, 읽기전용)·신규 productCode(필수)·신규 제품명(필수)·설명.
  3. 복사 범위(자동) — PRODUCT·EBOM·MBOM·BOM_RULE(OPTION)·product_feature 5개 도메인은 자동 복제(✓)되고 OPTION_VALUE·BOM_VERSION 이력·partner_material·견적 참조는 승계되지 않는다(×).
  4. 즉시 수정 — 표준 규격 — 폭/높이/깊이/무게. 변경한 필드만 전송된다.
  5. 즉시 수정 — 분류 재분류 — L1~L4 분류. 이 모달이 재분류의 유일한 통로다.
  6. 복사 등록 버튼 — 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-023 옵션별규칙 시뮬레이터 (경로 미확정) Figma: node 1333:7949

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

  1. 제목 액션 — [초기화]·[시뮬레이션 실행] 버튼이 제목 우측에 고정된다. 좌측 패널 하단의 [옵션 조건 다시 불러오기]/[실행]과 역할이 겹쳐 보이므로, 제목 버튼 = 화면 전체 재설정·재계산 / 패널 버튼 = 옵션 입력값만 초기화·재계산으로 구분한다.
  2. 안내 칩 — 규칙을 실제 자재 구성표에 반영하기 전에 결과와 적용 규칙을 확인하는 화면이라는 설명.
  3. 헤더 정보 바 — 제품코드·평가 시간·적용 규칙 수·캐시 상태 넷을 표시한다. 규칙 엔진 판(rule_engine_version)은 싣지 않는다 — 시뮬레이터 응답에 그 칸이 없어 정본이 비채택했다(#1330 결정, 2026-08-21).
  4. 옵션 입력 패널 — 설치 구성(OPT-LAY)·절단방향(OPT-CUT)·유리사양(OPT-GLZ)·재질(OPT-MAT)·색상(OPT-FIN) ENUM과 W/H/W1/H1(조건부 활성) NUMERIC 치수를 입력하고 하단 [옵션 조건 다시 불러오기]/[실행]으로 재계산한다. 부재 수 원장이 없는 격자 여섯(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).
  6. 적용/기각 규칙 패널 — 규칙코드별 적용/기각 카드와 [추적 상세 펼치기].
  7. 페이지네이션 — 적용/기각 규칙 카드 목록 하단, 페이지 이동.
관련 API Swagger UI ↗
  • POST/api/pm/products/{productCode}/rules/simulate — 시뮬레이션 실행
  • POST/api/pm/products/{productCode}/rules/simulate/export — 엑셀 다운로드(설계 도구 아이콘 없음, 결과 패널 하단에 있어야 함)
  • POST/api/es/estimate-lines/evaluate-preview — 평가 결과 확인(ESTIMATE 평가)
제품관리  ›  제품 상세  ›  시뮬레이터
CMD+K 검색
옵션별규칙 시뮬레이터1초기화시뮬레이션 실행
제목 우측 버튼 = 화면 전체 초기화·재계산 · 좌측 패널 하단 버튼 = 옵션 입력값만 초기화·재계산(역할 구분).
안내
2규칙을 실제 자재 구성표에 반영하기 전에 결과와 적용 규칙을 확인하는 화면입니다.
3DHS-AE225-D-1 평가 시간: 142 ms 적용 규칙: 4 / 12 캐시 HIT (warm)
4옵션 입력
설치 구성 · OPT-LAY3×2 (가로3모듈 세로2모듈)
절단 방향 · OPT-CUT45° 마이터(연귀)
유리 사양 · OPT-GLZ24t복층
재질 · OPT-MAT알루미늄+PVC단열
색상 · OPT-FIN아노다이징
전체 폭 W (mm)3,200
전체 높이 H (mm)2,400
1편 가로 W1 (mm)500
1단 높이 H1 (mm)1,200
2단 높이 H2·3단 높이 H3 는 현재 설치 구성(OPT-LAY)에서 비활성 🚫. 비활성 칸에 마우스를 올리면 「이 치수 슬롯은 현재 설치 구성에서 비활성입니다」 툴팁이 뜬다(#850).
옵션 조건 다시 불러오기실행
5결과 미리보기
선택한 옵션 조합으로 자재 구성표가 어떻게 바뀌는지 미리 확인합니다.
추가 2변경 3삭제 1
품목수량절단 실치수상태
+ 프레임 상부 AL-FR-00111,800 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-GLASS-LOWE-UPGRADE기각
기각 이유: 유리 사양이 로이유리가 아닙니다.사용자가 선택한 값은 24T 복층유리입니다.동작 정보는 저장용 원본 규칙값과 함께 유지됩니다.
71 / 2
추적 상세 펼치기