| 발생 일자 | 항목 | 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 | 김진호 |
절차 단계 ① — 도면을 프로젝트 자원으로 업로드·변환·관리. 올리는 것만으로 변환이 시작되지는 않는다 — 올린 도면은 「미변환」으로 담기고 사람이 변환을 걸어야 돈다 (#1499 확정). 견적은 단계 ③에서 이 보관함의 도면을 선택해 공유한다.
진입 — SCR-PM-016 프로젝트 상세 [도면] 탭.
PENDING(미변환)으로 담고, 변환(CAD→JSON)은 사람이 따로 걸어야 시작한다. 서버 DrawingUploadService 가 스스로 「변환 auto-chain 안 함」이라 적어 두었다.IF-ES-DRAWING-STATUS-001 이 서버 전체 수를 준다). 정본 §4.1 결정 상자.drawing.drawing_kind, #445). 업로드 시 지정한 용도가 목록 '용도' 열에 표시된다.thumbnailUrl, #705). 도면 비율이 제각각이라 잘라내지 않고 여백을 채워 맞춘다(contain). 그림이 없을 때는 왜 없는지를 thumbnailStatus 로 갈라 그린다(#1614) — PENDING(곧 생긴다)은 파란 점선 테두리 + 옅은 가로 막대이고, FAILED(만들다 실패)·SKIPPED(만들 수 없는 환경이거나 아직 변환하지 않은 도면)는 회색 점선 테두리 + 도면 아이콘이다. 뒤 둘을 눈으로 가르지 않는 까닭은 사람이 할 일이 「기다려도 안 생긴다」로 같기 때문이다. 빈칸으로 남기지 않는다. PENDING 인 줄이 하나라도 있으면 10초마다 목록을 다시 부르고, 없으면 멈추며, 15분이 지나면 멈춘다 — 「몇 초 뒤 생깁니다」는 적지 않는다(실측 29~162초이고 파일 크기로는 예측이 안 된다). 이 값들은 정상 경로라 썸네일이 없다고 변환 상태를 실패로 읽지 않는다. 상세는 화면설계서 §4.1.3./api/es/projects/{projectId}/drawings — 프로젝트 귀속 도면 목록·변환 상태·썸네일(thumbnailUrl, presign-on-read) 조회/api/es/projects/{projectId}/drawings — 도면 업로드 (변환은 걸지 않는다 — PENDING 으로 담기까지만, #1499 확정)/api/es/projects/{projectId}/drawings/{drawingId}/convert — 미변환·변환 실패 도면 재변환 (ES-001 행 펼침의 [재변환]과 공용)| 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 | 유진이 | 다운로드 |
프로젝트에 병존하는 견적 버전(v.N)들의 목록·지표(중량·금액·도급·실행률·진행률)·계약 지정. 행 펼침(▾)으로 귀속 도면·메모 관리.
진입 — SCR-PM-016 프로젝트 상세 [견적] 탭 / SCR-ES-011 설계 진행 현황 행 클릭(전역 → 프로젝트 진입, 발신 상호 인정).
/api/es/projects/{projectId}/estimates — 견적 버전 목록·지표 조회/api/es/estimates/{estimateId} — 버전 삭제 (삭제 가드 셋: 계약 지정·발주 파생 409 ESTIMATE_NOT_DELETABLE · 확정 409 ESTIMATE_LOCKED)/api/es/estimates/{estimateId}/contract — 계약 지정 (해제는 POST .../uncontract)| 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 | 복제 삭제 불가 — 발주 파생 계약 지정 — 비활성 |
(Phase 2) 를 적었으나 화면을 쓰는 사람에게 뜻이 닿지 않아 「준비 중」으로 바꿨고(#1084 결정, DE22-1 §08 §4.2 R-ES-AMOUNT-PLACEHOLDER), 커서를 올리면 까닭 한 줄이 뜬다.단계 ②③ — 견적 버전 생성. 좌측 기본 정보 폼 + 우측 도면 선택(보관함 도면 중 이 버전 귀속분)이 플로우의 본체. 생성만으로 변환이 시작되지는 않는다 — 미변환 도면은 [미변환 도면 변환 시작] 을 눌러야 변환된다 (#1477 확정).
진입 — SCR-ES-001 [견적 생성하기].
EstimateService 는 변환을 걸지 않고, 변환을 부르는 자리는 DrawingConversionController 하나뿐이며 그것은 사람이 눌러야 돈다./api/es/projects/{projectId}/drawings — 도면 선택 표에 보관함 도면 목록·변환 상태 표시/api/es/projects/{projectId}/estimates — 견적 버전 생성| ☑ | 파일명 | 유형 | 5변환 상태 | 업데이트 |
|---|---|---|---|---|
| ☑ | 미사5중_프로그램용.dwg | CAD 파일 | 변환 완료 (캐시) | YYYY.MM.DD |
| ☑ | 지킴이실_프로그램용.dwg | CAD 파일 | 미변환 [변환 시작] 을 눌러야 변환 | YYYY.MM.DD |
| ☐ | 미사5중.dwg | CAD 파일 | 미변환 | YYYY.MM.DD |
단계 ③~⑥ 허브 — 좌측 사용 도면·제품 후보·합계 패널 + 우측 상단 필터바 + 섹션 목록 테이블. 진행률은 헤더 우측 인라인 바. 후속 단계(일괄 변경·단가·산식·견적서·실행예산) 분기.
진입 — SCR-ES-001 행 클릭 / ES-002 생성 직후 / SCR-ES-011 설계 진행 현황 행 클릭(전역 발신 상호 인정).
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/es/estimate-lines — estimateNo 필터로 섹션(라인) 목록·확정 상태·금액 조회. [BOM] 열이 어느 라인으로 갈지도 이 응답의 라인 수로 가른다/api/es/estimates/{estimateId} — 헤더 진행률·사용 도면·합계 요약 조회 (요약은 GET .../summary 병용)/api/es/estimates/{estimateId}/palette — [제품 후보 변경] 확정 저장 — '제품 후보' 는 팔레트와 같은 개념이다 (§5.4.19, 구현 완료)/api/es/estimates/{estimateId} — [기본정보 수정] 저장 (견적명·버전 메모, §5.4.10 IF-ES-EST-001)/api/es/estimates/{estimateId}/submit-review · .../approve-review · .../reject-review · .../revise — 이 화면이 맡는 상태 전이 4종 (§5.4.11 IF-ES-WORKFLOW-001). 계약 지정 .../contract 와 계약 해제 .../uncontract 는 SCR-ES-001 이 부른다/api/es/sections/{sectionId} — 「작업」 열 [수정] 저장 (§5.4.13 IF-ES-SECTION-001). 통째로 갈아 끼우는 요청이라 부호·수량만 고쳐도 절취 사각형·층고·기준선을 현재 값으로 함께 보낸다 — 빠뜨리면 서버가 그 값을 비운다. 검토 중에는 막힌다 — 409 SECTION_ESTIMATE_IN_REVIEW(#855 결정, 만들기와 같은 코드). 부호·수량이 견적서에 그대로 실리는 승인 대상이라서다. 통째로 갈아 끼우는 요청이므로 공간 앵커만 고치려는 요청도 함께 막힌다. 확정·계약에서는 409 SECTION_ESTIMATE_LOCKED 다/api/es/sections/{sectionId} — 「작업」 열 [삭제] (§5.4.13 IF-ES-SECTION-001). 그 섹션의 견적 내역(라인)이 함께 지워지고, 확정된 내역이 있으면 409 SECTION_HAS_FROZEN_LINE 으로 막힌다| ☑ | 7섹션 (부호) | 도면 | 수량 | 설계 | 확정 | 섹션 금액 | 12BOM | 13작업 |
|---|---|---|---|---|---|---|---|---|
| ☑ | AAW01 | 미사5중 | 27 | 설계중 | — | — | BOM | — |
| ☑ | AW01 | 미사5중 | 13 | 완료 | 잠금 | 준비 중 | BOM | — |
| ☑ | ACW01 | 미사5중 | 1 | 미설계 | — | — | BOM — 비활성 | — |
| ☑ | 지킴이실-AD01 | 지킴이실 | 1 | 완료 | 잠금 | 준비 중 | BOM | — |
전이 단추가 하나도 안 뜨는 자리에 다음 할 일을 한 줄로 적는 모습. 발주처 검수자가 「섹션에 제품 추가 후 저장했는데 이 다음 스텝이 뭔지 모르겠어요」라고 물어 온 자리다(요청 FB-25). 위 본체 프레임과 같은 화면이고 헤더 오른쪽과 담당 설계자 자리만 다르다 — 아래는 그 두 자리만 떼어 그렸다. (정본 §4.4 #1643 결정 상자)
진입 — 본체 프레임과 같다. 담당 설계자를 비운 채 만든 견적(DE24-1 §5.4.10 assigneeUserId 는 선택)에 들어오면 이 모습이다.
/api/es/estimates/{estimateId} — 헤더의 상태·담당 설계자·진행률을 읽는다. 이 셋으로 어떤 한 줄을 적을지 가른다 (§5.4.10 IF-ES-EST-001)/api/es/estimates/{estimateId}/assignee — [담당 설계자 배정] 저장. 서버가 이 호출로 신규 → 설계중 승격을 함께 한다 (§5.4.12 IF-ES-ASSIGN-001) — 화면이 상태를 따로 바꾸지 않는다제품 카탈로그 선택 모달 — PM 표준제품 목록(SCR-PM-010) 4축 분류 필터·검색 재활용. 좌측 카탈로그(체크 다중 선택) + 우측 선택된 후보 요약. 배치 사용 중 제품 해제 시 영향 확인.
진입 — SCR-ES-003 [제품 후보 변경] 버튼.
/api/pm/products — 형식/등급/형태 4축 분류 필터·검색으로 제품 카탈로그 조회 (SCR-PM-010 재활용)/api/es/estimates/{estimateId}/palette — 체크 다중 선택한 제품 후보 확정 저장 — 팔레트 큐레이션과 같은 주소 (§5.4.19)| ☑ | 2제품코드 | 제품명 | 분류 경로 |
|---|---|---|---|
| ☑ | DHS-AE225-D-1 | 미서기 이중창 | 미서기 > 마스 > 2×2 연창 |
| ☐ | DHS-AE160-D-1 | 미서기 이중창 | 미서기 > 마스 > 2×1 연창 |
| ☑ | 교출-양개 | 140 행거 교실출입문 | — |
| ☐ | CWU-AL-1 | 커튼월 프레임 | 커튼월 > 일반 |
검토 승인을 누르면 먼저 열리는 사유 창. 작성자 본인이 승인할 때 경고 한 줄이 뜨고 사유가 필수가 된다. 종전에는 작성자 본인이 아예 승인할 수 없었고(409), 발주처 검수자가 「확인을 한 번 더 받는 조건으로 열어 달라」고 요청해 왔다(요청 FB-27). 정본 §4.4 #1646 결정 상자.
진입 — 상태가 「검토」일 때 헤더 오른쪽 [검토 승인] 버튼.
createdByMe 하나로 하고 로그인 아이디를 직접 견주지 않는다 — 그 규칙은 서버가 갖고 있다(DE24-1 §5.4.10)./api/es/estimates/{estimateId} — createdByMe 로 본인 승인인지 가른다 (§5.4.10, #1646 신설)/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)/api/es/estimates/{estimateId}/status-history — 승인 줄의 본인 승인 표시를 읽는다 (§5.4.11)SELF_APPROVAL_REASON_REQUIRED 가 창 안에 보인다(마커 5).단계 ④ 작업대 — 상단 도면 선택 드롭다운 + 도구 툴바(자동·사각형·부호·지우개·팬·줌) 아래 창호일람표 시트를 가로 나열하고 창호 입면마다 마커(부호/수량)를 찍어 섹션 추출. 우측 섹션 작업 패널.
진입 — ES-003 [섹션 매핑] 버튼(견적 생성 직후 착지는 ES-003 — ES-002 발신 정합).
/api/es/projects/{projectId}/drawings — 매핑 대상 도면 선택 드롭다운·변환 상태 표시/api/es/estimates/{estimateId}/sections — 섹션 영역·부호/수량 저장 — 견적 버전 기준 경로 (도면 기준 경로가 아니다)| 7부호 | 수량 | 상태 |
|---|---|---|
| AW09 | 1 | 확정 |
| AW11 | 1 | 확정 |
| AAW01 | 27 | 확정 |
| (미지정) | — | 제안 |
단계 ④·⑤ 사이 게이트 — 창호일람표 매핑으로 뽑은 섹션(부호·수량)을 평면도 위 실제 설치 위치에 개소별로 직접 배치해, 부호별 배치 개수가 매핑 수량과 맞는지 검증한다. 우측에서 섹션을 고르고 평면도를 클릭하면 그 위치에 부호 태그가 추가되고, 배치/미배치 카운트가 실시간 갱신된다. 배치한 개소 위치는 실측(FS)의 입력이 된다. 진입은 SCR-ES-004 매핑 완료 후 [대조 검증] 이며(ES-015 직행 없음), 전 섹션 일치 → [견적설계 진입]. 불일치는 사유 입력 후 오버라이드(감사 로그). 이 작업은 두 시점에 할 수 있다 — 견적 단계(이 게이트)와 계약 뒤다(#844). 계약 뒤로 미루려면 오버라이드 사유 갈래를 「계약 뒤로 미룸」으로 고른다. 정본 §4.5.1 (v2.1-r65).
/api/es/drawings/{drawingId}/crosscheck — 도면 단위 대조 검증 상태·섹션 목록(배치/매핑) 조회/api/es/sections/{sectionId}/crosscheck — 부호(섹션) 단위 대조 결과 갱신/api/es/sections/{sectionId}/crosscheck/override — [게이트 통과] 오버라이드 — 사유 입력 후 감사 로그 기록/api/es/drawings/{drawingId}/placements — 평면도 개소 태그(좌표) 추가 — 수정·삭제는 PUT·DELETE .../placements/{placementId}/api/es/drawings/{drawingId}/crosscheck/override — 도면 한 장의 부호를 한 번에 넘기는 일괄 오버라이드. 「계약 뒤로 미룸」을 고를 때 쓴다 (#844 설계 선행 — 백엔드 미착수)| 부호 | 배치 / 매핑 | 상태 |
|---|---|---|
| AW01 | 2 / 5 | 미배치 |
| AW09 | 0 / 3 | 미배치 |
| AD03 | 1 / 1 | 일치 |
| AW11 | 4 / 3 | 초과 |
단계 ⑤ 본체 — 좌측 카테고리별 제품 팔레트에서 제품 선택 → 중앙 캔버스(도면 절취 뷰·치수선·FL 기준선)에 형태대로 그려 배치 → 그린 치수에서 규격(W/H) 자동 산정. 우측 [추가된 제품] 목록에 배치 누적·선택 인스턴스 규격·OPT 슬롯. 좌측 하단 선택·편집(V·M·Del)·히스토리(⌃Z·⌃Y)·배경·정밀배치. (정본 §4.6, 2026-06-19 확정)
진입 — SCR-ES-019 대조 검증 게이트 통과 후 부호 선택 / ES-003 섹션 행 클릭(ES-004 → ES-015 직행 없음 — 게이트 경유).
cropRectToScreenBox 하나로 얻는다 — 정본 §4.6.2 ② 「겹쳐 그리기 공통 규칙」.R-ES015-CENTER-PLACE)이다 — 흡착선은 허용 오차 20mm 안에서 붙고, 단추는 정확히 가운데로 옮긴다. 가운데 값은 섹션 절취 사각형에서 바로 셈한다(x + w/2·y + h/2) — FL·층고·창호 중심선과 달리 배경 도면 기하가 필요 없다. 단추는 배치물을 하나 고른 때만 켠다.공통 · 1칸 · 2칸 …, 자리는 #1588 이 2026-09-02 에 정했다)로 칸마다 세로 나눔을 따로 적는다. 칸마다 나눔이 다른 창이 원천 여섯 세트에 창호부호로 넷 있다(수평연창 AW41B·AW42A · 도어구간 AW17 · 수직연창 CW02). 갈라 둔 칸은 캔버스 배경 표시와 고르개 이름의 점으로 드러나고, 그 칸에서는 배치 스냅·합 검산도 그 칸 눈금을 쓴다. 기본은 공통이고 칸을 하나도 가르지 않으면 종전과 똑같이 돈다./api/es/estimate-lines — 캔버스 배치 저장 → 견적 라인(ESTIMATE_LINE) 생성/api/es/estimate-lines/{lineId} — 배치 위치·치수·옵션 수정/api/es/estimate-lines/evaluate-preview — 배치·옵션 변경 시 실시간 중량·산출 미리보기/api/es/sections/{sectionId}/dimensions — 디멘션 눈금자 조회·교체(IF-ES-DIMENSION-001, DE24-1 §5.4.29). GET=DXF DIMENSION 자동추출 seed + 편집본 정본 / PUT=집합 교체(추가·삭제·편집). 교차점 = 배치 스냅. 누적 경계는 서버가 spanMm 누적으로 다시 계산해 저장한다(서버 계산값이 이긴다) (as-built(구현 실측) — 서버 구현 완료 #929, 이전 파일 V329)/api/es/sections/{sectionId}/angle-cuts — 사선창 부재별 각도 절단 조회·교체(IF-ES-ANGLECUT-001, DE24-1 §5.4.35). 우측 패널 [각도 절단] 탭의 표를 한 벌 통째로 저장한다(빈 배열을 보내면 그 부호의 각도 절단을 전부 지운다). 산식을 돌리지 않는다 — 가공도에서 옮겨 적은 절단 길이·각도를 그대로 담는다. 적힌 것이 없는 부호는 404 가 아니라 빈 목록으로 답한다(사선창이 아닐 뿐이다) (as-built(구현 실측) — 서버 구현 완료 #930, 이전 파일 V330)/api/es/estimates/{estimateId}/palette — 좌측 제품 팔레트에 노출할 카테고리별 제품 후보 조회 (ES-018 큐레이션 결과 소비)공통 · 1칸 · 2칸 · 3칸 …, 기본 공통). 얇은 띠에 들어가지 않아 2026-09-02 에 이 자리로 정했다(#1588). 칸 이름은 가로 눈금의 「칸」 구간을 왼쪽부터 센 차례이고 신축이음은 세지 않는다. [이 칸만 따로] 로 가르면 그 순간의 공통 눈금을 베껴 시작하고, [공통으로 되돌리기] 는 한 번 묻는다. 갈라 둔 칸은 캔버스 배경의 옅은 표시와 고르개 이름의 점 두 곳에서 눈에 띈다 — 그 칸에서는 배치 스냅도 그 칸의 세로 경계를 쓴다. 칸을 하나도 가르지 않으면 종전과 똑같이 돈다(단창은 이 고르개를 볼 일이 없다).| 제품 | 규격 (W×H / 길이) |
|---|---|
| A-01 140 미서기 | W1040 × H520 |
| A-02 140 미서기 | W1040 × H520 |
| CW 노출바 | L 2500 |
캔버스 상세 — 배치된 프레임의 상태(선택 / 미할당 / 완료 / 오류)를 테두리색·상태 칩으로 표시하고 다중 선택 시 선택 갯수 뱃지 노출. 프레임 선택 시 우측 제품·옵션 패널에 OPT 슬롯 값이 채워지고 하단 계산 미리보기(예상 중량) 갱신.
진입 — SCR-ES-015 캔버스에서 배치된 프레임을 선택 도구(V)로 클릭(동일 화면 내 상태 전환 — 별도 라우트 아님).
/api/es/estimate-lines/{lineId} — 선택 인스턴스 이동·리사이즈·옵션(OPT-*) 변경/api/es/estimate-lines/evaluate-preview — 옵션 변경 시 계산 미리보기(예상 중량) 재평가/api/es/estimates/{estimateId}/sections/bulk-change — 다중 선택 시 공통 옵션 슬롯 일괄 적용 (§4.6.1 ③ 정책)눈금자가 캔버스와 같은 카메라를 따르는 모습 두 가지. 확대하면 눈금 간격이 그림과 같은 비율로 커지고 끌면 함께 밀린다. 많이 축소해 라벨이 들어갈 자리가 없으면 그 라벨만 감추고 경계선은 남긴다. 기존(레거시) 시스템 관례를 그대로 따른다 — 얇은 띠 한 줄 · 나눈 치수만 · 구간 끝 세로선. (정본 §4.6.2 ③ 결정 상자, #1587)
진입 — SCR-ES-015 캔버스에서 휠·핀치로 확대·축소(같은 화면 안의 상태 바뀜 — 따로 난 주소가 아니다).
900 │ 900 │ 1200) — 전체 치수(3,000)는 눈금자에 올리지 않는다. 화면에 고정하는 것은 띠가 놓이는 가장자리뿐이고 띠 안의 눈금 경계·구간 폭은 고정하지 않는다.단계 ③↔⑤ 연결 보조 — 이 견적 버전이 캔버스에서 쓸 제품 후보를 카테고리별로 정리하고 팔레트 노출 여부·표시 순서·카테고리 배치를 큐레이션. 결과가 ES-015 좌측 팔레트에 주입. (마스터는 PM 정본, 읽기만)
진입 — SCR-ES-003(§4.4) [제품 후보 변경] / SCR-ES-015(§4.6) 좌측 제품 팔레트 헤더 [라이브러리 관리].
/api/pm/products — 형식·등급·형태 4축 분류·검색으로 후보 라이브러리 조회 (SCR-PM-010 재활용)/api/es/estimates/{estimateId}/palette — 이 견적 버전의 팔레트 노출·순서·카테고리 큐레이션 조회/api/es/estimates/{estimateId}/palette — [큐레이션 저장] — 노출 ON/OFF·순서·카테고리 저장 및 ES-015 팔레트 반영| 순서 | 제품코드 | 제품명 | 카테고리 | 3팔레트 노출 |
|---|---|---|---|---|
| 1 ▲▼ | DHS-AE225-D-1 | 미서기 이중창 | 미서기 | ON |
| 2 ▲▼ | 교출-양개 | 140 행거 교실출입문 | 교출 | ON |
| 3 ▲▼ | CWU-AL-1 | 커튼월 프레임 | 커튼월 | OFF |
단계 ⑥ — 견적 라인 1건의 BOM 자동 구성 결과를 검토하고 라인 확정 트리거. 좌측 좁은 입력(치수 값·옵션·자동 산출 규칙) + 우측 넓은 자재 구성/공정·제조비/평가 로그 탭.
진입 — ES-003 섹션 행 [BOM] / ES-015 [BOM 구성].
/api/es/estimate-lines/{lineId} — 라인 입력값(치수·옵션)·자동 산출 규칙 적용 내역 조회/api/es/estimate-lines/evaluate-preview — [재평가(미리보기)] — DB 쓰기 없는 RuleEngine 평가/api/es/estimate-lines/freeze — [라인 확정] — RESOLVED_BOM 정식 생성/api/es/estimate-lines/{lineId}/resolved-bom — 확정된 resolvedBomId·자재 구성 조회| 구분 | 6자재 | 규격 | 수량 | 단가 | 소계 |
|---|---|---|---|---|---|
| 원자재 | UNI-A225-101 | 절단 1480mm × 4 | 4 | 준비 중 | 준비 중 |
| 부자재 | DH-5555-1 가네고 | 9mm | 4 | 준비 중 | 준비 중 |
| 부자재 | 01-0059 피스 | 8×13 | 16 | 준비 중 | 준비 중 |
| 공정 | 조립 | — | 1 | 준비 중 | 준비 중 |
자동 산출 4종(롤방충망·미서기 보강·구조검토·트랜섬 절단)의 산출 근거를 견적 단위로 검토(라인 필터). 좌측 여유율 입력·절단 조합 표 + 우측 낭비 시각화·요약. 구조검토 '오류'는 ES-005 라인 확정 차단과 연동.
진입 — SCR-ES-005 [평가 로그] 탭 심화 / ES-003 하단 [산식 검토(ES-006)] / ES-015 헤더 [산식 검토(ES-006)] / 검토 단계 진입(발신 상호 인정). 지진 계수 두 칸(#609)은 이 화면 안 [구조검토] 탭에서만 연다 — 별도 진입점을 두지 않는다.
notEvaluatedCount, DE24-1 §5.4.20)가 0 이 아니면 뜬다. 확정 문구는 「이 견적에는 아직 판정하지 못한 라인이 {N}건 있습니다 — 오류·경고 건수에 세지 않은 라인이라 통과한 것이 아닙니다. 구조검토 탭의 「사유 / 권고」 칸에서 무엇이 없어 판정하지 못했는지 확인하세요.」 다. 「오류 0 · 경고 0」에 기대어 쓰지 않는다 — 오류가 있는 견적에도 판정 못 한 라인이 함께 있을 수 있어 그렇게 적으면 거짓이 된다. 이 알림은 라인 확정을 막지 않는다(#609 D4). 오류가 0건일 때의 안내는 「확정이 가능하다」고 말하지 않는다 (#1456 ②) — 확정에는 라인 상태·치수 입력·권한 같은 조건도 걸려 이 화면이 알 수 없다.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 이다./api/es/estimate-lines/evaluate-preview — [재계산]/[재평가] — 여유율·자동 산출 규칙 재적용/api/es/estimates/{estimateId}/derivations — 롤방충망 합산·구조검토 등 견적 단위(다섹션 집계) 산식 결과 조회 (재평가는 POST .../derivations/evaluate)| 5규격 H×W (mm) | 필요 수량 | 롤 기준 길이 | 중량 (kg) | 낭비율 |
|---|---|---|---|---|
| 1220×1520 | 2 — WD-A-001·002 합산 | 1800mm 롤 · 3.1m | 8.6 | 9.7% |
| 1120×920 | 4 — WD-B-001 외 합산 | 1200mm 롤 · 3.7m | 9.4 | 6.7% |
| 870×620 | 1 — WD-C-003 | 900mm 롤 · 0.7m | 1.2 | 3.3% |
| 11라인 | 판정 | 쓴 풍 계수 | 쓴 지진 계수 | 쓴 Wp | 사유 / 권고 |
|---|---|---|---|---|---|
| AW-1-01 멀리언 | OK | 0.65 | 0.70 | 0.50 | — |
| AW-1-07 멀리언 | 경고 | 0.80 | 0.70 | 0.85 | 풍 하중계수를 0.80 으로(기본값 0.65) · 가동중량을 0.85 로(기본값 0.50) 조정해 판정했습니다 · 기본 두께(계열 최소)로 판정함 |
| AW-2-03 히든바 | 미판정 | — | — | — | 멀리언만 검토하는 범위라 판정 대상이 아닙니다(히든바 계열) |
ES-003 에서 인계받은 섹션 집합에 동일 변경(제품·치수·옵션)을 4단계 스텝퍼(대상 확인 → 변경 입력 → 검증·미리보기 → 적용)로 적용. 전건 검증 통과 후에만 단일 트랜잭션 일괄 UPDATE(all-or-nothing).
진입 — SCR-ES-003 선택 후 [일괄 변경].
/api/es/estimates/{estimateId}/sections/bulk-change — 전건 검증 + 일괄 변경(change-set 이력 — 이력 조회는 GET .../change-sets, 사전 확인은 .../bulk-change/preview)| 부호 | 항목 | 변경 전 | 변경 후 | 4검증 |
|---|---|---|---|---|
| WD-B-001 | W×H | 1200×900 | 1400×1100 | 통과 |
| WD-B-003 | W×H | 1200×900 | 1400×1100 | 통과 |
| WD-B-007 | W×H | 1200×900 | 1400×1100 | 치수 범위 초과 — 1300×1000 이하로 수정 |
| … 외 9건 | W×H | 1200×900 | 1400×1100 | 통과 |
단계 ⑥ 검토 — 위쪽 3분할(좌 섹션(부호×수량) · 중 부재 그룹별 중량 표 + 제목 줄의 제품 고르는 칸 · 우 제품 견적 내역 + 비율 3칸)과 아래쪽 할증 항목 표·치수 공차 표. 상단 배지는 이 제품에 연결된 조달계약 물품식별번호를 보여준다. 저장은 보낸 목록으로 전부 갈아끼우는 방식이라 표에서 행을 빼는 것이 곧 삭제다. 가격 계층은 BOM 산출 계층과 분리(RESOLVED_BOM 무변경).
진입 — SCR-ES-003 하단 후속 분기 / 단계 6 검토.
IF-ES-PRICING-001 이 주고받는 값이다.IF-ES-PRICING-001 에 자리가 생겨 커튼월 라인이 하나라도 있는 견적에서 열린다(R-ES016-PRICE-MODEL, #1718 결정). 곱한 값은 끝값이 아니라 자재비 자리로 들어가고 시공·기타·마진 비율이 그 위에 붙는다. 커튼월 라인이 없으면(또는 못 읽었으면·제품 0건이면) 잠근 채 까닭을 문장으로 보인다. 제작 공차·단위 중량 두 칸은 화면에서 뺐다 — 공차(lossRate)가 부재마다 이미 곱해져 있어 화면에서 또 곱하면 같은 5%가 두 번 붙고, 단중은 자재 마스터가 정본이다. 나머지 제품군도 정해졌다 — 모두 중량 기반이고, 가르는 축은 제품군이 아니라 조달(관급) 여부다(#1739 결정 · 서버 반영 #1778). ⚠️ 지금 배포된 화면은 아직 옛 축(대분류 커튼월)으로 잠가 있고 그 반영은 후속 #1788 이다./api/es/estimates/{estimateId}/sections — 좌측 섹션(부호 × 수량) 목록 조회/api/es/estimate-lines?estimateId={estimateId} — 제품 고르는 칸에 담을 견적 라인 목록 조회 (순번·제품명·확정 여부)/api/es/estimate-lines/{lineId}/resolved-bom — 부재 그룹별 중량 표 데이터 조회. 고른 라인이 확정 상태일 때만 부른다/api/es/estimates/{estimateId}/summary — 우측 제품 견적 중량 조회/api/es/estimates/{estimateId}/pricing — 저장돼 있는 비율 3종·할증 목록·공차 목록에 더해 제품 단가·단가 조정(#1740 as-built) 조회/api/es/estimates/{estimateId}/pricing — [저장하기] — 시공비율·기타비율·마진율·제품 단가·단가 조정과 할증·공차 목록 저장. 보낸 목록으로 전부 갈아끼운다| 부호 | 수량 |
|---|---|
| AW09 | 1 |
| AW12 | 1 |
| AAW01 | 27 |
| 그룹 | 부재명 | 길이 | 수량 | 단중 | 중량 |
|---|---|---|---|---|---|
| 프레임 | 140 잔넬프레임 | 1800 | 2 | 3.409 | 12.27 |
| 프레임 | 140 잔넬중간프레임 | 1800 | 1 | 2.09 | 3.76 |
| 부자재 | 프레임 가네고 | — | 4 | — | 1.21 |
| 항목 코드 | 항목 라벨 | 입력 방식 | 값 | 삭제 |
|---|---|---|---|---|
| NIGHT_SHIFT | 야간 작업 할증 | 비율 | 5 | 삭제 |
| TRANSPORT | 운반비 | 금액 | 1,200,000 | 삭제 |
| 치수 구분 | 공차 (mm) | 삭제 |
|---|---|---|
| W | 2 | 삭제 |
| H | 2 | 삭제 |
엑셀 출력 전 최종 검토 — 좌측 조달 서식 5시트 탭(겉지·조달요청서·부호별 구매내역·제품별 중량산출·견적 합계) 그리드 미리보기 + 우측 합계와 검증(산식 합계·중량 합산·미확정 경고). A4 PDF 아님.
진입 — SCR-ES-003 [견적서 미리보기].
/api/es/estimate-lines/{lineId}/resolved-bom — 부호별 구매내역 시트에 표시할 확정 자재·수량·금액 조회/api/es/estimates/{estimateId}/quote-sheet — 조달 서식 5시트 미리보기 데이터 조회 (합계·중량 검증은 GET .../summary 병용)| 부호 | 제품 | 규격 | 수량 | 단가 | 금액 | 3물품식별번호 |
|---|---|---|---|---|---|---|
| WD-A-001 | U-P-CW151H-3 | 커튼월 151H · 3중 | 12 | ₩ 842,000 | ₩ 10,104,000 | P-2026-001 |
| WD-A-001 | U-P-CW151H-3 | 커튼월 151H · 3중 | 12 | ₩ 842,000 | ₩ 10,104,000 | P-2026-001 |
| WD-A-001 | U-P-CW151H-3 | 커튼월 151H · 3중 | 12 | ₩ 842,000 | ₩ 10,104,000 | P-2026-001 |
| WD-A-001 | U-P-CW151H-3 | 커튼월 151H · 3중 | 12 | ₩ 842,000 | ₩ 10,104,000 | P-2026-001 |
확정 견적을 발주처 제출용 조달 서식 엑셀(xlsx, 다중 시트)로 출력 — 좌측 출력 설정(서식·들어가는 시트·서명 스탬프) + 우측 Rev. 이력. 헤더 우측 다운로드·이메일·PDF(보조).
진입 — SCR-ES-009 [엑셀 출력으로] 버튼.
emailAccepted 는 보내기가 실패해도 참이라 그대로 이으면 안 간 메일을 갔다고 말한다. 내려받기는 조회 권한이면 되고 발송만 편집 권한이다.QUOTE)에서 오는데 아직 비어 있어 「회사 설정에서 채웁니다」로 적는다./api/es/estimates/{estimateId}/export — 조달 서식 xlsx(5시트) 다운로드/api/es/estimates/{estimateId}/send-email — [이메일 발송] 버튼 동작| Rev. | 일자 | 작성자 | 사유 |
|---|---|---|---|
| Rev.1 | 2026-06-10 | 이미희 | B존 수량 변경 — 개정 재발행 |
| Rev.0 | 2026-06-02 | 이미희 | 최초 발행 |
후속 — 확정 견적의 실제 소요 비용을 항목별 입력하고 견적 대비 실행율 분석. 좌측 비용 입력·내역 + 우측 원가율 분석 패널. 입력 즉시 누적 실행 원가·실행율 재계산.
진입 — SCR-ES-003 하단 후속 분기 / 확정 견적.
/api/es/estimates/{estimateId}/budget — 항목별 비용 입력·저장([추가] 버튼)/api/es/estimates/{estimateId}/budget — 비용 항목 목록 조회 (비용 내역 표)/api/es/estimates/{estimateId}/budget — 견적 원가·누적 실행 원가·실행율 등 분석 패널 집계 — 위 조회와 같은 주소가 함께 반환| 발생 일자 | 항목 | 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 | 김진호 |
횡단 협업 — 공통 노트(프로젝트 전반)와 설계노트(견적 버전/도면/섹션 앵커 결속 코멘트) 2분류. ES-015 캔버스에서 위치 지정 작성, 목록에서 해당 위치로 역점프. [내용확인] 수신 확인.
진입 — SCR-PM-016 프로젝트 상세 [노트] 탭 / ES-015 캔버스 위치 코멘트.
/api/pm/projects/{projectNo}/notes?category=&anchorType=&anchorId=&unackedOnly= — 공통/설계노트 목록 조회 (IF-PM-PRJ-007, #488 확정 — DE24-1 §5.3.13, BE 미구현)/api/pm/projects/{projectNo}/notes — [작성하기] — 본문+분류(공통/설계노트)+앵커 저장 (IF-PM-PRJ-007)/api/pm/projects/{projectNo}/notes/{noteId}/ack — [내용확인] 사용자별 수신 확인 처리 (IF-PM-PRJ-007, 멱등)프로젝트 횡단 전역 화면 — 필터(설계자·기간) + 설계자별 보드 / 타임라인 2탭. 보드 탭 = 설계자 진행률 카드(할당·검토 대기) + 할당 프로젝트 테이블. 워크플로 진행 단계(§3.3) 추적.
진입 — 사이드바 견적설계(전역 1차 메뉴).
/api/es/dashboard/workboard?view=&assignee=&status=&from=&to=&page=&size=&sort= — 설계자별 할당·진행률·타임라인 — IF-ES-DASHBOARD-001 (§5.4.16-A, view=board|timeline)| 프로젝트명 | 견적 | 5워크플로 상태 | 진행률 | 마감 |
|---|---|---|---|---|
| P-2026-012 | EST-2026-001 (Rev.1) | 설계중 | 60% | 2026-06-20 |
| P-2026-015 | EST-2026-004 (Rev.0) | 검토 | 85% | 2026-06-15 |
| P-2026-018 | EST-2026-007 (Rev.0) | 신규 | 0% | 2026-07-03 |
| P-2026-009 | EST-2026-005 (Rev.2) | 확정 | 100% | 2026-05-30 |
| P-2026-003 | EST-2026-002 (Rev.1) | 계약 | 100% | 2026-05-10 |
경영 의사결정 지원 — 완공 프로젝트 원가율·수익성 대시보드. 필터바 + KPI 카드 4종 + 추이 라인차트·카테고리 수익성 막대차트 + TOP 10 손실 프로젝트 표. (권한 ROLE_ADMIN)
진입 — 사이드바 견적설계 하위(경영).
/api/es/dashboard/budget-overview — 완공 프로젝트 원가율·이익률 집계(기간·프로젝트·제품·거래처 필터) — 내보내기는 .../export| 프로젝트 | 견적액 | 실행액 | 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 | 준비 중 | 준비 중 |
0.00% 로 내려 주어 못 낸 것과 정말 0% 인 것이 같아 보이는데, 「준비 중」으로 적으면 그 둘이 갈린다. 열·행·차트 자리는 지우지 않는다.