2026-10-06(화) 세션 — 네스팅 「제품 계산기」(오픈장·휠라 등 다중 부재 제품, 서랍 계산기 심화판)
논의·대안
[페페] 26.10.6(화) 「poincad 자산을 활용해서 네스팅에 오픈장, 휠라 등 다중 항목 제품을 외곽치수 입력, 항목별 직접 입력으로 추가할수 있게 해줘. 서랍 계산기의 심화 버전이다. 운영배포. 질문사항은 추천대로 진행한다.」 → 그릴링 Q1~Q10 전부 추천안(A) 채택.
핵심 갈림길은 산식을 어디서 가져오느냐였다. 조사(opus-max 상담, MSSQL poin 읽기 전용)로 확인한 사실 — poincad(VB)는 산식이 없는 고정치수 템플릿뿐이다
(카탈로그 poin_sample_group 활성 116그룹 · 품목 poin_sample_item 233품목, 휠라는 EP(20)·도장(30) 구분). 샘플→현장 테이블 복사 후 사람이 칸을 고친다(Form_Item_List.vb).
그래서 산식은 서랍 계산기(SPEC-DRAWER 정본)와 달리 현장 실사용 poin_item_group/poin_item 역산 최빈값을 쓴다 — 정본이 없는 영역이라 근거 약한 값(선반·여유)은 전부 입력칸(노브)으로 뺐다.
대안 = ①산식 없이 샘플 고정치수만 ②산식 3종 + 샘플 + 직접 구성 → ② 채택(Q1).
furniture-expert 대조(산식표보다 우선): 냉장고 ㄷ자 전면 = 가로 H·세로 A(130×1070) · 오픈장 뒤판 두께 노브 Tb(기본 18) · 내림 = Math.floor(x+1e-9) · 오류 검사 확대 · T자 속대 이름 충돌 처리 · 이동선반 스팬 경고 · H 입력 안내.
코덱스 상의: cherry-pick 은 deploy-live 기준 호출 함수·DOM ID·API 의존 대조 / 수동값(override) 버그 3(0·빈값을 「고정 없음」으로 보지 말 것 · 재계산이 수동값을 덮지 말 것 · 배열 인덱스 대신 안정 행 키).
결정
Q1~Q10 = 전부 A.
1. 범위 = 산식 3종(오픈장 · 휠라/SR/EP/목찬넬 ㄱ자·T자 · 냉장고 휠라 ㄷ자) + poincad 샘플 116그룹 고정치수 불러와 편집 + 빈 제품 직접 구성.
2. 산식 = 화면 JS 상수표, 기본값 = poincad 실사용 최빈값, 근거 약한 값은 노브. 스키마 변경·운영 DB 쓰기 0.
3. 모달 미리보기 = 편집 표. 자동 행 칸을 고치면 그 칸만 수동 고정(주황 · ↺ 자동 복귀). 외곽치수를 바꿔도 수동값 유지 + 「수동 n칸 유지 중」 경고. 제품을 바꿀 때만 확인 후 초기화.
4. 새 읽기 API GET /api/poin/sample-tree 1개(그룹+품목 한 번에, SELECT 2개), 샘플 칸을 처음 펼칠 때만 로드. 기존 2개 엔드포인트 불변. 실패는 503(응답 객체에 status 직접 — 튜플은 500 함정).
5. 서랍 계산기 옆 별도 버튼 「🧱 제품 계산기」, 목록 맨 아래 「서랍 → 서랍 계산기 열기」. 서랍 계산기 회귀 0.
6. 타입·위치·컬러·경면 = 부재 표 마지막 채워진 행에서 이어받기. 품명 = poincad 부재명. 비고 = poincad 그룹 표기(예 「오픈장 815365300=1」).
7. 가로=width, 세로=length=결방향. 결 기본 세로 · 「단색(결무시)」 체크로 일괄 결무시. 양단면 = 오픈장 뒤판만 단면·나머지 양면, 휠라·EP류 전부 단면. MDF·18T 기본. 가로/세로 자동 교환 없음.
8. 모달을 닫지 않고 연속 추가. 입력이 바뀔 때까지 「✓ 추가됨」 잠금(중복 클릭 방지).
9. 배포 = master 독립 커밋 → 테스트 서버 → deploy-live 에 이 커밋만 cherry-pick(운영 nesting.html 은 master 복수 현장 c7b31265 미반영 유지) → 운영 읽기전용 검사.
10. 서랍 계산기 천지판 W−2T vs poincad 실사용 W−37 1mm 차이 = 이번엔 고치지 않고 보고만.
산식표(정본 · 가로·세로 내림, 두께 그대로, 수량 × 세트 n)
오픈장(입력 W·D·H·n, T 18, 뒤판 있음, 고정선반 nF, 이동선반 nM · 여유 sg 1 · bg 2 · bh 2 · md 5 · mw 3 · 뒤판두께 Tb 18) — Dt = 뒤판 ? D−Tb−bg : D, Wi = W−2T−sg.
측판 D×H q2 · 천판 Dt×Wi · 지판 Dt×Wi · 뒤판 Wi×(H−bh) 단면 · 고정선반 Dt×Wi · 이동선반 (Dt−md)×(W−2T−mw). 대응 poincad 실사용 = 천지판 W−37 · 깊이 D−20 · 뒤판 H−2.
ㄱ자/T자 = 전면 A×L · 리턴 (B−d)×L · 속대 40×L ×s, 차감 d = 상부휠라·SR·하부EP T+2 / 키큰장EP T+2(속대 1) / 목찬넬 T+1. ㄱ자 B−(T+2).
냉장고 ㄷ자 = 전면 H×A(130×1070) · 상부 리턴 (B−d)×A · 하부 리턴 (C−d)×A(B=C 면 ×2) · d=T+2 · 단면 · 결 세로.
샘플 = 가로 width · 세로 height · 두께 thickness · 수량 total×n · 0×0 품목은 채우기 전 추가 막음.
산출물·커밋
- 변경 =
C:\dev\pfs\web\nesting\nesting.html(+813) ·C:\dev\pfs\api\pfs\poin_sample\controller\poin_sample_controller.py(GET /api/poin/sample-tree신설). DDL 0 · 운영 DB 쓰기 0. - master
671dd485(테스트 서버 반영) → deploy-live980b4e43(cherry-pick, 26.10.6 push 완료 · 운영 반영). - 자체검사
C:\dev\pfs\scripts\_nesting_product_calc_check.py(gitignore · 로컬 전용) — 로컬 137/137 · 테스트 146/146 · 운영 146/146(EC2→MSSQL sample-tree 116그룹 · 쓰기 0 · 콘솔 에러 0). 회귀 = 서랍 계산기 운영 73/73 · 로컬 65 · 테스트 72 · qa5 99/106 · grid-modal 87/96(기존 기준선 동일) · import_keep 53/53. - 검사기가 잡은 버그 3 — ①
id="pcType"이 PNCAD 탭 필터 id 와 충돌 →pcTypeIn②display:flex가hidden속성을 무력화 ③칸을 고친 뒤 ↺/제외를 누르면 blur→change 재렌더로 클릭이 사라짐. - 사이트맵 재빌드(운영배포 후) →
C:\dev\devplan\pfs-sitemap.html페이지 62 · 미반영 1(=/field/worklogkakao-board, 이번 건 무관) ·/production/nesting상태 same(주황 걷힘). pfs 커밋614bfe64(menu_dump). - devplan
C:\dev\devplan\pfs-nesting-product-calc.html+ 허브 카드(ub:pfs) +pagelinks.jsTREE(서랍 계산기와 형제). - 스펙·UI 처방 =
C:\dev\_work\nesting-product-calc\spec.md·ui.md.
다음
- ⏳[페페] ①1280px 에서 툴바 2줄 접힘(1320px+ 1줄 · 이번 범위 밖) ②18T MDF 행 분홍 경고(기존 「15T↑+MDF 경고」 규칙 vs 결정 「MDF 18T 기본」 충돌 — 경고 규칙을 고칠지) ③뒤판 18T 통뒤판 인셋 가정 확인(화면 문구 「확인 필요」).
- 보고만 = 서랍 계산기 천지판 W−2T vs poincad 실사용 W−37 → 1mm 차이(Q10 · 미해결).
- 운영
nesting.html은 master 복수 현장(c7b31265) 미반영 유지 — 그 반영 때 이 모달 코드와 충돌 없는지 확인. - poincad 에는 외곽치수 산식이 없음 → 산식은 현장 실사용(poin_item) 역산 최빈값이라, 실무값이 다르면 노브 기본값 교체.
관계
- 주제 그룹: pfs-nesting
- 관련 문서: pfs-session-2026-09-22-nesting-drawer-calc, pfs-nesting-product-calc(devplan), pfs-session-2026-10-05-nesting-order-draft