제품 상세
기본정보자재/공정구성옵션구성
시뮬레이터버전이력복사 이력
옵션구성 관리
DHS-AE225-D-1
1초보 모드
2옵션그룹
옵션별규칙
옵션구성 목록
확정구성표
⚠ 전역 옵션 마스터 — 이 화면의 변경 사항은 전 제품에 영향을 미칩니다. (항상 고정 노출)
좌측 행을 클릭해 그룹을 고르면 우측에 그 그룹의 값 목록이 나온다. 그룹을 고르지 않았으면 우측은 "좌측에서 그룹을 선택하세요." 안내만 둔다. 편집 권한(ROLE_PM_EDITOR 이상)이 없으면 두 표의 [작업] 열과 [+ 그룹 추가]·[값 추가] 를 감춘다. 좌측 [값 종류]·[필수] 열은 권한과 상관없이 보인다. 값 종류는 우리말 이름(목록형 · 숫자 · 범위)만 보이고 코드(ENUM 등)는 마우스를 올리면 보인다(#3547).
④-1 [옵션 그룹 상세] 모달 (추가·수정 공용) — 좌측 표의 [+ 그룹 추가]·[수정]
OPT-DIM 옵션 그룹 상세✕
그룹 코드OPT-DIM
그룹 명치수 입력
값 종류숫자 (목록형 / 범위 (준비 중))
필수아니오
설명도면 치수를 받는 슬롯을 담는 그룹. 슬롯마다 범위·단위·활성화 조건을 따로 둡니다.
값 종류는 생성 시 고정 · [+ 그룹 추가] 에서 고른 값 종류는 그룹에 저장된다(#3560) · RANGE 는 Phase 1 비활성 · 단위·범위·활성화 조건은 그룹이 아니라 값 슬롯 속성이라 아래 ④-2 모달에 있다.
취소저장
④-2 [옵션값 상세] 모달 (추가·수정 공용) — 우측 표의 [값 추가]·[수정]
OPT-DIM 의 값 슬롯 — OPT-DIM-W1 상세✕
값 코드OPT-DIM-W1
값 이름1편 가로
10값 타입숫자 🔒그룹 OPT-DIM 에 저장된 값 종류로 열리고 잠긴다 (고르는 값: 목록형 · 숫자 · 범위 (준비 중))
단위mm
Numeric_min200
Numeric_max2000
설명1편(좌측) 모듈의 가로 치수. 설치 구성의 가로가 2모듈 이상일 때 입력합니다.
활성화 조건 식(ROLE_PM_ADMIN 전용): OPT-LAY IN ('2×1','3×1','4×1','2×2','3×2','4×2','2×3','3×3','4×3','2×4','3×4','4×4')
12조건 문법 도움말취소저장
11④-2 모달 [저장] 을 눌렀을 때 — 저장 전 활성화 조건 검사 (#3548 · ✅ 서버·화면 반영)
문법 오류 — 저장하지 않는다
활성화 조건OPT-LAY IN ('2×1'
18 번째 글자: ')' 기대했지만 '<EOF>'
취소저장 (막힘)
쓸 수 없는 이름 — 경고만, 저장은 된다
활성화 조건PRODUCT.series_code == 'AE225'
이 이름은 활성화 조건을 계산할 때 값이 없습니다. 이대로 저장하면 칸이 늘 닫힙니다
목록형 값에 잠금 문장(OPT-LAY == '__LOCKED__')이 아닌 식을 넣으면 같은 자리에 「목록형 값은 다른 옵션을 읽지 못합니다」
취소저장
12[조건 문법 도움말] 창 — ④-2 값 모달의 [조건 문법 도움말] 버튼을 누르면 열린다 (서버 호출 없음 · R-COND-HELP-MODAL #3548 정정)
조건 문법 도움말✕
① 지원 연산자 — 옵션별 규칙 조건과 같은 문법
IN ('값',…) · == · != · < · <= · > · >= · BETWEEN 값 AND 값 · AND · OR · NOT · 괄호 ()
NOT IN 은 쓰지 못한다 — NOT (OPT-LAY IN (…)) 처럼 앞에 NOT 을 둔다. 값은 옵션값 코드와 글자까지 같아야 한다 (× 는 곱셈 기호).
② 쓸 수 있는 이름
치수 칸: 옵션 그룹 코드 (OPT-LAY 등, 고른 값 코드와 견준다) · PRODUCT.leaf_count · PRODUCT.leaf_asymmetric
목록형 값: 다른 옵션을 보는 조건은 쓰지 못한다 — 잠글 때만 OPT-LAY == '__LOCKED__' 로 쓴다
목록에 없는 이름은 오류 없이 빈 값이 되어 칸이 닫힌다 (!= 만 열린다). 저장 전에 문법을 검사한다.
③ 예시 식
OPT-LAY IN ('2×1','3×1')
PRODUCT.leaf_count >= 3
닫기
그룹 자체의 속성은 표 안에서 고치지 않고 ④-1 모달에서, 값 슬롯의 범위·단위·활성화 조건은 ④-2 모달에서 고친다(#797 결정 — 정본 §05 [옵션그룹] 화면 배치 · #815 개발 서버 실측으로 그룹/값 속성 분리).
계열 AE225sbv12상태 DRAFT
제품군은 고르는 칸이 아니라 읽는 배지다(#1119) — 주소에 제품이 박혀 있어 고를 것이 없다. 앞말은 형식을 따라 갈린다(미서기 「계열」·그 밖 「시리즈」).
시뮬레이터 진입은 [시뮬레이터] 탭으로 단일화됐다(#278) — 종전 [🔍 시뮬레이터 열기] 보조 버튼은 폐지됐다.
📋 템플릿 갤러리(견적 담당자용)
빌트인 카드 그리드 · 클릭 한 번으로 규칙 추가
→ SCR-PM-021
📊 결정표(PM 담당자용)
옵션 조합 × 규칙 매트릭스 · 충돌·미커버 자동 검출
→ SCR-PM-022
⚙️ 전문가 모드(관리자용)
행 단위 직접 편집 · SET/REPLACE/ADD/REMOVE 노출
→ SCR-PM-024
+ 옵션구성 추가
[옵션 조합] 열은 없앴다 — [구성명] 과 같은 정보를 값 코드로 적은 중복 열이었다(#796 결정 1). [상태] 열도 두지 않는다(#321·R14 — PM 단계는 늘 DRAFT). [치수 요약] 열은 R13 에서 폐기됐고 그 자리를 [활성 슬롯] 이 쓴다.
③-1 [옵션구성 추가] 모달 — 제품이 쓰는 ENUM 옵션 그룹만 펼침 (예: 미서기 DHS-AE225-U — 네 개)
옵션구성 추가✕
구성 코드CFG-004 (자동 부여 — 입력 칸 없음)
설치 구성 * — 1×1 (가로1모듈 세로1모듈)절단 방식 — 45도 사선
중간띠 유무 — 없음고정창 유무 — 없음
+ 다른 옵션 그룹취소생성
드롭다운 개수는 제품에 따라 다르다 — 6개 고정이 아니다. 후보 = 그 제품의 규칙이 참조하는 ENUM 옵션 그룹뿐이다(#907 결정). 필수 그룹을 얹지 않는다 — * 는 후보에 든 그룹이 필수일 때만 붙고, 비어 있으면 [생성]을 잠근다. 치수 슬롯 OPT-DIM 은 NUMERIC 이라 어느 경로에서도 후보에 넣지 않는다. 위 넷은 개발 서버 실측값이다(DHS-AE225-U 규칙 20건이 참조하는 ENUM 그룹 넷 = 그 제품 옵션구성 10건이 실제로 쓴 그룹 넷, 2026-08-10). [+ 다른 옵션 그룹]은 후보 밖 그룹이 필요할 때 쓰는 보조 경로이고 이 경로만 전역 목록을 담는다(#796 결정 3).
③-2 [옵션구성 추가] 모달 — 쓰는 옵션이 아직 없는 제품 (예: 커튼월 30종)
옵션구성 추가✕
구성 코드CFG-001 (자동 부여 — 입력 칸 없음)
이 제품에는 아직 옵션별규칙이 없어 고를 옵션이 없습니다. [옵션별규칙] 서브탭에서 규칙을 먼저 만들어 주세요.
+ 다른 옵션 그룹취소생성
후보가 비어도 전역 옵션 그룹 목록으로 떨어뜨리지 않는다(#907 결정) — 규칙이 없는 제품은 옵션을 골라도 걸리는 규칙이 없어 자재가 달라지지 않는다. 커튼월에서는 더 어긋난다 — 격자(OPT-LAY)는 커튼월 여섯 창타입 가운데 단창에만 서고(#900), 중간띠·고정창은 미서기 부재 이름이다. 개발 서버 실측으로 커튼월 30종은 규칙도 옵션구성도 0건이다(2026-08-10). 규칙을 만드는 화면은 전역 목록을 그대로 쓰므로 첫 규칙을 만드는 데 막히지 않는다.
이 서브탭은 열려 있다 — 눌러서 들어가고 자료도 있다(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
칸 이름과 차례는 화면 그대로다(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 견적설계 조회 권한이 없을 때 — [견적 라인 열기] 잠금
견적설계 조회 권한 묶음 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)
자재가 행이고 견적 라인이 열 묶음이다. 「수량」은 제품 한 틀 기준 총수(expandedQty), 「부모당」은 부모 하나당 수량(resolvedQty)이다 — 화면 칸과 같은 낱말이다(#2415). 그 라인에 없는 자재는 비운다(0 이 아니다 — 둘째 줄의 1×1 칸). 행은 「부모 자재코드 + 자재코드 + 절단방향 + 공급구분」으로 가른다 — 같은 자재라도 부모나 공급구분이 다르면 다른 행이라, 받은 뒤 공급구분으로 걸러도 합계가 맞는다(#2482). 부모 자재코드는 확정 구성표 줄이 가리키는 부모 줄의 자재코드다. 열은 옵션구성 코드 · 확정일시 차례로 선다. 절단 길이는 라인마다 치수가 달라 시트 2 「자재 행」에 라인 × 자재 한 줄씩 적는다. 칸 정본은 DE24-1 §5.3.5 IF-PM-RBOM-EXPORT-001 이다. 숫자는 그림용 예시다.
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건 — 충돌 해소 후 다음 단계 진행 가능. (예시)