견적설계 (ES) 와이어프레임

위치: 프로젝트 상세(SCR-PM-016) › [견적] 탭 하위 — 독립 영역이 아니라 프로젝트를 열고 [견적] 탭으로 들어가는 견적 작성 흐름입니다. 사이드바 🧮견적설계 1차 메뉴는 프로젝트와 무관한 전역 현황(설계 진행 현황 SCR-ES-011·실행예산 총괄 SCR-ES-013)만 담습니다.
로우파이 웹 와이어프레임 · ES 화면 14종은 Figma 시안(fileKey xFn4Tq2vnfAr42PpuxLbbP)을 참고해 레이아웃 재작성 · 정본은 Figma 가 아니라 DE22-1 §08 명세다(디자인 맞춤 정책 v1.4 Spec-First, 2026-06-02 — Figma 는 명세를 그리는 도구다. 시안과 명세가 어긋나면 명세를 따르고 시안을 고친다) · 나머지(ES-008·017·018·019)도 DE22-1 §08 근거 · 18화면 (SCR-ES-001~019, ES-012 폐기)
← 프로젝트 상세 ← 와이어프레임 목록
SCR-ES-014도면 보관함 (프로젝트) /projects/:projectNo/drawings표준Figma: node 1310:10054

절차 단계 ① — 도면을 프로젝트 자원으로 업로드·변환·관리. 올리는 것만으로 변환이 시작되지는 않는다 — 올린 도면은 「미변환」으로 담기고 사람이 변환을 걸어야 돈다 (#1499 확정). 견적은 단계 ③에서 이 보관함의 도면을 선택해 공유한다.

진입 — SCR-PM-016 프로젝트 상세 [도면] 탭.

  1. 사용 견적 참조 — 이 도면 보관함을 사용 중인 견적 버전 목록을 역참조로 보여준다(예: v.1·v.3·v.4). 여러 견적 버전이 도면을 공유함을 알려준다.
  2. 업로드 — 새 CAD 파일을 프로젝트 자원으로 등록한다. 등록까지만 하고 변환을 걸지 않는다 (#1499 확정) — 서버가 올린 도면을 PENDING(미변환)으로 담고, 변환(CAD→JSON)은 사람이 따로 걸어야 시작한다. 서버 DrawingUploadService 가 스스로 「변환 auto-chain 안 함」이라 적어 두었다.
  3. 목록 테이블 — 썸네일·파일명·용도·포맷·크기·변환 상태·업데이트일·업로더를 보여준다.
  4. 변환 상태 — 완료 / 진행 중(%) / 미변환 3단계 배지. 변환 완료 도면부터 섹션 매핑(ES-004)에 쓸 수 있다. 대기 중이면 배지 옆에 「앞에 N건 · 보통 M분」을 붙인다(#1575) — 종전에는 「미변환」이라는 글자 하나가 줄 서 있음과 멈춤에 똑같이 쓰여 기다림을 멈춤으로 읽는 일이 실제로 일어났다(#1531). 표본이 5건 미만이거나 중앙값을 잰 적이 없으면 예상 시간을 감추고 대기 건수만 보인다 — 값만 보이면 그럴듯한 숫자가 된다. 진행 중인데 중앙값의 세 배를 넘으면 「예상보다 오래 걸립니다」를 덧붙인다. ⚠️ 대기 건수를 화면이 스스로 세지 않는다 — 화면은 제 프로젝트 도면만 보므로 늘 적게 센다(계약 IF-ES-DRAWING-STATUS-001 이 서버 전체 수를 준다). 정본 §4.1 결정 상자.
  5. 동작(다운로드) — 행별 원본 CAD 파일을 다운로드한다.
  6. 페이지네이션 — 도면 목록 서버 페이징.
  7. 용도 필터 — 평면도·창호일람표·입면·기타 4종 드롭다운으로 목록을 좁힌다(drawing.drawing_kind, #445). 업로드 시 지정한 용도가 목록 '용도' 열에 표시된다.
  8. 썸네일 — 목록 첫 열의 도면 미리보기 이미지다(thumbnailUrl, #705). 도면 비율이 제각각이라 잘라내지 않고 여백을 채워 맞춘다(contain). 그림이 없을 때는 왜 없는지thumbnailStatus 로 갈라 그린다(#1614) — PENDING(곧 생긴다)은 파란 점선 테두리 + 옅은 가로 막대이고, FAILED(만들다 실패)·SKIPPED(만들 수 없는 환경이거나 아직 변환하지 않은 도면)는 회색 점선 테두리 + 도면 아이콘이다. 뒤 둘을 눈으로 가르지 않는 까닭은 사람이 할 일이 「기다려도 안 생긴다」로 같기 때문이다. 빈칸으로 남기지 않는다. PENDING 인 줄이 하나라도 있으면 10초마다 목록을 다시 부르고, 없으면 멈추며, 15분이 지나면 멈춘다 — 「몇 초 뒤 생깁니다」는 적지 않는다(실측 29~162초이고 파일 크기로는 예측이 안 된다). 이 값들은 정상 경로라 썸네일이 없다고 변환 상태를 실패로 읽지 않는다. 상세는 화면설계서 §4.1.3.
관련 API Swagger UI ↗
  • GET/api/es/projects/{projectId}/drawings — 프로젝트 귀속 도면 목록·변환 상태·썸네일(thumbnailUrl, presign-on-read) 조회
  • POST/api/es/projects/{projectId}/drawings — 도면 업로드 (변환은 걸지 않는다PENDING 으로 담기까지만, #1499 확정)
  • POST/api/es/projects/{projectId}/drawings/{drawingId}/convert — 미변환·변환 실패 도면 재변환 (ES-001 행 펼침의 [재변환]과 공용)
프로젝트  ›  프로젝트 상세  ›  도면
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

도면 보관함

1사용 견적: 미사5중_프로그램용 → v.1 · v.3 · v.4폴더 생성2업로드
용도 필터7전체
8썸네일3파일명용도포맷크기4변환 상태업데이트업로더5동작
미사5중_프로그램용.dwg창호일람표CAD 파일698.85 KB변환 완료2026-05-14성윤정다운로드
지킴이실_프로그램용.dwg평면도CAD 파일698.85 KB변환 중 42% · 예상보다 오래 걸립니다2026-05-14성윤정다운로드
미사5중.dwg기타CAD 파일698.85 KB미변환 · 앞에 3건 · 보통 2분2026-05-14유진이다운로드
61 / 1
이 화면은 프로젝트 상세 도면 탭 — 브레드크럼 아래 프로젝트 상세 탭 스트립으로 현재 탭을 표시한다. 상태 variant: empty · loading · error(변환 실패 → 재업로드).
SCR-ES-001견적 버전 목록 /projects/:projectNo/estimatesFigma: node 1081:3488

프로젝트에 병존하는 견적 버전(v.N)들의 목록·지표(중량·금액·도급·실행률·진행률)·계약 지정. 행 펼침(▾)으로 귀속 도면·메모 관리.

진입 — SCR-PM-016 프로젝트 상세 [견적] 탭 / SCR-ES-011 설계 진행 현황 행 클릭(전역 → 프로젝트 진입, 발신 상호 인정).

  1. + 견적 생성하기 — 새 견적 버전(v.N) 생성 화면(ES-002)으로 이동한다.
  2. 상태 배지 — 신규/설계중/검토/확정/계약 5단계. 계약 지정된 버전만 발주(OM) 인계 대상이 된다.
  3. 실행률(대 도급) — 도급 금액 대비 실행 원가 비율.
  4. 진행률 — 섹션 설계·라인 확정 진행 비율.
  5. 동작(복제/삭제/발주/계약) — 버전 복제, 삭제(계약·발주 파생 버전은 차단), 계약 버전은 발주(OM)로 인계. 확정 버전은 [계약 지정], 계약 버전은 [계약 해제] 토글. 계약 지정·계약 해제는 이 목록 화면이 맡는다(#741 결정, DE22-1 §4.2 R-ES-CONTRACT-PLACE) — 나머지 전이 4종(검토 제출·검토 승인·보완 반려·개정 개시)은 SCR-ES-003 견적 상세 허브에 있다. 둘 다 ROLE_ADMIN 전용이고, 프로젝트당 계약은 동시 1건이라 계약 버전이 이미 있으면 나머지 확정 버전의 [계약 지정] 은 비활성이다(서버 409 CONTRACT_ALREADY_EXISTS).
  6. 행 펼침 패널 — 버전 귀속 도면과 버전 간 차이 메모를 확인·수정한다.
  7. 재변환 — 미변환/실패 도면을 인라인에서 재업로드·재변환.
  8. 메모 저장 — 버전 간 차이 메모를 저장.
  9. 견적 (버전) 칸 — 한 칸에 견적명(굵게)·견적번호·버전을 담는다(#786 결정). 지표 넷 가운데 셋이 Phase 1 금액 숨김(#522)으로 가려지고 견적 중량도 서버가 채우지 않아, 어느 견적인지 가려 주는 것은 이 칸뿐이다. 견적명이 비면 윗줄을 감추고 아랫줄만 남긴다. 이 칸을 링크로 만들지 않는다 — 진입 수단은 행 클릭 하나로 둔다.
관련 API Swagger UI ↗
  • GET/api/es/projects/{projectId}/estimates — 견적 버전 목록·지표 조회
  • DELETE/api/es/estimates/{estimateId} — 버전 삭제 (삭제 가드 셋: 계약 지정·발주 파생 409 ESTIMATE_NOT_DELETABLE · 확정 409 ESTIMATE_LOCKED)
  • POST/api/es/estimates/{estimateId}/contract — 계약 지정 (해제는 POST .../uncontract)
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적 버전 목록
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

견적 버전 목록

1+ 견적 생성하기
9견적 (버전)2상태견적 중량 (KG)견적 금액도급 금액3실행률
(대 도급)
4진행률마지막 수정일5동작
3층 커튼월 증축
EST-2026-002 · V.5
신규준비 중준비 중준비 중0%2026-05-14복제 삭제
3층 커튼월 증축
EST-2026-002 · V.4
설계중141.99준비 중준비 중준비 중62%2026-06-11복제 삭제
3층 커튼월 증축
EST-2026-002 · V.3
계약31,596.03준비 중준비 중준비 중100%2026-05-14발주(OM) 복제 계약 해제
1층 로비 창호
EST-2026-001 · V.2
확정31,587.71준비 중준비 중준비 중100%2026-05-07복제 삭제 계약 지정 — 비활성(V.3 계약 중)
EST-2026-001 · V.1확정25,823.06준비 중준비 중준비 중100%2026-04-11복제 삭제 불가 — 발주 파생 계약 지정 — 비활성
[견적 (버전)] 칸은 견적명을 굵게 윗줄에, 견적번호와 버전을 작게 아랫줄에 담는다(#786 결정). 견적명이 비면 윗줄을 감추고 아랫줄만 남긴다(맨 아래 행). 금액 3칸은 Phase 1 금액 숨김(#522)으로 「준비 중」이다 — 값을 채워 그려 두면 아직 금액이 나온 것으로 읽힌다. 종전에는 이 자리에 (Phase 2) 를 적었으나 화면을 쓰는 사람에게 뜻이 닿지 않아 「준비 중」으로 바꿨고(#1084 결정, DE22-1 §08 §4.2 R-ES-AMOUNT-PLACEHOLDER), 커서를 올리면 까닭 한 줄이 뜬다.
1 / 1
6행 펼침(▾) 인라인 패널 — V.4 귀속 도면 · 버전 메모 (Figma: 견적 펼침 variant node 1104:1408)
도면: 미사5중_프로그램용.dwg 변환 완료 7재변환 ↻ 버전 간 차이를 입력하세요. 8메모 저장
Figma 대비 DE22-1 차이: 브라우저 크롬 대신 전역 좌측 모듈 네비 + 브레드크럼 + CMD+K 검색 셸. 상태 variant: empty · error · 견적 펼침(미변환 / 변환 완료 / 변환 중 / 변환 실패 — 대기는 「변환 중」에 합치지 않는다, #1541).
SCR-ES-002견적 생성 (도면 선택) /projects/:projectNo/estimates/newFigma: node 1145:3747

단계 ②③ — 견적 버전 생성. 좌측 기본 정보 폼 + 우측 도면 선택(보관함 도면 중 이 버전 귀속분)이 플로우의 본체. 생성만으로 변환이 시작되지는 않는다 — 미변환 도면은 [미변환 도면 변환 시작] 을 눌러야 변환된다 (#1477 확정).

진입 — SCR-ES-001 [견적 생성하기].

  1. 견적명 — 새 견적 버전의 명칭을 입력한다.
  2. 담당 설계자 — 이 버전을 담당할 설계자를 지정한다.
  3. 창호부호 존 구분 — 섹션 부호를 구획할 존 구분 기준을 선택한다.
  4. 도면 선택 — 도면 보관함(ES-014)의 도면 중 이 버전이 쓸 도면을 체크로 선택한다.
  5. 변환 상태 — 캐시된 완료 도면은 즉시 재사용. 미변환 도면은 저절로 변환되지 않는다 — 고른 뒤 [미변환 도면 변환 시작] 을 눌러야 시작한다 (#1477 확정). 서버 EstimateService 는 변환을 걸지 않고, 변환을 부르는 자리는 DrawingConversionController 하나뿐이며 그것은 사람이 눌러야 돈다.
  6. 생성 — 필수 입력 전에는 비활성. 충족 시 활성화되어 견적 버전만 만든다 — 미변환 도면 변환은 함께 걸리지 않는다 (#1477 확정). 변환은 위 ⑤ 대로 [미변환 도면 변환 시작] 을 눌러야 시작한다.
  7. 버전 자동 채번 — 다음 버전 번호(v.5)를 미리 보여준다.
관련 API Swagger UI ↗
  • GET/api/es/projects/{projectId}/drawings — 도면 선택 표에 보관함 도면 목록·변환 상태 표시
  • POST/api/es/projects/{projectId}/estimates — 견적 버전 생성
견적설계  ›  견적 생성
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

견적 생성

7버전 자동 채번: v.5
기본 정보
1견적명견적명 입력
2담당 설계자담당 설계자 선택
시공비율 (%)비율 입력
기타비율 (%)비율 입력
3창호부호 존 구분창호부호 존 구분 선택
4도면 선택 — 도면 보관함 (ES-014)
파일명유형5변환 상태업데이트
미사5중_프로그램용.dwgCAD 파일변환 완료 (캐시)YYYY.MM.DD
지킴이실_프로그램용.dwgCAD 파일미변환 [변환 시작] 을 눌러야 변환YYYY.MM.DD
미사5중.dwgCAD 파일미변환YYYY.MM.DD
1 / 2
취소6생성
미변환 도면은 저절로 변환되지 않는다 — [미변환 도면 변환 시작] 을 눌러야 돈다(#1477 확정) · 변환 결과는 도면 단위 캐시로 공유 (FR-ES-001 ETag 재사용). 상태 variant: empty · error · filled(생성 활성). Figma는 도면 선택 테이블이 카드 우측 넓은 영역 본체.
SCR-ES-003견적(버전) 상세 — 섹션 허브 /projects/:projectNo/estimates/:estimateIdFigma: node 1377:8241

단계 ③~⑥ 허브 — 좌측 사용 도면·제품 후보·합계 패널 + 우측 상단 필터바 + 섹션 목록 테이블. 진행률은 헤더 우측 인라인 바. 후속 단계(일괄 변경·단가·산식·견적서·실행예산) 분기.

진입 — SCR-ES-001 행 클릭 / ES-002 생성 직후 / SCR-ES-011 설계 진행 현황 행 클릭(전역 발신 상호 인정).

  1. 진행률 바 — 라인 확정 건수/전체 섹션 비율을 헤더에 인라인 표시.
  2. 사용 도면 패널 — 이 버전이 쓰는 도면과 도면별 섹션 수.
  3. 제품 후보 변경 — 이 버전이 쓸 제품군을 다시 선택하는 모달(ES-003-modal)을 연다.
  4. 합계 패널 — 견적 중량·견적 금액·라인 확정 진행을 요약.
  5. 필터바 — 도면·상태·부호/제품 검색으로 섹션 목록을 좁힌다.
  6. 선택 일괄 변경 — 체크한 섹션들을 일괄 변경(ES-007) 화면으로 넘긴다.
  7. 섹션 목록 테이블 — 부호·도면·수량·설계 상태·확정 여부·섹션 금액·BOM·작업 9열.
  8. 하단 후속 단계 — 단가·산식·실행예산·견적서 미리보기로 분기하는 버튼 그룹.
  9. 섹션 매핑 이동 — 상단 액션에서 섹션 매핑(ES-004)으로 이동.
  10. 기본정보 수정 — 견적명·버전 메모를 고치는 창을 연다. ROLE_ES_EDITOR 이상에게만 버튼이 보이고, 견적이 확정·계약이면 잠긴다(그 뒤의 변경은 개정(Rev.) 절차로만 한다).
  11. 상태 전이 버튼 그룹 — 고정된 버튼 묶음이 아니라 지금 상태와 내 권한에서 실행할 수 있는 전이만 그린다. 이 그림은 설계중 상태의 ROLE_ES_EDITOR 사례라 [검토 제출] 하나가 떴다. 이 화면이 맡는 전이는 검토 제출·검토 승인·보완 반려·개정 개시 4종이고, 계약 지정·계약 해제 2종은 SCR-ES-001 견적 버전 목록에 있다(#741 결정, DE22-1 §4.2 R-ES-CONTRACT-PLACE). 개정 개시는 ROLE_ADMIN 전용이며, 신규·계약 상태에는 이 화면에 전이 버튼이 하나도 없다. 단추가 하나도 안 뜨는 자리는 비워 두지 않고 그 자리에 다음 할 일을 한 줄로 적는다(#1643 결정, DE22-1 §08 §4.4 · 요청 FB-25) — 신규는 「담당 설계자를 배정하면 설계중으로 넘어갑니다.」, 계약은 「계약 해제는 견적 목록에서 합니다.」다. 상태로는 할 수 있는데 내 권한으로 못 하는 자리에는 누가 할 수 있는지를 적는다(확정에서 관리자가 아니면 「개정(Rev.)은 관리자가 시작합니다.」). 신규 모습은 아래 딸림 프레임이 그린다.
  12. BOM 열 — 행 클릭(ES-015)과 도착지가 다르다. 그 섹션에 달린 견적 라인 1건의 SCR-ES-005(BOM 자동 구성·라인 확정)로 간다. 라인이 여러 건이면 라인 선택 창을 먼저 띄우고, 라인이 없는 섹션(미설계)에서는 비활성이다.
  13. 작업 열 — 섹션 표의 마지막 열이며, 도면 없이 만든 수기 섹션 행에만 [수정]·[삭제] 를 그린다(#810). 이 그림의 네 섹션은 모두 도면에 묶여 있어 이 열이 비어 있다(—). 도면에 묶인 섹션의 편집 정본 자리는 섹션 매핑(ES-004)이다. [수정] 은 부호·수량을 다시 받는 창을 열고, [삭제] 는 무엇이 함께 사라지는지 알리는 확인창을 거친다 — 섹션을 지우면 그 안의 견적 내역(라인)과 설계 자료가 함께 사라지고, 확정된 내역이 있는 섹션은 서버가 막는다. 편집 권한이 없으면 두 단추를 그리지 않고, 견적이 확정·계약이면 그리되 잠근다.
  14. 진행 이력 — 이 견적이 지나온 상태 전이를 시간 역순으로 모아 보여 주는 창을 연다(#856 결정, DE22-1 §08 §4.4). 한 줄은 「이전 상태 → 이후 상태(전이 이름) · 그때의 회차(Rev.) · 바뀐 시각 · 바꾼 사람 · 사유」 다섯을 담고, 반려·개정·배정 사유를 접지 않고 그대로 편다. 전건을 보이며 건수를 자르지 않는다. 조회 권한이면 누구나 열고 상태·권한으로 감추거나 잠그지 않는다 — 보는 일이지 고치는 일이 아니다. 읽는 자료는 새 표 estimate_status_history 이고 회차 표 estimate_revision 이 아니다 — 회차는 승인마다 하나 오르는 축이고 상태 전이는 한 회차 안에서 여러 번 돌기 때문이다. 표를 만들기 전에 생긴 견적은 이력이 비어 있다 — 지나간 전이는 자료가 없어 거슬러 채우지 않고, 창 안에 「이 견적은 이력을 쌓기 시작하기 전에 만들어져 그전 전이가 남아 있지 않습니다.」 안내 한 줄만 띄운다. ✅ 조회 주소와 표가 계약으로 섰다(#862) — 조회는 GET /api/es/estimates/{estimateId}/status-history(DE24-1 §5.4.11)이고 표는 estimate_status_history(DE33-1 §3.X)다. 시간 역순 전건, 조회 권한이면 누구나, 이력 0건이면 빈 목록 200 이다. 기록하는 자리는 전이 여섯과 담당 설계자 배정 하나, 담당 설계자 재배정 하나를 더해 여덟이다 — 상태를 갈아 끼우는 자리는 그대로 일곱이다(재배정은 상태를 건드리지 않는다). ✅ 담당 설계자 재배정 줄도 이 창에 함께 뜬다(#897 결정, DE24-1 §5.4.12) — 상태가 바뀌지 않는 유일한 줄이라 「확정 → 확정 (담당 재배정)」처럼 두 상태 값이 같게 보이고, 감추거나 다른 창으로 빼지 않는다. 그때까지 재배정 사유는 받아 놓고 아무 데도 저장되지 않았다. ✅ 서버 작업도 들어갔다(#901, V319) — 재배정 줄이 실제로 쌓이고, 배정·재배정 응답의 시각·사람도 그 줄에서 읽는다. ✅ 화면 결선도 들어갔다(#896) — 이 창이 조회 주소를 불러 이력 줄을 그대로 그린다. ✅ 「바꾼 사람」 칸은 로그인 아이디가 아니라 이름을 보인다(#1140 결정, DE22-1 §08 §4.4 결정 상자) — 같은 사람이 설계자별 보드에서는 이름으로 불리는데 이 창에서만 아이디로 불리던 자리다. 이름은 그때 값을 굳히지 않고 창을 열 때마다 이어 붙인다 — 로그인 아이디가 재사용되지 않고 사람 행도 지워지지 않아 회사를 떠난 사람의 줄에서도 이름이 나오며, 표에 이름 칸을 새로 두지 않는다. 이름을 못 찾으면(로그인 정보 없이 일어난 전이의 SYSTEM) 아이디를 그대로 보인다. 계약은 transitionedByName(DE24-1 §5.4.11 ④)이고 ✅ 서버·화면 반영이 모두 들어갔다 — 조회가 이름을 담고(#1183), 창이 그 이름을 그린다(#1184, wims2.0_fe@d759c8c).
관련 API Swagger UI ↗
  • GET/api/es/estimate-lines — estimateNo 필터로 섹션(라인) 목록·확정 상태·금액 조회. [BOM] 열이 어느 라인으로 갈지도 이 응답의 라인 수로 가른다
  • GET/api/es/estimates/{estimateId} — 헤더 진행률·사용 도면·합계 요약 조회 (요약은 GET .../summary 병용)
  • PUT/api/es/estimates/{estimateId}/palette — [제품 후보 변경] 확정 저장 — '제품 후보' 는 팔레트와 같은 개념이다 (§5.4.19, 구현 완료)
  • PUT/api/es/estimates/{estimateId} — [기본정보 수정] 저장 (견적명·버전 메모, §5.4.10 IF-ES-EST-001)
  • POST/api/es/estimates/{estimateId}/submit-review · .../approve-review · .../reject-review · .../revise — 이 화면이 맡는 상태 전이 4종 (§5.4.11 IF-ES-WORKFLOW-001). 계약 지정 .../contract 와 계약 해제 .../uncontract 는 SCR-ES-001 이 부른다
  • PUT/api/es/sections/{sectionId} — 「작업」 열 [수정] 저장 (§5.4.13 IF-ES-SECTION-001). 통째로 갈아 끼우는 요청이라 부호·수량만 고쳐도 절취 사각형·층고·기준선을 현재 값으로 함께 보낸다 — 빠뜨리면 서버가 그 값을 비운다. 검토 중에는 막힌다 — 409 SECTION_ESTIMATE_IN_REVIEW(#855 결정, 만들기와 같은 코드). 부호·수량이 견적서에 그대로 실리는 승인 대상이라서다. 통째로 갈아 끼우는 요청이므로 공간 앵커만 고치려는 요청도 함께 막힌다. 확정·계약에서는 409 SECTION_ESTIMATE_LOCKED
  • DELETE/api/es/sections/{sectionId} — 「작업」 열 [삭제] (§5.4.13 IF-ES-SECTION-001). 그 섹션의 견적 내역(라인)이 함께 지워지고, 확정된 내역이 있으면 409 SECTION_HAS_FROZEN_LINE 으로 막힌다
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적(버전) 상세 - 섹션 허브
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

견적(버전) 상세 - 섹션 허브

14진행 이력10기본정보 수정9섹션 매핑 (ES-004)11검토 제출
설계중1진행률 53% · 라인 확정 9 / 17 섹션
2사용 도면 (단계 ③)
미사5중_프로그램용.dwg변환 완료 · 섹션 14
지킴이실_프로그램용.dwg변환 완료 · 섹션 3

제품 후보 (단계 ③)
미서기140 미서기창(V1)
교출-양개140 행거 교실출입문
3제품 후보 변경
4합계
견적 중량141.99 kg
견적 금액준비 중
라인 확정9 / 17 섹션
5도면 전체상태 전체 부호/제품 검색검색 6선택 일괄 변경 (ES-007)
행 클릭: 섹션 견적설계 (ES-015) · [BOM] 진입: ES-005 · 도면 없는 수기 섹션은 「작업」 열에서 고치거나 지웁니다 (도면에 묶인 섹션은 섹션 매핑 ES-004)
7섹션 (부호)도면수량설계확정섹션 금액12BOM13작업
AAW01미사5중27설계중BOM
AW01미사5중13완료잠금준비 중BOM
ACW01미사5중1미설계BOM — 비활성
지킴이실-AD01지킴이실1완료잠금준비 중BOM
1 / 1
단가·할증·공차 (ES-016) 산식 검토 (ES-006) 실행예산 (ES-008) 8견적서 미리보기 (ES-009)
상태 variant: empty · loading · error · frozen(섹션 행 잠금) · 팝업(제품 후보 변경 모달, 아래 프레임 · 진행 이력 창 — 창 안의 빈 상태는 「이력을 쌓기 시작하기 전에 만들어진 견적」 안내 한 줄이다, #856). 기본정보 수정의 저장 막힘(409)은 창 안에서 알리므로 이 화면에는 편집 충돌 배너를 두지 않는다(#1043·#1081).
SCR-ES-003· 신규 · 미배정 (다음 할 일 안내) 상태가 「신규」이고 담당 설계자가 없을 때 — 같은 주소, 상태만 다르다

전이 단추가 하나도 안 뜨는 자리에 다음 할 일을 한 줄로 적는 모습. 발주처 검수자가 「섹션에 제품 추가 후 저장했는데 이 다음 스텝이 뭔지 모르겠어요」라고 물어 온 자리다(요청 FB-25). 위 본체 프레임과 같은 화면이고 헤더 오른쪽과 담당 설계자 자리만 다르다 — 아래는 그 두 자리만 떼어 그렸다. (정본 §4.4 #1643 결정 상자)

진입 — 본체 프레임과 같다. 담당 설계자를 비운 채 만든 견적(DE24-1 §5.4.10 assigneeUserId 는 선택)에 들어오면 이 모습이다.

  1. 다음 할 일 한 줄 — 전이 단추가 서던 헤더 오른쪽 그 자리에 적는다. 「담당 설계자를 배정하면 설계중으로 넘어갑니다.」 물어 온 사람이 다음 단추를 찾던 자리라 답을 거기 놓는다. 화면 위 안내 띠로 두지 않는다 — 「신규 · 미배정」은 늘 생기는 정상 상태여서 경고 띠를 늘 띄우면 진짜 경고가 묻힌다. 문구는 정본이 정하고 화면이 지어내지 않는다.
  2. 단추 이름을 가른다 — 담당 설계자가 없으면 [담당 설계자 배정], 있으면 [재배정] 이다. 「재」는 두 번째부터 붙는 말이다. 위 한 줄이 가리키는 단추가 이것이다.
  3. 진행률은 그대로 100% 일 수 있다 — 「신규」인 채로 섹션 설계와 라인 확정이 끝난 견적이 실제로 있다. 막지 않기로 정했다(#1643 ⑤) — 담당 설계자가 만들 때 선택이라, 막으면 만드는 길이 아무 데도 못 가는 견적을 만드는 길이 된다. 섹션을 만들 때 자동으로 설계중으로 올리지도 않는다 — 그러면 담당자 없는 설계중이 생긴다.
  4. 계약 상태도 같은 자리다 — 계약에도 이 화면에는 전이 단추가 없다. 그 자리 문구는 「계약 해제는 견적 목록에서 합니다.」다. 확정에서 관리자가 아닐 때는 「개정(Rev.)은 관리자가 시작합니다.」다.
  5. 조회 권한만 있을 때도 같은 자리다 — 설계중·검토에서 조회 권한만 있으면 전이 단추가 하나도 안 뜬다. 설계중은 「검토 제출은 견적을 고칠 수 있는 사람이 합니다.」, 검토는 「검토 승인·보완 반려는 견적을 고칠 수 있는 사람이 합니다.」다(#1682).
  6. 담당자가 있는 채로 신규일 때 — 만들 때·복제할 때 담당자를 받아도 상태는 신규다. 그 견적에는 「담당 설계자를 배정하면」이 아니라 「[재배정] 으로 담당 설계자를 확정하면 설계중으로 넘어갑니다.」를 적는다(#1682).
관련 API Swagger UI ↗
  • GET/api/es/estimates/{estimateId} — 헤더의 상태·담당 설계자·진행률을 읽는다. 이 셋으로 어떤 한 줄을 적을지 가른다 (§5.4.10 IF-ES-EST-001)
  • PUT/api/es/estimates/{estimateId}/assignee — [담당 설계자 배정] 저장. 서버가 이 호출로 신규 → 설계중 승격을 함께 한다 (§5.4.12 IF-ES-ASSIGN-001) — 화면이 상태를 따로 바꾸지 않는다
헤더 오른쪽과 담당 설계자 자리만 떼어 그렸다 — 나머지는 본체 프레임과 같다
지금 (안내가 없다) — 물어 온 사람이 본 화면이다

견적(버전) 상세 - 섹션 허브

진행 이력기본정보 수정섹션 매핑 (ES-004)
신규진행률 100% · 라인 확정 1 / 1 섹션
헤더 오른쪽에 전이 단추가 없고, 그 자리가 비어 있다. 할 일은 다 끝났는데 다음으로 넘어갈 길이 화면에 없다.
정한 모습 — 그 자리에 한 줄이 선다

견적(버전) 상세 - 섹션 허브

진행 이력기본정보 수정섹션 매핑 (ES-004)1담당 설계자를 배정하면 설계중으로 넘어갑니다.
신규3진행률 100% · 라인 확정 1 / 1 섹션
담당 설계자미배정
2담당 설계자 배정
4같은 자리에 서는 다른 문구 — 계약: 「계약 해제는 견적 목록에서 합니다.」 · 확정에서 관리자가 아닐 때: 「개정(Rev.)은 관리자가 시작합니다.」 · 설계중에는 두지 않는다([검토 제출] 이 떠 있고, 문턱을 못 넘으면 서버가 못 채운 항목을 돌려주어 화면이 그대로 보여 준다).
SCR-ES-003· 제품 후보 변경 (모달) ES-003 [제품 후보 변경]Figma: node 1426:9093

제품 카탈로그 선택 모달 — PM 표준제품 목록(SCR-PM-010) 4축 분류 필터·검색 재활용. 좌측 카탈로그(체크 다중 선택) + 우측 선택된 후보 요약. 배치 사용 중 제품 해제 시 영향 확인.

진입 — SCR-ES-003 [제품 후보 변경] 버튼.

  1. 분류 필터 — 형식·등급·형태 3축 필터와 코드/제품명/modelCode 검색(PM 표준제품 목록 재활용).
  2. 제품 카탈로그 표 — 체크박스 다중 선택으로 제품 후보를 고른다.
  3. 선택된 후보 요약 — 현재 선택한 후보 수와 목록을 우측에 미리 보여준다.
  4. 영향 확인 경고 — 이미 배치에 쓰이는 제품을 해제하면 영향 확인이 필요함을 안내.
  5. 후보 확정 — 선택 결과를 저장하고 섹션 허브 제품 후보 패널·ES-015/018 팔레트에 반영한다.
관련 API Swagger UI ↗
  • GET/api/pm/products — 형식/등급/형태 4축 분류 필터·검색으로 제품 카탈로그 조회 (SCR-PM-010 재활용)
  • PUT/api/es/estimates/{estimateId}/palette — 체크 다중 선택한 제품 후보 확정 저장 — 팔레트 큐레이션과 같은 주소 (§5.4.19)
SCR-ES-003· 검토 승인 사유 창 (본인 승인 확인) ES-003 [검토 승인]

검토 승인을 누르면 먼저 열리는 사유 창. 작성자 본인이 승인할 때 경고 한 줄이 뜨고 사유가 필수가 된다. 종전에는 작성자 본인이 아예 승인할 수 없었고(409), 발주처 검수자가 「확인을 한 번 더 받는 조건으로 열어 달라」고 요청해 왔다(요청 FB-27). 정본 §4.4 #1646 결정 상자.

진입 — 상태가 「검토」일 때 헤더 오른쪽 [검토 승인] 버튼.

  1. 값이 바뀌었다는 안내가 위다 — #855 가 정한 「검토에 올린 뒤 값이 고쳐졌습니다」 안내다. 본인 승인 경고보다 에 둔다 — 이 안내는 이 견적의 사실을 말해 읽고 나가서 다시 볼 수 있고, 본인 승인 경고는 누가 누르는가에 대한 말이라 승인을 멈추지 않는다. 판단을 되돌릴 수 있는 쪽을 먼저 보인다. ⚠️ 자기 견적을 자기가 승인할 때는 금액을 다시 볼 사람이 없어 이 차례가 더 중요해진다.
  2. 본인 승인 경고 — 「자신이 만든 견적을 스스로 승인하는 것은 권장되지 않습니다. 그래도 승인하시겠습니까?」 작성자 본인일 때만 뜬다. 판정은 견적 조회 응답의 createdByMe 하나로 하고 로그인 아이디를 직접 견주지 않는다 — 그 규칙은 서버가 갖고 있다(DE24-1 §5.4.10).
  3. 사유가 필수가 된다 — 본인 승인이면 사유를 적어야 한다. 곁에 「본인 승인은 사유를 적어야 합니다. 적은 사유는 [진행 이력] 에 남습니다.」를 적는다(둘째 문장 확정 #1691). 그 밖의 승인에서는 지금처럼 선택이다. 창을 하나 더 겹치지 않는다 — 이 창의 [승인] 이 곧 「그래도 승인한다」의 답이라, 창을 더 두면 같은 물음을 두 번 묻는 꼴이다. 되묻기의 값어치는 한 줄을 적게 하는 데 있다.
  4. 적은 사유가 자국으로 남는다 — [진행 이력] 창에 「검토 → 확정 (검토 승인 · 본인 승인)」으로 한 줄이 서고 그 사유가 함께 보인다. #897 의 재배정 줄이 「확정 → 확정 (담당 재배정)」으로 보이는 것과 같은 꼴이다. 새 표 칸을 만들지 않는다 — 그 줄의 「바꾼 사람」과 견적 작성자를 서버가 견줘 낸다.
  5. 막히면 까닭을 보인다 — 승인은 사유 없음 말고도 문턱 미충족·검토 상태 아님으로 막힐 수 있다. 까닭이 안 보이면 사람이 같은 단추를 거듭 누른다 — 검수자가 2초 사이에 다섯 번 눌러 다섯 번 다 409 를 받은 자리다.
관련 API Swagger UI ↗
  • GET/api/es/estimates/{estimateId}createdByMe 로 본인 승인인지 가른다 (§5.4.10, #1646 신설)
  • POST/api/es/estimates/{estimateId}/approve-review — 검토 승인. 본문 { reason } 은 선택이되 본인 승인이면 필수다(없으면 422 SELF_APPROVAL_REASON_REQUIRED). 종전 409 WORKFLOW_SELF_APPROVAL_FORBIDDEN걷혔다 (#1655, §5.4.11 IF-ES-WORKFLOW-001)
  • GET/api/es/estimates/{estimateId}/status-history — 승인 줄의 본인 승인 표시를 읽는다 (§5.4.11)
상태 variant: 남의 견적을 승인할 때는 마커 2 경고가 없고 사유가 선택이다(별표 없음, 안내 문구도 없다) · 값이 안 바뀌었으면 마커 1 안내가 없다 · 사유를 비운 채 [승인] 을 누르면 422 SELF_APPROVAL_REASON_REQUIRED 가 창 안에 보인다(마커 5).
SCR-ES-004섹션 매핑 (창호일람표) /projects/:projectNo/estimates/:estimateId/drawingFigma: node 1200:4008

단계 ④ 작업대 — 상단 도면 선택 드롭다운 + 도구 툴바(자동·사각형·부호·지우개·팬·줌) 아래 창호일람표 시트를 가로 나열하고 창호 입면마다 마커(부호/수량)를 찍어 섹션 추출. 우측 섹션 작업 패널.

진입 — ES-003 [섹션 매핑] 버튼(견적 생성 직후 착지는 ES-003 — ES-002 발신 정합).

  1. 도면 선택 — 매핑 대상 도면과 변환 상태를 드롭다운으로 표시한다.
  2. 섹션 자동 인식 — 디멘션 교차를 자동 인식해 섹션 후보를 제안한다.
  3. 대조 검증 — 매핑 완료 후 대조 검증 게이트(ES-019)로 진입한다. 게이트를 통과해야 섹션 견적설계(ES-015)로 넘어간다 (ES-015 직행 없음).
  4. 도구 툴바 — 자동/사각형/부호/지우개/팬/줌 6종 도구로 마킹한다.
  5. 창호일람표 캔버스 — 여러 시트를 가로 나열하고 창호 입면마다 부호/수량 마커를 찍는다.
  6. 섹션 작업 패널 — 섹션 목록/자동 인식 제안 2탭으로 구성.
  7. 섹션 목록 표 — 부호·수량·확정 상태.
  8. 매핑 진행 요약 — 전체 도면 대비 매핑 완료 섹션 수.
관련 API Swagger UI ↗
  • GET/api/es/projects/{projectId}/drawings — 매핑 대상 도면 선택 드롭다운·변환 상태 표시
  • POST/api/es/estimates/{estimateId}/sections — 섹션 영역·부호/수량 저장 — 견적 버전 기준 경로 (도면 기준 경로가 아니다)
프로젝트  ›  미사5중학교  ›  견적설계  ›  견적 v.1  ›  섹션 매핑
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

섹션 매핑 (창호일람표)

1미사5중_프로그램용.dwg변환 완료2섹션 자동 인식3대조 검증
5창호일람표 시트 캔버스
도구: 자동 인식 · 사각형 영역 추가 · 부호 지정 · 지우개 · 팬 · 줌
자동4사각형부호지우개80%
A-201 창호일람표
AW09/1AW11/1
A-201 창호일람표
AAW01/27
A-201 창호일람표
미지정/-
JSON 25MB 첫 화면 2초 (NFR-PF-ES-001)
6섹션 작업 패널
섹션 목록자동 인식 제안
7부호수량상태
AW091확정
AW111확정
AAW0127확정
(미지정)제안
1 / 1
8매핑 진행17 섹션 / 도면 2장
견적설계 가능변환·매핑 완료 도면부터
상태 variant: empty · loading · error · converting(변환 진행 — [대조 검증] 비활성) · drawing-error(변환 실패 → ES-014 재업로드). 매핑 완료 → [대조 검증]으로 SCR-ES-019 게이트 진입 (ES-015 직행 없음).
SCR-ES-019평면도 설치위치 대조 검증 (PRC-ES-08) /…/estimates/:estimateId/crosscheck

단계 ④·⑤ 사이 게이트 — 창호일람표 매핑으로 뽑은 섹션(부호·수량)을 평면도 위 실제 설치 위치에 개소별로 직접 배치해, 부호별 배치 개수가 매핑 수량과 맞는지 검증한다. 우측에서 섹션을 고르고 평면도를 클릭하면 그 위치에 부호 태그가 추가되고, 배치/미배치 카운트가 실시간 갱신된다. 배치한 개소 위치는 실측(FS)의 입력이 된다. 진입은 SCR-ES-004 매핑 완료 후 [대조 검증] 이며(ES-015 직행 없음), 전 섹션 일치 → [견적설계 진입]. 불일치는 사유 입력 후 오버라이드(감사 로그). 이 작업은 두 시점에 할 수 있다 — 견적 단계(이 게이트)와 계약 뒤다(#844). 계약 뒤로 미루려면 오버라이드 사유 갈래를 「계약 뒤로 미룸」으로 고른다. 정본 §4.5.1 (v2.1-r65).

  1. 평면도 선택 — 진입은 SCR-ES-004 매핑 완료 후 [대조 검증]. 검증할 평면도는 이 화면 상단 드롭다운에서 고른다 (여러 장이면 도면마다).
  2. 견적설계 진입 게이트 — 전 섹션 배치=매핑(일치)일 때 활성. 통과하면 SCR-ES-004 목록에서 부호를 고른 뒤 SCR-ES-015 로 진입.
  3. 사유 입력 후 진입 (오버라이드) — 도면 오류 등으로 못 맞추면 ROLE_ES_EDITOR 가 사유를 입력해 진입. 통과자·시각·사유를 감사 로그로 남긴다.
  4. 평면도 배경·태그 배치 — 평면도(변환 JSON 벡터 절취)를 배경으로 깔고, 선택한 섹션을 실제 설치 위치에 클릭해 개소별 태그로 배치. 태그 이동·삭제. 배경·좌표계는 ES-015 §4.6.2 재사용.
  5. 섹션 목록 (배치/매핑) — 매핑 부호별 배치 개수/매핑 수량을 실시간 표시. 배치=매핑(일치)·배치<매핑(미배치)·배치>매핑(초과). 평면도 여러 장이면 창호일람표 스코프로 집계.
  6. 배치 집계·판정 — 전체 배치·미배치 잔량을 집계해 전량 배치 여부를 한눈에 확인.
  7. 계약 뒤에도 이 화면을 연다 (#844) — 견적이 만들어지는 동안에는 부호·수량이 자주 바뀌어 개소를 몇 번씩 다시 찍게 되므로, 게이트에서 사유 갈래를 「계약 뒤로 미룸」으로 골라 넘기고 계약 뒤에 한 번만 할 수 있다. 진입 자리·주소는 견적 단계와 같다(견적 상세 → 섹션 매핑 → [대조 검증]).
  8. 계약 뒤 화면 차이 (#844) — 이 그림은 설계중 상태다. 확정·계약 견적에서 들어오면 둘이 달라진다. ⓐ 상단에 「확정된 견적입니다. 개소 배치는 고칠 수 있고 매핑 수량은 고칠 수 없습니다.」 안내 띠가 뜬다. ⓑ 불일치 안내에서 「매핑으로 돌아가 수량을 바로잡으세요」를 빼고 남은 두 길만 말한다 — 개정(Rev.)을 시작하거나, 사유를 적어 넘긴다. 태그를 더 찍고 지우는 조작 자체는 그대로다.
관련 API Swagger UI ↗
  • GET/api/es/drawings/{drawingId}/crosscheck — 도면 단위 대조 검증 상태·섹션 목록(배치/매핑) 조회
  • PUT/api/es/sections/{sectionId}/crosscheck — 부호(섹션) 단위 대조 결과 갱신
  • POST/api/es/sections/{sectionId}/crosscheck/override — [게이트 통과] 오버라이드 — 사유 입력 후 감사 로그 기록
  • POST/api/es/drawings/{drawingId}/placements — 평면도 개소 태그(좌표) 추가 — 수정·삭제는 PUT·DELETE .../placements/{placementId}
  • POST/api/es/drawings/{drawingId}/crosscheck/override — 도면 한 장의 부호를 한 번에 넘기는 일괄 오버라이드. 「계약 뒤로 미룸」을 고를 때 쓴다 (#844 설계 선행 — 백엔드 미착수)
프로젝트  ›  미사5중학교  ›  견적설계  ›  견적 v.1  ›  대조 검증
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

평면도 설치위치 대조 검증

1평면도: 미사5중_평면도.dwg ▾변환 완료3사유 입력 후 진입2견적설계 진입
6미배치 5개소 — 전 섹션 배치(일치)여야 견적설계 진입. 못 맞추면 ROLE_ES_EDITOR 가 사유 입력 후 오버라이드(통과자·시각·사유 감사 로그). 부호 하나의 배치 개수는 배경 평면도 여러 장에 흩어져 있어도 합쳐 센다(#1045).
4평면도 배경 — 우측 섹션 선택 후 설치 위치 클릭 = 부호 태그 추가
변환 JSON 벡터 절취 · 줌 · 팬 · 태그 이동·삭제 · 배경·좌표계 ES-015 §4.6.2 재사용
평면도 (변환 JSON 벡터 절취 · 줌 · 팬) ◎ AW01◎ AW01◎ AD03◎ AW11 (초과) 선택 섹션: AW01 — 평면도를 클릭해 남은 3개소를 배치 (개소 태그는 이동·삭제)
5섹션 목록 (창호일람표 매핑) — 배치 / 매핑
부호배치 / 매핑상태
AW012 / 5미배치
AW090 / 3미배치
AD031 / 1일치
AW114 / 3초과
전체 배치7 / 12
미배치 잔량5
개소별 태그 좌표는 영속되어 실측(FS)이 개소 단위 실측값 입력 자료로 쓴다. 개소 좌표 레코드(section_placement)·도면 용도 구분 컬럼(drawing)은 후속 #444·#445. 진입 = SCR-ES-004 [대조 검증] · 게이트 통과 → 부호 선택 → SCR-ES-015. 작업 시점은 두 자리다 — 견적 단계(이 게이트)와 계약 뒤(#844). 두 시점이 쌓는 자료는 한 벌이고, 계약 뒤 배치를 따로 쌓지 않는다. 계약 뒤에 찍는 태그는 견적 라인이 이미 있으므로 처음 찍을 때 라인 번호(section_placement.estimate_line_id)를 바로 채운다. 정본 §4.5.1 (v2.1-r65).
SCR-ES-015섹션 견적설계 (제품 선택 → 형태대로 배치 → 규격 자동) /…/estimates/:estimateId/sections/:sectionId/designFigma: node 904:2803

단계 ⑤ 본체 — 좌측 카테고리별 제품 팔레트에서 제품 선택 → 중앙 캔버스(도면 절취 뷰·치수선·FL 기준선)에 형태대로 그려 배치 → 그린 치수에서 규격(W/H) 자동 산정. 우측 [추가된 제품] 목록에 배치 누적·선택 인스턴스 규격·OPT 슬롯. 좌측 하단 선택·편집(V·M·Del)·히스토리(⌃Z·⌃Y)·배경·정밀배치. (정본 §4.6, 2026-06-19 확정)

진입 — SCR-ES-019 대조 검증 게이트 통과 후 부호 선택 / ES-003 섹션 행 클릭(ES-004 → ES-015 직행 없음 — 게이트 경유).

  1. 제품 팔레트 — 카테고리별(커튼월=선형 / 미서기·갤러리·도어=사각) 단계 ③ 확정 제품 후보. 제품을 먼저 골라야 그리기 형태가 정해진다.
  2. 선택·편집·히스토리 — 선택(V)·이동(M)·삭제(Del)·undo(⌃Z)·redo(⌃Y). 그리기 프리미티브는 도구가 아니라 선택한 제품의 형태에서 자동 결정된다.
  3. 배경 제어 — 도면 배경 표시 토글과 투명도 조절. 배경은 도면 벡터를 Three.js 로 그리고 그 위에 SVG 오버레이를 얹는다(#845) — SCR-ES-004 가 쓰는 짜임 그대로다. 벡터는 도면 단위로 한 번 받아 두고(서버가 섹션 단위로 자르지 않는다) 섹션의 절취 사각형에 카메라를 맞춰 보여 준다. 배경 잠금은 항상 켜져 있다 — 배경이 도면 좌표계 자체라 옮기면 저장한 배치가 통째로 어긋나므로 위치 미세 조정을 없앴다. 정본 §4.6 ① (v1.7-r164). 배경 위에 이 섹션의 절취 구역을 점선으로 그린다(#1583) — 화면을 끌거나 줌하면 어느 구역이 지금 섹션이었는지 알 수 없어지기 때문이다. 옆 섹션 구역도 옅게 함께 그리고 구역 왼쪽 위에 섹션 부호를 적는다. 배치물이 실선 사각형이라 구역은 점선으로 그어 갈라 놓는다. 끄는 자리는 이 「배경」 묶음의 토글 하나이며 새 켜를 만들지 않는다(#1579 가 정한 밀도). 좌표는 겹쳐 그리는 것 모두가 쓰는 cropRectToScreenBox 하나로 얻는다 — 정본 §4.6.2 ② 「겹쳐 그리기 공통 규칙」.
  4. 정밀 배치 — 디멘션 격자(1차 스냅)·균일 그리드(fallback)·FL 기준선 흡착 옵션. 디멘션 격자 = 눈금자 경계 교차점. 섹션 가운데 선[가운데 맞춤]은 #1706 결정(R-ES015-CENTER-PLACE)이다 — 흡착선은 허용 오차 20mm 안에서 붙고, 단추는 정확히 가운데로 옮긴다. 가운데 값은 섹션 절취 사각형에서 바로 셈한다(x + w/2·y + h/2) — FL·층고·창호 중심선과 달리 배경 도면 기하가 필요 없다. 단추는 배치물을 하나 고른 때만 켠다.
  5. 칸별 세로 눈금 (칸 고르개)캔버스 아래 눈금자 조작줄의 칸 고르개(공통 · 1칸 · 2칸 …, 자리는 #1588 이 2026-09-02 에 정했다)로 칸마다 세로 나눔을 따로 적는다. 칸마다 나눔이 다른 창이 원천 여섯 세트에 창호부호로 넷 있다(수평연창 AW41B·AW42A · 도어구간 AW17 · 수직연창 CW02). 갈라 둔 칸은 캔버스 배경 표시와 고르개 이름의 점으로 드러나고, 그 칸에서는 배치 스냅·합 검산도 그 칸 눈금을 쓴다. 기본은 공통이고 칸을 하나도 가르지 않으면 종전과 똑같이 돈다.
  6. 디멘션 눈금자 + 캔버스 스테이지 — 상단 가로·좌측 세로 디멘션 눈금자(도면 DXF DIMENSION 자동추출 seed + 편집본이 정본 · 추가/삭제/편집). 가로 경계 × 세로 경계 교차점 = 1차 스냅 포인트. 도면 절취 뷰(치수선·FL 보존) 위에 제품을 교차점 사이에 걸쳐 그려 배치 → 그린 치수에서 규격(W/H) 자동 산정. 균일 20mm 그리드는 디멘션 없는 구간 fallback.
  7. 추가된 제품 목록 — 배치된 인스턴스가 제품·규격으로 누적된다. 하나 선택하면 아래에 규격·옵션 슬롯이 표시된다.
  8. 규격·옵션 슬롯 — 선택 인스턴스의 OPT-DIM(W×H)·OPT-* 값.
  9. 좌표 입력·섹션 네비 — 선택 인스턴스 X/Y/W/H 직접 입력·이전/다음 섹션 이동. 섹션을 넘기면 도면이 줌아웃되며 다음 섹션 자리로 카메라가 이동한 뒤 다시 줌인한다(#845) — 기본 500ms(줌아웃 불필요 300ms · 먼 거리 800ms), 양 끝이 완만한 3차 대칭 곡선, 줌아웃 범위는 두 절취 사각형을 함께 담는 상자 + 5% 여백, 도착 배율은 도착 사각형 + 5% 여백. 시스템이 「움직임 줄이기」면 움직이지 않고 곧바로 바꾸고 어디서 어디로 갔는지 글자로 알린다. 차례는 섹션 목록 표시순이고 경계에서 순환하지 않는다. ⚠️ 이 두 단추는 명세에만 있고 화면 코드에는 아직 없다(2026-08-05 실측). 정본 §4.6 ⑤ (v1.7-r164).
관련 API Swagger UI ↗
  • POST/api/es/estimate-lines — 캔버스 배치 저장 → 견적 라인(ESTIMATE_LINE) 생성
  • PUT/api/es/estimate-lines/{lineId} — 배치 위치·치수·옵션 수정
  • POST/api/es/estimate-lines/evaluate-preview — 배치·옵션 변경 시 실시간 중량·산출 미리보기
  • GET·PUT/api/es/sections/{sectionId}/dimensions — 디멘션 눈금자 조회·교체(IF-ES-DIMENSION-001, DE24-1 §5.4.29). GET=DXF DIMENSION 자동추출 seed + 편집본 정본 / PUT=집합 교체(추가·삭제·편집). 교차점 = 배치 스냅. 누적 경계는 서버가 spanMm 누적으로 다시 계산해 저장한다(서버 계산값이 이긴다) (as-built(구현 실측) — 서버 구현 완료 #929, 이전 파일 V329)
  • GET·PUT/api/es/sections/{sectionId}/angle-cuts — 사선창 부재별 각도 절단 조회·교체(IF-ES-ANGLECUT-001, DE24-1 §5.4.35). 우측 패널 [각도 절단] 탭의 표를 한 벌 통째로 저장한다(빈 배열을 보내면 그 부호의 각도 절단을 전부 지운다). 산식을 돌리지 않는다 — 가공도에서 옮겨 적은 절단 길이·각도를 그대로 담는다. 적힌 것이 없는 부호는 404 가 아니라 빈 목록으로 답한다(사선창이 아닐 뿐이다) (as-built(구현 실측) — 서버 구현 완료 #930, 이전 파일 V330)
  • GET/api/es/estimates/{estimateId}/palette — 좌측 제품 팔레트에 노출할 카테고리별 제품 후보 조회 (ES-018 큐레이션 결과 소비)
프로젝트  ›  견적  ›  섹션 견적설계
제품 선택 → 형태대로 그려 배치섹션 목록으로
1제품 팔레트
커튼월 (선형)
CW 노출바
미서기 (사각)
140 미서기창(V1)
갤러리·도어·기타 (사각)
교출-양개
그리기 형태는 선택 제품에서 자동 결정 (미서기·갤러리·도어=사각 / 커튼월=선)
2선택·편집
V
선택
M
이동
Del
삭제
히스토리
⌃Z
undo
⌃Y
redo
3배경
☑ 잠금
☑ 표시
투명도 ▮▬▬▬
☑ 섹션 구역
지금 섹션은 진하게 · 옆 섹션은 옅게 (#1583)
4정밀 배치
☑ 스냅
☑ 디멘션 격자 (1차)
균일 그리드 20mm (fallback)
☑ FL
☑ 섹션 가운데 선
가운데 맞춤
5디멘션 눈금자 — 캔버스 안쪽 위·왼쪽 가장자리에 겹쳐 붙는 반투명 띠(#1588 · 캔버스 밖 별도 켜가 아니다) · 도면 DXF DIMENSION 자동추출 seed + 편집본 정본 · 가로×세로 경계 교차점 = 1차 스냅 포인트 · 더블클릭 편집 · + 추가 · 선택+Del 삭제 · Alt 자유배치
칸 고르개캔버스 아래 눈금자 조작줄에 둔다(공통 · 1칸 · 2칸 · 3칸 …, 기본 공통). 얇은 띠에 들어가지 않아 2026-09-02 에 이 자리로 정했다(#1588). 칸 이름은 가로 눈금의 「칸」 구간을 왼쪽부터 센 차례이고 신축이음은 세지 않는다. [이 칸만 따로] 로 가르면 그 순간의 공통 눈금을 베껴 시작하고, [공통으로 되돌리기] 는 한 번 묻는다. 갈라 둔 칸은 캔버스 배경의 옅은 표시와 고르개 이름의 점 두 곳에서 눈에 띈다 — 그 칸에서는 배치 스냅도 그 칸의 세로 경계를 쓴다. 칸을 하나도 가르지 않으면 종전과 똑같이 돈다(단창은 이 고르개를 볼 일이 없다).
● 3칸만 따로 (400·640·140)
AW-1 (지금 섹션)
AW-2
A-01 미서기
1800×600
FL ±0 ■ 교차점 = 스냅 포인트 · 균일 그리드는 fallback
600
1200
900
900
1200
+ 눈금 추가
공통 ● 이 칸만 따로 구간을 고르면 치수·구간 종류를 고칩니다 도면 값으로 되돌리기 되돌리기 눈금자 저장
선택 제품: 미서기 · 사각 그리기 모드 background-locked · 배경 선택/이동 금지 snap: 디멘션 교차점(1차) · 갈라 둔 칸에서는 그 칸의 세로 경계 섹션 구역: 지금 섹션 진한 점선 · 옆 섹션 옅은 점선 · 확대·축소를 따라 움직인다 (#1583) 캔버스 세로 703px · 넓이 53.23% (실측 2026-09-02) — 눈금자 띠 28 은 캔버스 안이라 켜 셈에서 빼고, 캔버스 아래 눈금자 조작줄은 켜로 센다 (§4.6 ④ · #1588)
6추가된 제품 (배치 누적)
제품규격 (W×H / 길이)
A-01 140 미서기W1040 × H520
A-02 140 미서기W1040 × H520
CW 노출바L 2500
7선택 제품 규격·옵션 슬롯
OPT-DIM (W×H)1040 × 520
OPT-LAY2짝
OPT-CUT2 × 2
OPT-GLZ24mm 복층
OPT-MATAL 6063
OPT-FIN2코팅
OPT-ACC기본
취소적용
8X입력 Y입력 W입력 H입력 이전 섹션1 / 3다음 섹션
캔버스 상태 variant (Figma: node 933:11783)
background-locked · 배경 선택/이동 금지 (항상) background-hidden · 배경 숨김·배치만 검토 snap-enabled · 디멘션 교차점(1차)·FL 흡착 zooming · 포인터 기준 확대/축소 panning · 스페이스+드래그 이동 drawing · 프리미티브 그리기 중 section-travel · 섹션 전환 카메라 이동 중 frozen · 읽기 전용
좌측 카테고리별 제품 팔레트에서 제품 선택 후 형태대로 배치 (정본 §4.6, 2026-06-19 확정 — 구 '빈 프레임 그리기 → 제품 할당' 모델 폐기). 우측 [추가된 제품] 목록에 배치 누적·선택 인스턴스 규격·OPT 슬롯. 상단에 CMD+K 검색·전역 모듈 네비 없는 집중 캔버스 셸.
SCR-ES-015· 프레임 배치·선택 상태 (frame status · 계산 미리보기) §4.6 캔버스 인터랙션 명세Figma: node 917:1622 · 933:11784 · 933:11785

캔버스 상세 — 배치된 프레임의 상태(선택 / 미할당 / 완료 / 오류)를 테두리색·상태 칩으로 표시하고 다중 선택 시 선택 갯수 뱃지 노출. 프레임 선택 시 우측 제품·옵션 패널에 OPT 슬롯 값이 채워지고 하단 계산 미리보기(예상 중량) 갱신.

진입 — SCR-ES-015 캔버스에서 배치된 프레임을 선택 도구(V)로 클릭(동일 화면 내 상태 전환 — 별도 라우트 아님).

  1. 제품 팔레트 — 카테고리별(커튼월=선형 / 미서기·갤러리·도어=사각) 제품 후보. 제품 선택이 그리기 형태를 결정한다(본체 ES-015와 동일).
  2. 선택 도구(V) 활성 — 캔버스에서 배치된 프레임을 클릭 선택하는 기본 도구.
  3. 프레임 상태 칩 — 선택/미할당/완료/오류 4종 상태를 테두리·칩으로 구분.
  4. 제품·옵션 패널 — 선택한 프레임 인스턴스의 제품·규격 값이 채워진다.
  5. 옵션 슬롯 값 — 선택 인스턴스의 OPT-* 값(다중 선택 시 공통 슬롯만 일괄 적용).
  6. 계산 미리보기 — 선택 인스턴스의 예상 중량을 실시간 재평가.
  7. 적용/취소 — 옵션 변경을 확정하거나 되돌린다.
관련 API Swagger UI ↗
  • PUT/api/es/estimate-lines/{lineId} — 선택 인스턴스 이동·리사이즈·옵션(OPT-*) 변경
  • POST/api/es/estimate-lines/evaluate-preview — 옵션 변경 시 계산 미리보기(예상 중량) 재평가
  • POST/api/es/estimates/{estimateId}/sections/bulk-change — 다중 선택 시 공통 옵션 슬롯 일괄 적용 (§4.6.1 ③ 정책)
프로젝트  ›  견적  ›  섹션 견적설계 섹션 목록으로
1제품 팔레트
커튼월 (선형)
CW 노출바
미서기 (사각)
140 미서기창(V1)
갤러리·도어·기타 (사각)
교출-양개
선택·편집
2
V
선택
M
이동
Del
삭제
히스토리
⌃Z
undo
⌃Y
redo
정밀 배치
☑ 스냅
☑ FL
도면 절취 뷰 · 배치된 프레임의 상태(선택 / 미할당 / 완료 / 오류)를 테두리·칩으로 표시
3
선택A-01 140 미서기창2분할 · W 268 / H 190↻ 회전 · 🔒 · ☑
미할당배치
완료A-01 140 미서기창
오류A-01 140 미서기창
frame status = 선택 · 미할당 · 완료 · 오류 (테두리색 구분) · 선택 갯수 뱃지: 다중 선택 시 "N개 선택".
제품·옵션 (단일 선택)
A-01 / 3개 중 1
4140 미서기창 (V1)
OPT-DIM (W×H)W 268 / H 190
5옵션 슬롯
OPT-LAY2짝
OPT-CUT2 × 2
OPT-GLZ24mm 복층
OPT-MATAL 6063
OPT-FIN2코팅
OPT-ACC기본
6계산 미리보기
제품A-01 140 미서기창
치수W 2680 / H 1900
옵션2Track · 복층유리 · 실버
예상 중량34.71 kg
취소7적용
인스턴스 선택 → 옵션 편집·계산 미리보기 (§4.6.1 정본). 좌측 상단 제품 팔레트에서 제품 선택 후 형태대로 배치하고(본체 ES-015), 선택 도구(V)로 배치된 인스턴스를 골라 우측 OPT 슬롯·계산 미리보기(예상 중량)를 편집한다. 인스턴스 다중관리(선택·이동·회전·복제·z-order·그룹). 상태: background-locked · snap-enabled · zooming · panning · drawing · frozen.
SCR-ES-015· 눈금자 확대·축소 (자와 그림이 함께 움직인다) §4.6.2 ③ 눈금자 줌·팬 대응

눈금자가 캔버스와 같은 카메라를 따르는 모습 두 가지. 확대하면 눈금 간격이 그림과 같은 비율로 커지고 끌면 함께 밀린다. 많이 축소해 라벨이 들어갈 자리가 없으면 그 라벨만 감추고 경계선은 남긴다. 기존(레거시) 시스템 관례를 그대로 따른다 — 얇은 띠 한 줄 · 나눈 치수만 · 구간 끝 세로선. (정본 §4.6.2 ③ 결정 상자, #1587)

진입 — SCR-ES-015 캔버스에서 휠·핀치로 확대·축소(같은 화면 안의 상태 바뀜 — 따로 난 주소가 아니다).

  1. 눈금자 띠캔버스 안쪽 위 가장자리에 겹쳐 붙은 얇은 띠(세로 자는 안쪽 왼쪽 가장자리). 캔버스 밖 별도 켜가 아니고, 캔버스를 가리지 않게 반투명 바탕을 쓴다(#1588, 정본 §4.6.2 ③ 결정 상자 「눈금자 띠는 캔버스 안쪽 가장자리에 겹쳐 붙인다」). 나눈 치수만 적는다(900 │ 900 │ 1200) — 전체 치수(3,000)는 눈금자에 올리지 않는다. 화면에 고정하는 것은 띠가 놓이는 가장자리뿐이고 띠 안의 눈금 경계·구간 폭은 고정하지 않는다.
  2. 구간 끝 세로선 — 고른 구간의 좌우 끝에 캔버스를 가로지르는 세로선을 세워 도면 어디인지 못박는다. 띠만으로는 그 구간이 도면 어디인지 짚지 못한다.
  3. 확대하면 함께 커진다 — 눈금 간격이 그림과 같은 비율로 커지고, 끌면 함께 밀린다. 배치물 흡착이 이 경계를 따르므로(#1516) 자와 그림이 어긋나 보이면 어디에 붙을지 눈으로 가늠할 수 없다.
  4. 좁아지면 라벨만 감춘다 — 구간의 화면 폭이 라벨 글자 폭보다 좁으면 그 구간의 라벨만 감추고 경계선은 남긴다. 경계가 스냅 자리를 말하므로 지우면 자로서의 뜻이 사라진다. 겹쳐 그리거나 돌려 쓰거나 줄여 쓰지 않는다 — 치수는 숫자라 잘못 읽으면 틀린 값을 그대로 믿는다. ✅ 기존 시스템의 축소 모습은 끝내 확인하지 못했으나 까닭이 그 자체로 서서 기획자가 이대로 정했다(§4.6.2 ③, v2.1-r173). 라벨이 하나도 안 보이는 상태도 정상이다 — 경계선이 남아 자리는 보이고 확대하면 값이 돌아온다. 다만 띠의 배경과 경계선은 늘 그린다(눈금자가 있다는 것 자체는 보여야 한다).
  5. 편집 중에도 끊기지 않는다 — 구간을 고치는 중에 줌·팬을 해도 편집이 유지되고 편집 상자가 그 구간을 따라 움직인다. 고치던 구간이 화면 밖으로 밀리면 상자를 화면 가장자리에 붙여 둔다.
눈금자 확대·축소 — 같은 섹션, 배율만 다르다
3모습 A — 기본 배율 · 라벨 셋이 모두 보인다
A-01 미서기 1800×600
600
1200
900
900
1200
구간 끝 세로선이 도면 자리를 못박는다 — 띠 안의 눈금 경계와 캔버스를 가로지르는 선이 같은 자리다. 구간이 넓어 라벨 셋이 모두 들어간다.
4모습 B — 많이 축소 · 좁은 두 구간은 라벨을 감추고 경계선만 남긴다
1200
눈금 간격이 그림과 같은 비율로 줄었다 — 자와 그림이 함께 움직인다. 자리가 좁아진 라벨은 감췄고, 경계선은 그대로 남아 스냅 자리를 알린다.
눈금자도 ViewportState 를 읽는다 — 정본 §4.6.2 ② 겹쳐 그리기 공통 규칙 전체 치수(3,000)는 눈금자에 올리지 않는다 — 나눈 치수만 라벨이 하나도 안 보이는 상태도 정상 — 경계선이 자리를 남긴다 (§4.6.2 ③, v2.1-r173)
SCR-ES-018제품 팔레트·라이브러리 /projects/:projectNo/estimates/:estimateId/palette표준

단계 ③↔⑤ 연결 보조 — 이 견적 버전이 캔버스에서 쓸 제품 후보를 카테고리별로 정리하고 팔레트 노출 여부·표시 순서·카테고리 배치를 큐레이션. 결과가 ES-015 좌측 팔레트에 주입. (마스터는 PM 정본, 읽기만)

진입 — SCR-ES-003(§4.4) [제품 후보 변경] / SCR-ES-015(§4.6) 좌측 제품 팔레트 헤더 [라이브러리 관리].

  1. 카테고리 트리 — ASIS 7분류(선형/사각 그리기 도구 팔레트 분류) 노출축.
  2. 후보 목록 — PM 4축 필터(형식·등급·형태·검색)를 재활용해 후보를 정렬·검색.
  3. 팔레트 노출 토글 — ON/OFF로 캔버스 팔레트 표시 여부를 제어.
  4. 선택 제품 큐레이션 — 선택한 후보의 분류 경로·카테고리를 확인.
  5. 캔버스 팔레트 노출 — 이 후보를 ES-015 팔레트에 노출할지 개별 토글.
  6. 큐레이션 저장 — 노출/순서/카테고리 설정을 저장하고 ES-015 팔레트에 반영.
  7. 캔버스로 이동 — 큐레이션 결과를 확인하며 섹션 견적설계(ES-015)로 이동.
관련 API Swagger UI ↗
  • GET/api/pm/products — 형식·등급·형태 4축 분류·검색으로 후보 라이브러리 조회 (SCR-PM-010 재활용)
  • GET/api/es/estimates/{estimateId}/palette — 이 견적 버전의 팔레트 노출·순서·카테고리 큐레이션 조회
  • PUT/api/es/estimates/{estimateId}/palette — [큐레이션 저장] — 노출 ON/OFF·순서·카테고리 저장 및 ES-015 팔레트 반영
프로젝트  ›  미사5중학교  ›  견적설계  ›  견적 v.1  ›  제품 팔레트·라이브러리
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

제품 팔레트·라이브러리

제품 후보 추가 (ES-003 모달)7캔버스로 (ES-015)
1카테고리 (ASIS 7분류 — 노출축)
커튼월 (선형)
◉ 미서기 (사각)
갤러리 (사각)
프로젝트류 PJ·PD·CM·대피창
교출 (사각)
도어 (사각)
기타
2후보 목록 — 순서 · 팔레트 노출 (PM 4축 필터 재활용)
코드/제품명/modelCode 검색형식: 전체등급: 전체형태: 전체
순서제품코드제품명카테고리3팔레트 노출
1 ▲▼DHS-AE225-D-1미서기 이중창미서기ON
2 ▲▼교출-양개140 행거 교실출입문교출ON
3 ▲▼CWU-AL-1커튼월 프레임커튼월OFF
1
4선택 제품 — 큐레이션
제품DHS-AE225-D-1 미서기 이중창
카테고리미서기 (사각 그리기)
분류 경로미서기 > 마스 > 2×2 연창
5캔버스 팔레트 노출
카테고리미서기
취소6큐레이션 저장
노출축 = ASIS 7카테고리(도구 팔레트 분류). 형식축(class_l1 미서기·커튼월 2종)은 PM 정본 불변. 상태 variant: frozen(견적 확정 후 읽기 전용)
SCR-ES-005BOM 구성·라인 확정 /…/estimates/:estimateId/lines/:lineId/bomFigma: node 1229:8065

단계 ⑥ — 견적 라인 1건의 BOM 자동 구성 결과를 검토하고 라인 확정 트리거. 좌측 좁은 입력(치수 값·옵션·자동 산출 규칙) + 우측 넓은 자재 구성/공정·제조비/평가 로그 탭.

진입 — ES-003 섹션 행 [BOM] / ES-015 [BOM 구성].

  1. 재평가(미리보기) — DB 쓰기 없이 RuleEngine으로 현재 입력값을 재평가.
  2. 라인 확정 — RESOLVED_BOM을 정식 생성하고 입력을 잠근다.
  3. 치수 값·옵션 — 제품·W×H·옵션·옵션 해시 입력값.
  4. 자동 산출 규칙 적용 — 미서기 보강·트랜섬 절단·특주 오버레이 적용 내역.
  5. 결과 탭 — 자재 구성/공정·제조비/평가 로그 3탭.
  6. 자재 구성 표 — 원자재·부자재·공정별 규격·수량·단가·소계.
  7. 합계와 검증 — 자재비 합계와 검증 경고 건수.
관련 API Swagger UI ↗
  • GET/api/es/estimate-lines/{lineId} — 라인 입력값(치수·옵션)·자동 산출 규칙 적용 내역 조회
  • POST/api/es/estimate-lines/evaluate-preview — [재평가(미리보기)] — DB 쓰기 없는 RuleEngine 평가
  • POST/api/es/estimate-lines/freeze — [라인 확정] — RESOLVED_BOM 정식 생성
  • GET/api/es/estimate-lines/{lineId}/resolved-bom — 확정된 resolvedBomId·자재 구성 조회
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적 버전 상세  ›  섹션 허브  ›  BOM 구성·라인 확정
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

BOM 구성 · 라인 확정

미확정1재평가 (미리보기)2라인 확정
3치수 값 · 옵션
제품DHS-AE225-D-1 (sbv3)
W × H (mm)15001200
옵션유리: 복층 24T / 색상: WH
옵션 해시a3f9…
4자동 산출 규칙 적용
미서기 보강중부 가이드 레일 (1200~1600 구간)
트랜섬 절단해당 없음 (미서기 — 커튼월 전용)
특주 오버레이scopeType=ESTIMATE 1건
5자재 구성공정·제조비평가 로그
구분6자재규격수량단가소계
원자재UNI-A225-101절단 1480mm × 44준비 중준비 중
부자재DH-5555-1 가네고9mm4준비 중준비 중
부자재01-0059 피스8×1316준비 중준비 중
공정조립1준비 중준비 중
7자재비 합계 준비 중 · 검증 경고 0건
단가·소계·자재비 합계는 Phase 1 금액 숨김(#522)으로 「준비 중」이다 — 칸 구조는 그대로 두고 값만 가린다. 적는 말은 DE22-1 §08 §4.2 R-ES-AMOUNT-PLACEHOLDER 가 정본이다(#1084).
라인 확정 성공 시 resolvedBomId(RBOM-…-ELn) 표시 + frozen 전환. 상태 variant: empty · loading · error · frozen(입력 잠금) · freeze-conflict(재확정 거부).
SCR-ES-006산식 결과 검토 /…/estimates/:estimateId/derivationsFigma: node 1270:6208

자동 산출 4종(롤방충망·미서기 보강·구조검토·트랜섬 절단)의 산출 근거를 견적 단위로 검토(라인 필터). 좌측 여유율 입력·절단 조합 표 + 우측 낭비 시각화·요약. 구조검토 '오류'는 ES-005 라인 확정 차단과 연동.

진입 — SCR-ES-005 [평가 로그] 탭 심화 / ES-003 하단 [산식 검토(ES-006)] / ES-015 헤더 [산식 검토(ES-006)] / 검토 단계 진입(발신 상호 인정). 지진 계수 두 칸(#609)은 이 화면 안 [구조검토] 탭에서만 연다 — 별도 진입점을 두지 않는다.

  1. 구조검토 상태 배지 — 현재 라인의 구조검토 경고/오류 건수.
  2. 라인 확정 차단 안내 — 구조검토 '오류' 판정 라인은 ES-005 라인 확정이 차단됨을 안내. 그 아래에 「미판정」 안내가 따로 선다 (#1455 확정) — 판정하지 못한 라인 수(notEvaluatedCount, DE24-1 §5.4.20)가 0 이 아니면 뜬다. 확정 문구는 「이 견적에는 아직 판정하지 못한 라인이 {N}건 있습니다 — 오류·경고 건수에 세지 않은 라인이라 통과한 것이 아닙니다. 구조검토 탭의 「사유 / 권고」 칸에서 무엇이 없어 판정하지 못했는지 확인하세요.」 다. 「오류 0 · 경고 0」에 기대어 쓰지 않는다 — 오류가 있는 견적에도 판정 못 한 라인이 함께 있을 수 있어 그렇게 적으면 거짓이 된다. 이 알림은 라인 확정을 막지 않는다(#609 D4). 오류가 0건일 때의 안내는 「확정이 가능하다」고 말하지 않는다 (#1456 ②) — 확정에는 라인 상태·치수 입력·권한 같은 조건도 걸려 이 화면이 알 수 없다.
  3. 산출 4종 탭 — 롤방충망/미서기 보강/구조검토/트랜섬 절단.
  4. 조정 칸 세 개 — 사용자가 조정한다 (#609 · #1495 확정)구조검토 탭 머리, 판정 결과 표 에 조정 칸 셋을 둔다. 풍 하중계수(기본값 0.65) · 지진 하중계수(기본값 0.70) · 비구조요소 가동중량 Wp(기본값 0.50 kN/㎡)이고 셋 다 0.01 단위로 올리고 내린다. 풍과 지진을 계산 축으로 갈라 묶는다 — 한 줄에 섞으면 어느 값이 어느 계산에 드는지 흐려진다. 받는 범위가 칸마다 다르다 — 풍 0.65~1.00 · 지진 0.70~1.00 · 가동중량 0.01~10.00. 하중계수 둘은 양끝 다 KDS 41 12 00 이 준다(§1.7.2 허용응력 0.65W·0.7E · §1.7.1 강도 1.0W·1.0E) — 기본값이 곧 하한이라 둘 다 위로만 움직인다. 가동중량 상한만 임의 울타리다. 진입은 이 화면의 [구조검토] 탭 하나뿐이다 — 값을 바꾸는 자리와 결과를 보는 자리가 붙어 있어야 바꾸고 [재평가] 를 눌러 판정이 어떻게 달라지는지 곧바로 본다. 다른 탭(롤방충망·미서기 보강·트랜섬 절단)은 지진과 무관해 이 칸을 두지 않고, 이 값을 넣으러 가는 별도 화면도 만들지 않는다. 두 값의 근거를 발주처에 물었으나 받지 못해(3차 질의서 A-1·A-5) 원천 실측값을 기본값으로 두고 바꿀 수 있게 한 것이다. 계약은 DE24-1 §5.4.20 이다.
  5. 쓴 값이 판정에 남는다 (#609 확정) — 판정 결과 표에 그 라인이 실제로 쓴 두 값을 열로 세우고, 기본값과 다르면 「사유 / 권고」 칸에 무엇을 얼마로 바꿨는지 적는다. 가로재(트랜섬)·히든바는 「미판정」이다 — 자료를 못 받아서가 아니라 발주처가 정한 검토 범위가 멀리언(세로재)뿐이기 때문이다(A-4 회신, 2026-08-26). 사유 칸에 그렇게 적는다.
  6. 여유율 재계산 — 여유율 값을 조정하고 재계산.
  7. 절단 조합 표 — 규격별 필요 수량·롤 기준 길이·중량·낭비율.
  8. 낭비 시각화 — 롤 길이별 절단 배치와 낭비율을 막대로 표시.
  9. 산식 요약 패널 — 보강·구조검토·트랜섬 절단 결과와 구조검토가 확정을 막는지 여부 (#1456 ② — 「라인 확정 가능」으로 적지 않는다. 확정에는 이 화면이 알 수 없는 조건도 걸린다).
관련 API Swagger UI ↗
  • POST/api/es/estimate-lines/evaluate-preview — [재계산]/[재평가] — 여유율·자동 산출 규칙 재적용
  • GET/api/es/estimates/{estimateId}/derivations — 롤방충망 합산·구조검토 등 견적 단위(다섹션 집계) 산식 결과 조회 (재평가는 POST .../derivations/evaluate)
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  산식 결과 검토
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

산식 결과 검토

라인 전체1구조검토: 경고 1건BOM 구성으로 (ES-005)재평가
2구조검토 오류 0건 · 경고 1건. 구조검토는 라인 확정을 막지 않습니다. 확정에는 라인 상태·치수 입력·권한 같은 조건도 함께 걸리므로 라인 확정은 SCR-ES-005 에서 확인하세요. 경고는 스펙 범위를 넘은 특주 가능 조합이라 확인 후 진행하세요. (#1456 ② 확정 문구 · 오류가 있으면 이 자리에 차단 안내가 대신 선다)
2이 견적에는 아직 판정하지 못한 라인이 2건 있습니다 — 오류·경고 건수에 세지 않은 라인이라 통과한 것이 아닙니다. 구조검토 탭의 「사유 / 권고」 칸에서 무엇이 없어 판정하지 못했는지 확인하세요. (#1455 확정 문구 · 미판정이 0건이면 이 줄은 뜨지 않는다 · 라인 확정을 막지는 않는다)
3롤방충망미서기 보강구조검토트랜섬 절단
2020표준 롤: 1800/1200/900mm4재계산동일 규격 섹션 합산1
5규격 H×W (mm)필요 수량롤 기준 길이중량 (kg)낭비율
1220×15202 — WD-A-001·002 합산1800mm 롤 · 3.1m8.69.7%
1120×9204 — WD-B-001 외 합산1200mm 롤 · 3.7m9.46.7%
870×6201 — WD-C-003900mm 롤 · 0.7m1.23.3%
6낭비 시각화
롤 높이별 절단 배치
합계 낭비율 7.2% · 최적 절단 조합 적용
1800
1200
900
7미서기 보강중부 가이드 레일 (1200~1600 구간)
구조검토OK 11 · 경고 1 · 오류 0
트랜섬 절단중간 1,100mm × 2본 · 외곽 2,380mm × 2본 (공차 ±1mm)
구조검토가 확정을 막는가아니오 (오류 0건) — 확정 여부는 ES-005 에서 확인
구조검토 탭 (#609 · #1495 확정)재평가
10풍 하중계수 0.65 기본값 0.01 단위 · 0.65 ~ 1.00 (KDS 41 12 00 §1.7.2 — 허용응력 0.65W · §1.7.1 강도 1.0W)
지진
10지진 하중계수 0.70 기본값 0.01 단위 · 0.70 ~ 1.00 (KDS 41 12 00 §1.7.2 — 허용응력 0.7E · §1.7.1 강도 1.0E)
10비구조요소 가동중량 Wp 0.85 kN/㎡ · 0.01 단위 · 0.01 ~ 10.00 (실무 0.3~2.0)
풍과 지진을 계산 축으로 갈라 묶는다 — 한 줄에 섞으면 어느 값이 어느 계산에 드는지 흐려지고, 판정 결과 표도 이미 두 축으로 값을 보인다. 받는 범위가 칸마다 다르다하중계수 둘은 국가 기준이 양끝을 준다(같은 §1.7.2 허용응력 · §1.7.1 강도). 가동중량 상한만 임의로 정한 울타리다 — 하중계수가 아니라 패널 무게라 하중조합과 무관하다. 풍 칸은 기본값이 곧 하한이라 위로만 움직인다 — 더 엄하게 볼 수는 있어도 국가 기준보다 무르게 볼 수는 없다. 처음에는 기본값이 채워져 뜨고 옆에 「기본값」 딱지가 붙는다 — 사람이 바꾸면 딱지가 사라진다(위 Wp 줄이 바꾼 모습이다). 범위를 벗어나면 [재평가] 를 잠그고 칸 아래에 받는 범위를 적는다. 0 을 받지 않는 것이 이 잠금의 핵심이다 — 0 이면 지진축 하중이 통째로 사라져 판정이 늘 통과로 나오는데 화면에는 아무 표시가 없다.
11라인판정쓴 풍 계수쓴 지진 계수쓴 Wp사유 / 권고
AW-1-01 멀리언OK0.650.700.50
AW-1-07 멀리언경고0.800.700.85풍 하중계수를 0.80 으로(기본값 0.65) · 가동중량을 0.85 로(기본값 0.50) 조정해 판정했습니다 · 기본 두께(계열 최소)로 판정함
AW-2-03 히든바미판정멀리언만 검토하는 범위라 판정 대상이 아닙니다(히든바 계열)
바꾼 값이 판정에 남는다 — 기본값과 다른 값으로 판정하면 그 라인의 「사유 / 권고」 칸에 무엇을 얼마로 바꿨는지 적히고, 표에 그 라인이 실제로 쓴 세 값이 열로 선다. 기본값 그대로면 적지 않는다(모든 줄에 같은 말이 붙으면 읽히지 않는다). 「누가 어떤 값으로 통과시켰나」가 남지 않으면 구조검토 기록으로서 쓸모가 없다.
상태 variant: empty · loading · error · frozen(라인 확정 시 여유율 입력·재계산 잠금).
SCR-ES-007섹션 일괄 변경 /…/estimates/:estimateId/bulkFigma: node 1431:9590

ES-003 에서 인계받은 섹션 집합에 동일 변경(제품·치수·옵션)을 4단계 스텝퍼(대상 확인 → 변경 입력 → 검증·미리보기 → 적용)로 적용. 전건 검증 통과 후에만 단일 트랜잭션 일괄 UPDATE(all-or-nothing).

진입 — SCR-ES-003 선택 후 [일괄 변경].

  1. 스텝퍼 — 대상 확인→변경 입력→검증·미리보기→적용 4단계 진행을 표시.
  2. 대상 확인 — 일괄 변경 대상 섹션 집합(존·제품 조건)을 확인.
  3. 변경 항목 — 이번에 적용할 변경 내용(예 W×H 값)을 표시.
  4. 검증 결과 표 — 대상 전건의 개별 검증 통과 여부.
  5. 적용 — 전건 검증 통과 시에만 단일 트랜잭션으로 일괄 반영(all-or-nothing).
관련 API Swagger UI ↗
  • POST/api/es/estimates/{estimateId}/sections/bulk-change — 전건 검증 + 일괄 변경(change-set 이력 — 이력 조회는 GET .../change-sets, 사전 확인은 .../bulk-change/preview)
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적 버전 목록  ›  견적(버전) 상세 - 섹션 허브  ›  섹션 일괄 변경
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

섹션 일괄 변경

검증 실패 1건
1① 대상 확인② 변경 입력③ 검증·미리보기④ 적용

2대상 12섹션 (존: B, 제품: DHS-AE160-D-1) [1]
3변경 항목: W×H 1200×900 → 1400×1100
부호항목변경 전변경 후4검증
WD-B-001W×H1200×9001400×1100통과
WD-B-003W×H1200×9001400×1100통과
WD-B-007W×H1200×9001400×1100치수 범위 초과 — 1300×1000 이하로 수정
… 외 9건W×H1200×9001400×1100통과
1건이라도 실패 시 전체 미적용 (all-or-nothing) — 입력을 수정한 뒤 재검증하세요.
이전5적용
③ 검증·미리보기 시점 예시 — WD-B-007 치수 범위 초과 1건으로 [적용] 비활성(§4.9). 상태 variant: empty · loading · 전건 통과(적용 활성) · error(검증 위반 — 실패 행 강조 + all-or-nothing 배너) · error(시스템 오류) · freeze-conflict(낙관적 락 충돌). 일괄변경 1회당 change_set_id 단일 history.
SCR-ES-016단가·할증·공차 설정 /…/estimates/:estimateId/pricing표준Figma: node 1523:5178

단계 ⑥ 검토 — 위쪽 3분할(좌 섹션(부호×수량) · 중 부재 그룹별 중량 표 + 제목 줄의 제품 고르는 칸 · 우 제품 견적 내역 + 비율 3칸)과 아래쪽 할증 항목 표·치수 공차 표. 상단 배지는 이 제품에 연결된 조달계약 물품식별번호를 보여준다. 저장은 보낸 목록으로 전부 갈아끼우는 방식이라 표에서 행을 빼는 것이 곧 삭제다. 가격 계층은 BOM 산출 계층과 분리(RESOLVED_BOM 무변경).

진입 — SCR-ES-003 하단 후속 분기 / 단계 6 검토.

  1. 저장하기 — 화면의 값을 한 번에 저장한다. 별도 [적용하기] 버튼은 없다.
  2. 세 영역의 조회 — 섹션 목록은 섹션 목록 조회, 부재 그룹별 중량은 확정 자재 구성표 조회, 제품 견적 중량은 견적 합계 조회로 그린다. 셋 다 실제 조회다.
  3. 설정 — 비율 3칸 — 시공비율·기타비율·마진율이 계약 IF-ES-PRICING-001 이 주고받는 값이다.
  4. 설정 — 조건부 2칸 (as-built #1740·#1741, 2026-09-03) 제품 단가·단가 조정 두 칸은 계약 IF-ES-PRICING-001 에 자리가 생겨 커튼월 라인이 하나라도 있는 견적에서 열린다(R-ES016-PRICE-MODEL, #1718 결정). 곱한 값은 끝값이 아니라 자재비 자리로 들어가고 시공·기타·마진 비율이 그 위에 붙는다. 커튼월 라인이 없으면(또는 못 읽었으면·제품 0건이면) 잠근 채 까닭을 문장으로 보인다. 제작 공차·단위 중량 두 칸은 화면에서 뺐다 — 공차(lossRate)가 부재마다 이미 곱해져 있어 화면에서 또 곱하면 같은 5%가 두 번 붙고, 단중은 자재 마스터가 정본이다. 나머지 제품군도 정해졌다 — 모두 중량 기반이고, 가르는 축은 제품군이 아니라 조달(관급) 여부다(#1739 결정 · 서버 반영 #1778). ⚠️ 지금 배포된 화면은 아직 옛 축(대분류 커튼월)으로 잠가 있고 그 반영은 후속 #1788 이다.
  5. 할증 항목 표 — 입력 방식에서 비율·금액을 고르면 값 칸을 하나만 받는다. 표에서 행을 빼는 것이 곧 삭제다.
  6. 치수 공차 표 — 치수 구분은 견적 라인의 치수 변수 이름(W·H)이다.
  7. 중량화 항목 분기 — 금액 가산(방충망·하드웨어·장비비)과 중량 환산(시트·보강)으로 나뉜다.
  8. 제품 고르는 칸 — 가운데 표는 제품(견적 라인) 한 건의 부재를 보여 주므로 제목 줄에서 제품을 고른다. 한 줄에 순번·제품명·확정 여부를 적는다. 라인이 한 건이면 자동으로 고르고 여러 건이면 사람이 고른다. 주소로 바로 열리는 검토 화면이라 진입 순간 선택 창을 띄우지 않는다(§4.7 이동 규약과 갈리는 자리다).
  9. 표를 비워 두는 두 경우 — 아직 고르지 않았으면 「제품을 선택하면 부재별 중량이 표시됩니다.」, 미확정 라인을 골랐으면 「라인을 확정하면 부재별 중량이 표시됩니다.」로 안내한다. 미확정 라인은 확정 자재 구성표가 아직 없어 조회하지 않는다.
관련 API Swagger UI ↗
  • GET/api/es/estimates/{estimateId}/sections — 좌측 섹션(부호 × 수량) 목록 조회
  • GET/api/es/estimate-lines?estimateId={estimateId} — 제품 고르는 칸에 담을 견적 라인 목록 조회 (순번·제품명·확정 여부)
  • GET/api/es/estimate-lines/{lineId}/resolved-bom — 부재 그룹별 중량 표 데이터 조회. 고른 라인이 확정 상태일 때만 부른다
  • GET/api/es/estimates/{estimateId}/summary — 우측 제품 견적 중량 조회
  • GET/api/es/estimates/{estimateId}/pricing — 저장돼 있는 비율 3종·할증 목록·공차 목록에 더해 제품 단가·단가 조정(#1740 as-built) 조회
  • PUT/api/es/estimates/{estimateId}/pricing — [저장하기] — 시공비율·기타비율·마진율·제품 단가·단가 조정과 할증·공차 목록 저장. 보낸 목록으로 전부 갈아끼운다
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적 버전 목록  ›  견적(버전) 상세  ›  단가·할증·공차 설정
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

단가·할증·공차 설정

조달계약 — 물품식별번호 253047801저장하기
2섹션 (부호 × 수량)
부호수량
AW091
AW121
AAW0127
부재 그룹별 중량81. 140 미서기창(V1) (확정) ▾
그룹부재명길이수량단중중량
프레임140 잔넬프레임180023.40912.27
프레임140 잔넬중간프레임180012.093.76
부자재프레임 가네고41.21
9아직 고르지 않았거나 미확정 라인을 고르면 표 자리에 안내 한 줄만 띄운다.
제품 견적 내역
제품 견적 중량7,406.370 kg
제품 견적 금액준비 중
3설정 (가격 계층 — BOM 무변경)
시공비율 (%)12
기타비율 (%)3
마진율 (%)10
4커튼월 라인이 하나라도 있으면 아래 두 칸이 열린다(#1718 결정 · #1740·#1741 as-built). 없으면 잠긴 채고 까닭이 보인다.
제작 공차·단위 중량 두 칸은 화면에서 뺐다 — 공차는 자재 구성표가 부재마다 반영하고, 단중은 자재 마스터 값을 쓴다.
제품 단가 (원/kg)19,500
단가 조정 (계수)1
5할증 항목
항목 코드항목 라벨입력 방식삭제
NIGHT_SHIFT야간 작업 할증비율5삭제
TRANSPORT운반비금액1,200,000삭제
항목 추가
6치수 공차
치수 구분공차 (mm)삭제
W2삭제
H2삭제
항목 추가
7중량화 항목은 금액 가산(방충망·하드웨어·장비비)과 중량 환산(시트·보강)으로 나뉜다.
상태 variant: empty(할증·공차 미등록) · loading · error · 조회 전용(편집 권한 없음) · 저장 중.
SCR-ES-009견적서 미리보기 /…/estimates/:estimateId/previewFigma: node 1541:7727

엑셀 출력 전 최종 검토 — 좌측 조달 서식 5시트 탭(겉지·조달요청서·부호별 구매내역·제품별 중량산출·견적 합계) 그리드 미리보기 + 우측 합계와 검증(산식 합계·중량 합산·미확정 경고). A4 PDF 아님.

진입 — SCR-ES-003 [견적서 미리보기].

  1. 엑셀 출력으로 이동 — 검토를 마치면 견적서 출력(ES-010)으로 이동.
  2. 5시트 탭 — 겉지·조달요청서·부호별 구매내역·제품별 중량산출·견적 합계.
  3. 시트 그리드 미리보기 — 선택한 시트의 실제 셀 값을 표로 미리 확인.
  4. 시트 새로고침 — 최신 데이터로 시트를 다시 불러온다.
  5. 합계와 검증 패널 — 자재비·시공비·기타비용·부가세·총 견적액.
  6. 중량 합산 검증 배지 — 부호별 중량 합산과 물품식별번호 중복 여부 검증 결과.
관련 API Swagger UI ↗
  • GET/api/es/estimate-lines/{lineId}/resolved-bom — 부호별 구매내역 시트에 표시할 확정 자재·수량·금액 조회
  • GET/api/es/estimates/{estimateId}/quote-sheet — 조달 서식 5시트 미리보기 데이터 조회 (합계·중량 검증은 GET .../summary 병용)
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적(버전) 상세 - 섹션 허브  ›  견적서 미리보기
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

견적서 미리보기

검토중1엑셀 출력으로 (ES-010)
엑셀 시트 미리보기
조달 서식 엑셀 시트를 탭으로 확인하고 합계와 중량 검증을 점검합니다. 조달 서식 · 출력 xlsx와 동일한 5개 시트 구성.
2겉지조달요청서부호별 구매내역제품별 중량산출견적 합계
시트: 부호별 구매내역열·셀 단위 미리보기 · 물품식별번호 포함100%4시트 새로고침
부호제품규격수량단가금액3물품식별번호
WD-A-001U-P-CW151H-3커튼월 151H · 3중12₩ 842,000₩ 10,104,000P-2026-001
WD-A-001U-P-CW151H-3커튼월 151H · 3중12₩ 842,000₩ 10,104,000P-2026-001
WD-A-001U-P-CW151H-3커튼월 151H · 3중12₩ 842,000₩ 10,104,000P-2026-001
WD-A-001U-P-CW151H-3커튼월 151H · 3중12₩ 842,000₩ 10,104,000P-2026-001
1 / 2
겉지=발주처·견적번호 / 조달요청서=조달청 양식 / 제품별 중량산출=부호별 합산 검증
5합계와 검증
FR-ES-016 산식 · FR-ES-021 중량 합산
자재비₩ 100,000,000
시공비₩ 20,000,000
기타비용₩ 8,400,000
소계₩ 128,400,000
공급가액 (원가+마진+할증)₩ 141,240,000
부가세 (VAT 10%)₩ 14,124,000
총 견적액 (VAT 포함)₩ 155,364,000
6중량 합산 검증 통과 — 24/24 부호 · 식별번호 중복 없음
미확정 라인 12건 — 전 라인 확정 전에는 견적 확정 불가
Figma 대비 DE22-1 차이: 시트 미리보기가 이미지 placeholder 아닌 실제 그리드 표(부호·제품·규격·수량·단가·금액·물품식별번호). 상태 variant: empty · loading · error · unfrozen warning(미확정 라인 경고) · weight fail(중량 합산 불일치).
금액 표기 (#1126) — 이 화면의 금액은 가리지 않는다. 다른 견적 화면이 금액을 「준비 중」으로 가리는 것과 다르다. 여기 금액은 자재 단가에서 그때그때 뽑는 값이라 실제로 나오고, 화면과 서버가 이미 그 값을 그리며, 같은 값이 출력 xlsx 로 발주처에 나간다. 미리보기만 가리면 미리 본 것과 나간 것이 달라져 미리보기 구실을 못 한다. 가릴지 말지는 「밖으로 나가는 문서인가」가 아니라 「지금 그 값을 낼 수 있는가」로 가른다.
SCR-ES-010견적서 출력 (엑셀 xlsx) /…/estimates/:estimateId/exportFigma: node 1598:5151

확정 견적을 발주처 제출용 조달 서식 엑셀(xlsx, 다중 시트)로 출력 — 좌측 출력 설정(서식·들어가는 시트·서명 스탬프) + 우측 Rev. 이력. 헤더 우측 다운로드·이메일·PDF(보조).

진입 — SCR-ES-009 [엑셀 출력으로] 버튼.

  1. 엑셀 다운로드 — 조달 서식 xlsx(다중 시트)를 다운로드.
  2. 이메일 발송 — 완성된 견적서를 이메일로 발송. 아직 잠근 채로 둔다(#1760) — 받는 주소를 어디서 받을지, 보내기 전에 무엇을 확인시킬지, 실패를 어떻게 보일지가 아직 없다. 서버의 emailAccepted 는 보내기가 실패해도 참이라 그대로 이으면 안 간 메일을 갔다고 말한다. 내려받기는 조회 권한이면 되고 발송만 편집 권한이다.
  3. 전 라인 확정 안내 — 전 라인 확정 완료 시에만 견적서 발행이 가능함을 안내.
  4. 출력 설정 — 조작 넷 가운데 둘을 걷고 둘을 잠갔다(#1760). 서식은 고를 것이 하나라 잠그고, 들어가는 시트는 조달청이 정한 양식이라 골라 뺄 수 없어 읽기 전용 목록으로 바꿨다. 서명 스탬프는 이미지를 담을 자리가 없어 꺼진 채로 잠근다 — 켜져 있는데 아무 일도 안 하는 것이 가장 나쁘다. PDF 동시 생성은 위 [PDF (보조)] 단추가 같은 일을 해서 걷었다. 유효기간은 회사 설정(QUOTE)에서 오는데 아직 비어 있어 「회사 설정에서 채웁니다」로 적는다.
  5. Rev. 이력 — 개정판(Rev.) 발행 이력과 사유.
관련 API Swagger UI ↗
  • GET/api/es/estimates/{estimateId}/export — 조달 서식 xlsx(5시트) 다운로드
  • POST/api/es/estimates/{estimateId}/send-email — [이메일 발송] 버튼 동작
프로젝트  ›  프로젝트 상세  ›  견적 탭  ›  견적(버전) 상세 - 섹션 허브  ›  견적서 출력
CMD+K 검색
미사5중 신축공사목록으로 돌아가기

견적서 출력

1엑셀 다운로드 (xlsx)2이메일 발송PDF (보조)
확정3전 라인 확정 완료. 24/24 라인이 확정되어 견적서를 발행할 수 있습니다.
4출력 설정 (엑셀 xlsx)
조달 서식(표준) — 고를 것이 하나라 잠금
들어가는 시트 (조달 서식 · 골라 뺄 수 없다)
겉지 · 조달요청서 · 부호별 구매내역 · 제품별 중량산출 · 견적 합계
서명 스탬프 삽입 (서명 이미지를 등록한 뒤 켭니다)
견적 번호EST-2026-001 · Rev.0
유효기간회사 설정에서 채웁니다
포맷엑셀 xlsx · 조달 서식 5시트 (PDF 보조)
5Rev. 이력
Rev.일자작성자사유
Rev.12026-06-10이미희B존 수량 변경 — 개정 재발행
Rev.02026-06-02이미희최초 발행
상태 variant: empty · loading · success · error(출력 정보 조회 실패 / 다운로드 실패). frozen 연동 — 전 라인 확정 충족 시에만 견적 확정(발행) 가능.
SCR-ES-008실행예산 입력·분석 (프로젝트) /…/estimates/:estimateId/budget

후속 — 확정 견적의 실제 소요 비용을 항목별 입력하고 견적 대비 실행율 분석. 좌측 비용 입력·내역 + 우측 원가율 분석 패널. 입력 즉시 누적 실행 원가·실행율 재계산.

진입 — SCR-ES-003 하단 후속 분기 / 확정 견적.

  1. 비용 입력 폼 — 항목(자재비/시공비/폐기비/기타)·금액·발생 일자·담당자·할당 대상 입력.
  2. 추가 — 입력한 비용 항목을 내역에 추가.
  3. 비용 내역 표 — 항목별 발생 일자·할당·금액·담당자 이력.
  4. 실행율 분석 패널 — 진입 경로(FR-ES-017)를 표시.
  5. 실행율 요약 — 견적 원가·누적 실행 원가·견적/실행 원가율·최종 실행율. 두 원가율만 「준비 중」으로 가린다 — 분모인 견적 금액을 채우는 자리가 아직 없다. 실행율은 분모가 약분되어 사람이 넣은 두 값만으로 나오므로 그대로 보인다 (#1126).
  6. 월별 추이 차트 — 누적 실행 원가와 견적 원가를 월별로 비교.
  7. 예산 초과 경고 — 특정 항목이 견적 금액을 초과했을 때 경고.
관련 API Swagger UI ↗
  • PUT/api/es/estimates/{estimateId}/budget — 항목별 비용 입력·저장([추가] 버튼)
  • GET/api/es/estimates/{estimateId}/budget — 비용 항목 목록 조회 (비용 내역 표)
  • GET/api/es/estimates/{estimateId}/budget — 견적 원가·누적 실행 원가·실행율 등 분석 패널 집계 — 위 조회와 같은 주소가 함께 반환
견적  ›  실행예산
CMD+K 검색
미사5중 신축공사목록으로 돌아가기
확정소재비 VAT 제외 · 소수점 2자리
1비용 입력 (확정 후 입력 가능)
항목: 자재비금액(원)발생 일자담당자할당: 섹션별2추가
발생 일자항목3할당금액담당자
2026-06-02자재비섹션 WD-A-001₩ 4,820,000김진호
2026-06-04시공비제조단계: 조립₩ 1,250,000이미희
2026-06-05폐기비제조단계: 절단₩ 180,000이미희
2026-06-08기타섹션 DR-B-002₩ 320,000김진호
항목별 합계 — 자재비 ₩62,400,000 · 시공비 ₩24,150,000 · 폐기비 ₩1,830,000 · 기타 ₩2,670,000
4실행율 분석 (FR-ES-017)
견적 원가₩ 87,850,000
누적 실행 원가₩ 91,050,000
견적 원가율준비 중
실행 원가율준비 중
5실행율103.64% (손실)
6월별 누적 실행 원가 vs 견적 원가 추이
7예산 초과 — 자재비 누적 실행액이 견적 자재비를 ₩ 3,200,000 초과했습니다
실행률 지표 3종 분리: ①대 도급(ES-001) ②대 견적(OM) ③원가율(본 화면). 상태 variant: 견적 미확정 시 입력 잠금
금액 표기 (#1126) — 사람이 넣는 값은 그대로 두고 견적 금액에 기대는 두 칸만 가린다. 비용 내역·항목별 합계·견적 원가·누적 실행 원가·실행율·예산 초과 경고·추이 차트는 모두 사람이 넣은 값에서 나오므로 값을 보인다. 견적 원가율·실행 원가율은 분모인 견적 금액을 채우는 자리가 없어 「준비 중」이다. 넣는 칸까지 가리면 이 화면을 열 까닭이 없어진다.
SCR-ES-017설계노트·코멘트 (프로젝트) /projects/:projectNo/notes표준

횡단 협업 — 공통 노트(프로젝트 전반)와 설계노트(견적 버전/도면/섹션 앵커 결속 코멘트) 2분류. ES-015 캔버스에서 위치 지정 작성, 목록에서 해당 위치로 역점프. [내용확인] 수신 확인.

진입 — SCR-PM-016 프로젝트 상세 [노트] 탭 / ES-015 캔버스 위치 코멘트.

  1. 작성하기 — 새 노트/코멘트 작성 모달을 연다.
  2. 분류 탭 — 공통 노트/설계노트 2분류.
  3. 버전 필터 — 모든버전/특정 견적 버전으로 좁혀 본다.
  4. 노트 카드 — 앵커(견적버전/도면/섹션)에 결속된 코멘트 카드.
  5. 앵커 배지 — 이 노트가 참조하는 위치(견적 v.1/도면/부호)로 역점프.
  6. 내용확인 — 노트를 읽었음을 수신 확인으로 남긴다.
관련 API Swagger UI ↗
  • GET/api/pm/projects/{projectNo}/notes?category=&anchorType=&anchorId=&unackedOnly= — 공통/설계노트 목록 조회 (IF-PM-PRJ-007, #488 확정 — DE24-1 §5.3.13, BE 미구현)
  • POST/api/pm/projects/{projectNo}/notes — [작성하기] — 본문+분류(공통/설계노트)+앵커 저장 (IF-PM-PRJ-007)
  • PUT/api/pm/projects/{projectNo}/notes/{noteId}/ack — [내용확인] 사용자별 수신 확인 처리 (IF-PM-PRJ-007, 멱등)
프로젝트  ›  노트
CMD+K 검색
미사5중 신축공사목록으로 돌아가기
내보내기1작성하기
2공통 (0)설계노트 (1)
3모든 글 보기모든버전견적 v.1
4노트 카드 — 앵커 결속
성윤정 · 2025-04-11 17:23
추후 BF인증 적용시를 위해 도어폭 늘림
5↩ 견적 v.1 / 미사5중_프로그램용 / AD02 →6내용확인
[작성하기] 모달 필수 입력: 본문 + 분류(공통/설계노트) + (설계노트 시) 앵커=견적버전/도면/섹션. FR-ES-015 협업 보조.
SCR-ES-011설계 진행 현황 /estimates/workboard전역Figma: node 1077:2757

프로젝트 횡단 전역 화면 — 필터(설계자·기간) + 설계자별 보드 / 타임라인 2탭. 보드 탭 = 설계자 진행률 카드(할당·검토 대기) + 할당 프로젝트 테이블. 워크플로 진행 단계(§3.3) 추적.

진입 — 사이드바 견적설계(전역 1차 메뉴).

  1. 필터 — 설계자·기간으로 현황을 좁힌다.
  2. — 설계자별 보드/타임라인 2뷰.
  3. 설계자별 진행 카드 — 진행률·할당 건수·검토 대기 건수를 설계자별로 표시.
  4. 할당 프로젝트 표 — 선택 설계자의 할당 프로젝트·견적·워크플로 상태·진행률·마감.
  5. 워크플로 상태 배지 — 신규/설계중/검토/확정/계약 등 진행 단계.
  6. 페이지네이션 — 할당 프로젝트 목록 페이징.
관련 API Swagger UI ↗
  • GET/api/es/dashboard/workboard?view=&assignee=&status=&from=&to=&page=&size=&sort= — 설계자별 할당·진행률·타임라인 — IF-ES-DASHBOARD-001 (§5.4.16-A, view=board|timeline)
견적설계  ›  설계 진행 현황
CMD+K 검색

설계 진행 현황

1설계자 전체📅 2026-05-01📅 2026-06-10
2설계자별 보드타임라인
3이미희 진행률68%
할당
4
검토 대기
1
박정수 진행률45%
할당
3
검토 대기
0
김설계 진행률90%
할당
2
검토 대기
1
4할당 프로젝트 - 이미희 (5건)
프로젝트명견적5워크플로 상태진행률마감
P-2026-012EST-2026-001 (Rev.1)설계중60%2026-06-20
P-2026-015EST-2026-004 (Rev.0)검토85%2026-06-15
P-2026-018EST-2026-007 (Rev.0)신규0%2026-07-03
P-2026-009EST-2026-005 (Rev.2)확정100%2026-05-30
P-2026-003EST-2026-002 (Rev.1)계약100%2026-05-10
61 / 5
행 클릭 → 해당 프로젝트 견적(ES-001/003) 이동. 타임라인 탭 = Gantt(설계자별 행·워크플로 단계 막대·기간 필터 연동). 상태 variant: 보드/타임라인 각각 success · loading · empty · error.
SCR-ES-013실행예산 총괄 분석 /estimates/budget-overview전역Figma: node 1748:16943

경영 의사결정 지원 — 완공 프로젝트 원가율·수익성 대시보드. 필터바 + KPI 카드 4종 + 추이 라인차트·카테고리 수익성 막대차트 + TOP 10 손실 프로젝트 표. (권한 ROLE_ADMIN)

진입 — 사이드바 견적설계 하위(경영).

  1. 필터바 — 기간·프로젝트·제품·거래처로 대상을 좁힌다.
  2. KPI 카드 4종 — 평균 원가율·평균 이익률·손실 위험 프로젝트·완공 프로젝트 건수.
  3. 월별 원가율 추이 차트 — 완공 프로젝트 기준 최근 6개월 원가율 라인 차트.
  4. 카테고리별 수익성 차트 — 제품 카테고리별 이익률 막대 차트.
  5. TOP 10 손실 프로젝트 표 — 원가율 90%/100% 초과 프로젝트를 강조.
  6. 원가율 컬럼 — 프로젝트별 원가율(90%/100% 초과 강조).
  7. 엑셀 다운로드 — 분석 결과를 엑셀로 내려받는다.
관련 API Swagger UI ↗
  • GET/api/es/dashboard/budget-overview — 완공 프로젝트 원가율·이익률 집계(기간·프로젝트·제품·거래처 필터) — 내보내기는 .../export
견적설계  ›  실행예산 총괄 분석
CMD+K 검색

실행예산 총괄 분석

분석 대상: 완공 프로젝트만7엑셀 다운로드
1기간: 월2026-05프로젝트: 전체제품: 전체거래처: 전체
2평균 원가율
준비 중
원가율이 나온 뒤 전월 대비 증감
평균 이익률
준비 중
목표 이익률 12% 이상
손실 위험 프로젝트
준비 중
원가율 90% 초과
완공 프로젝트
27건
분석 대상 프로젝트
3월별 원가율 추이 (%) · 완공 프로젝트 기준, 최근 6개월준비 중 (라인 차트 자리는 그대로 둔다)
4제품 카테고리별 수익성 (이익률 %)준비 중 (막대 차트 자리는 그대로 둔다)
5TOP 10 손실 프로젝트
원가율 90% 초과 주황 / 100% 초과 빨강 강조 (정밀색은 실 구현 — 로우파이 회색 표기). 값을 가린 동안에는 강조하지 않는다 — 「준비 중」에는 넘고 못 넘고가 없다 (#1126).
프로젝트견적액실행액6원가율이익률
P-2026-008준비 중₩ 89,500,000준비 중준비 중
P-2026-014준비 중₩ 148,900,000준비 중준비 중
P-2026-003준비 중₩ 57,300,000준비 중준비 중
P-2026-021준비 중₩ 181,200,000준비 중준비 중
Figma: 월별 원가율은 라인 차트, 카테고리 수익성은 막대 차트. 상태 variant: 정상 · loading · empty(완공 0건) · error.
금액 표기 (#1126) — 실행액과 완공 건수는 값을 보이고, 견적액에 기대는 것은 모두 「준비 중」으로 가린다. 견적액 칸을 채우는 자리가 아직 없어 원가율이 나오지 않고, 원가율이 없으면 이익률·핵심 지표 셋·차트 둘이 함께 빈다. 지금 서버는 이 경우 평균 원가율·평균 이익률을 0.00% 로 내려 주어 못 낸 것과 정말 0% 인 것이 같아 보이는데, 「준비 중」으로 적으면 그 둘이 갈린다. 열·행·차트 자리는 지우지 않는다.