현장실측 (FS) — 와이어프레임 (웹)

위치: 프로젝트 상세(SCR-PM-016) › 실측 하위 (/projects/:projectNo/field-survey/*) — 독립 영역 아님. 근거: DE22-1 화면설계서 §11 FS 현장실측(웹) v0.1-r2 · SCR-FS-001~003 · 정본은 vault md

← 프로젝트 상세 ← 와이어프레임 목록
본격 명세 전 placeholder(v0.1-r2)입니다. §11은 아직 ui-sketch·필드·상태 variant(loading·empty·error)가 정의돼 있지 않습니다. 아래 배치는 SCR 매트릭스의 비고(대시보드 = 측정 진행률·완료 영역·설계와 차이 큰 개소 — 종전 이름 「이상 알림」, #3603 / 검토 = 목록 페이지(SCR-FS-002) + 상세 페이지(SCR-FS-003, 2026-10-12 #2825)·검증·승인·내보내기)와 관련 요구(FR-FS-007/008/012)만 근거로 한 제안이며, 구체 필드·컬럼·수치·상태값은 (미확정)으로 표기합니다.
진입 구조. FS 웹 화면은 모두 /projects/:projectNo/field-survey/* 하위 경로로, SCR-PM-016 프로젝트 상세의 하위 진입입니다(대시보드도 프로젝트별). 현장실측은 측정에 그치지 않고 발주 정밀화의 입력 공급자입니다 — 실측 치수·수량이 견적설계 데이터를 갱신하고 OM 발주량이 재평가됩니다(본격 명세 시 1급 요구). 모바일(Android) 화면은 fs-app.html(§12)로 분리돼 있습니다.

화면 인덱스 (3 프레임 · SCR 3종)

SCR-FS-001현장 현황 대시보드 (프로젝트별)/projects/:projectNo/field-survey/dashboard
프로젝트별 측정 진행률·완료 영역·설계와 차이 큰 개소를 한눈에 조회한다 (FR-FS-007). 권한 ROLE_FS_VIEWER (잠정).

진입 — SCR-PM-016 프로젝트 상세 [실측] 탭 / 현장실측 하위 탭 중 [현황 대시보드]가 기본 진입

  1. 현장실측 하위 탭 — [현황 대시보드]/[실측 데이터 검토] 전환. 현재 프레임은 대시보드 탭이 활성 상태다.
  2. 측정 진행률 KPI 타일 — 전체 진행률(%)·완료 개소·측정중·실측 대기 4개 지표. 완료/전체 개소 값에서 파생 산출한다(FR-FS-007).
  3. 진행률 바 — KPI의 전체 진행률(%)을 막대로 시각화한다.
  4. 부호별 완료 현황 표 — 「부호별 완료 현황」: 부호마다 완료 개소/전체 개소/진행률/최근 측정일시(#3615 정정 — 종전 「동(섹션)별」). 집계 단위(동/개소)와 표·차트 형태는 §11 TODO(ui-sketch)에서 확정한다.
  5. 설계와 차이 큰 개소 (#3603 결정 2026-10-19 · ⏳ 화면 반영 전 — 종전 이름 「이상 알림」) — 편차가 허용오차를 넘은 개소 목록. 판정 기준은 항목 종류별 허용오차다(DE24-1 §5.4.31). 이 목록에 오르는 개소는 대개 잘못 잰 것이 아니라 현장이 설계와 실제로 다른 곳이라 「이상」이라 부르지 않는다. 블록 제목·접근성 이름을 「설계와 차이 큰 개소」로 바꾸고, 응답 칸 이름(alerts[])은 그대로 둔다. 빈 상태는 「설계와 차이 큰 개소가 없습니다.」와 그 아래 「승인을 마친 측정은 이 목록에 넣지 않습니다.」로 적는다(종전 빈 상태 「처리할 편차 초과 알림이 없습니다.」 — #1225 · #2656).
관련 API Swagger UI ↗
  • GET/api/pm/projects/{projectNo} — 상단 appbar 브레드크럼·fgptitle 의 프로젝트명·현황 조회
  • GET/api/search — 상단 CMD+K 전역 통합검색
  • GET/api/cm/notifications/unread-count · /api/cm/notifications — 상단 알림벨(🔔)의 안 읽은 수 배지와 펼친 목록. 화면은 1분마다 안 읽은 수를 묻는다 MISSING — ⏳ 서버·화면 반영 전 (#3596) (IF-CM-NOTIF-001 DE24-1 §6.6.5)
  • GET/api/fs/projects/{projectId}/dashboard — 측정 진행률·완료/측정중/대기 개소 KPI (IF-FS-DASH-001 §5.4.30)
  • GET/api/fs/projects/{projectId}/dashboard — 부호별 완료 개소·진행률·최근 측정일시 표는 같은 호출의 sections[] 로 받는다 (IF-FS-DASH-001 §5.4.30)
  • GET/api/fs/projects/{projectId}/dashboard — 「설계와 차이 큰 개소」 목록(종전 「이상 알림」)은 같은 호출의 alerts[] 로 받는다. 칸 이름은 바꾸지 않는다(#3603). 편차 초과 판정(R-FS-MEAS)은 서버가 측정을 저장할 때 하므로 이 목록은 실제로 찬다 (#946 — IF-FS-DASH-001 §5.4.30)
프로젝트  ›  A아파트 창호공사  ›  현장실측  ›  대시보드
CMD+K 검색
🔔3
A아파트 창호공사목록으로 돌아가기
타이틀 · 뒤로가기
현황 대시보드
현장실측 하위 탭
1현황 대시보드실측 데이터 검토
2측정 진행률 (KPI · FR-FS-007)
전체 진행률
60% (예시)
완료 개소 / 전체 개소 파생
완료 개소
24 (예시)
측정중
6 (예시)
실측 대기
10 (예시)
3진행률 바 60% (예시)
4완료 영역 (섹션·동별 · 예시 배치)
동/섹션 (단위 미확정)완료 개소전체 개소진행률최근 측정
AW01동 (예시)142070%07/06 14:20
AW02동 (예시)102050%07/05 09:10
컬럼·집계 단위(동/개소)와 표·차트 형태는 §11 TODO(ui-sketch)에서 확정 예정. 위 수치는 배치 검토용 예시(실측값 아님).
5설계와 차이 큰 개소
!AW03-2 (예시) — 편차 +12mm (허용 ±5mm). 크기 순으로 쌓인다(#2967).
ⓘ목록이 비었을 때: 「설계와 차이 큰 개소가 없습니다.」 · 「승인을 마친 측정은 이 목록에 넣지 않습니다.」 (#3603 · ⏳ 화면 반영 전 — 종전 「처리할 편차 초과 알림이 없습니다.」, #2656)
미확정. 카드 구성·차트 종류·KPI 필드·상태 variant(loading·empty·error)는 §11 본격 명세(S6~S10)에서 확정한다. 프로젝트 통합(전체) 대시보드 여부도 추후 결정.
SCR-FS-002실측 데이터 검토 목록/projects/:projectNo/field-survey?fs=measurements
모바일에서 올라온(push) 실측 데이터를 목록으로 보고, 간단한 건은 행에서 바로 검증·승인한다. 내보내기도 여기서 한다 (FR-FS-008, FR-FS-012, FR-FS-013). 조회 ROLE_FS_VIEWER 이상 · 검증·승인 ROLE_FS_REVIEWER·ROLE_ADMIN. 2026-10-12 오른쪽 상세 패널을 걷고 상세는 SCR-FS-003 별도 페이지로 옮겼다(#2825, ⏳ 서버·화면 반영 전). ⛔ 뒤집힘 2026-10-20 (#3705 · 10-20 회의 「확인 절차 없음」, ⏳ 서버·화면 반영 전) — 현장담당·관리자가 올린 회차는 저장 때 곧바로 「승인완료」다. 그 행에는 [검증]·[승인] 이 없고 처리자 칸에 올린 사람이 나온다. 편차를 넘은 회차는 빨간 표시만 달고 막지 않는다 — 제작팀이 표시를 보고 현장담당에게 전화로 확인한다. 아래 [검증]·[승인]·[고른 것 승인]·같은 부호 일괄 승인(4·9·10번)은 이 규칙 전에 올라온 옛 「검토대기」·「검증완료」 회차에만 나온다. 정본 §11 「뒤집힘 2026-10-20 (#3705)」 상자.

진입 — SCR-PM-016 프로젝트 상세 [실측] 탭 / 현장실측 하위 탭 [실측 데이터 검토] 전환 (또는 SCR-FS-001 대시보드에서 하위 탭 전환) / SCR-FS-003 실측 데이터 상세의 [목록으로] — 떠날 때의 거르개·쪽·스크롤 자리로 돌아온다

  1. 검색·상태 필터 — 개소 코드·이름 검색 입력과 상태 드롭다운을 조합해 [검색] 클릭 시 목록을 다시 조회한다. 검색은 개소만 찾는다 — 서버 keyword 가 개소 코드·이름 부분일치라 측정자는 걸리지 않는다(2026-08-18 바로잡음, #1021).
  2. 엑셀 내려받기 (#2829) — 걸러진 실측 데이터를 엑셀 파일 하나로 내려받는다. [엑셀 내려받기] 단추 하나만 두고 형식 고르개를 없앤다(늘 format=xlsx). 시트 셋 — 「실측」(측정 한 건당 한 줄: 설계·실측·내측·외측 가로·세로·편차·특이사항·사진 수·사진 시트 링크) · 「측정 항목」(종전 CSV 21 칸 그대로) · 「사진」(한 장당 한 줄: 특이사항 태그·한 줄 설명·촬영 시각·셀 안 그림). 사진을 링크로 두지 않는 까닭은 사진 주소가 한 시간 뒤 만료되어 파일만 받은 사람이 못 보기 때문이다. 사진이 500장을 넘으면 서버가 400 EXPORT_TOO_MANY_PHOTOS 로 막고 「개소·기간을 좁혀 주세요」를 알린다. 서버가 받는 거르개는 상태·개소·기간 넷이고, 받지 않는 조건이 걸려 있으면 바 아래에 그 이름을 적는다. CSV·PDF 는 화면에서 감추고 서버는 남긴다. ✅ 서버 #2851 · 화면 #2852 반영 — 종전 화면은 형식 고르개(CSV 기본·PDF)와 [↧ 내보내기] 였다.
  3. 측정 목록 — 13 칸 (#2825) — 부호 · 개소(코드·이름) · 회차 · 설계 가로 · 설계 세로 · 실측 가로 · 실측 세로 · 편차(가로·세로) · 사진 · 측정자 · 측정일시 · 상태 · 처리. 실측 값은 한 칸에 한 값이다 — 고르는 규칙은 내보내기 대표값 규칙과 같다(채택한 쪽 → 부위 미지정 줄 → 첫 줄). 안팎을 둘 다 잰 건은 값 옆에 작은 「안·밖」 표시를 붙이고, 두 값은 상세에서 본다. 편차가 허용치를 넘은 쪽은 굵게 쓰고 ⚠ 를 붙인다 — 기준은 서버가 저장 때 매긴 flagged 이고 화면이 따로 두지 않는다(허용치는 #2826). 사진 칸은 사진만 센 수를 「사진 N」으로 적고, 없으면 비운다(상세 치수 표의 📷N 은 사진·메모 수라 값이 다르다).
  4. 행 [검증]·[승인] (#2825) — 📌 #3705 — 이 단추는 옛 회차에만 나온다(머리 설명). 「검토대기」 행에는 [검증], 「검증완료」 행에는 [승인] 이 보인다. 상태 이름은 정본 §11 「측정 상태 이름」 표를 따른다(#2972). 승인·반려가 끝난 행은 비운다. 그 단계를 처리할 수 있는 사람에게만 보인다(아래 「실측 검토·승인 규칙」). [검증]은 확인 없이 바로 처리하고(편차를 넘은 회차만 확인창), [승인]은 확인창을 묻는다. 되돌리기는 없다(서버에 되돌리는 주소가 없고 승인은 종단이다). 행 하나에 버튼 하나다. 여러 행을 골라 한 번에 승인하는 길은 따로 둔다 — 2026-10-15 #3203 ③ 에서 편차 안인 회차를, 2026-10-19 #3603 에서 같은 부호끼리 고른 편차 초과 회차까지 넓혔다(아래 9·10번). 안팎을 둘 다 잰 개소(sideMode=BOTH)는 검증 때 채택을 골라야 해서 [상세에서 검증] 을 둔다. 반려는 사유를 적어야 하므로 상세에서만 한다.
  5. 「편차 큰 건만」·「사진 있는 건만」 (#2825) — 앞은 목록 조회 flaggedOnly(서버 있음, 화면 칸 ⏳), 뒤는 photoOnly(⏳ 서버·화면 반영 전)다. 종전 「사진 없는 편차 초과만」은 그대로 둔다. flaggedOnly 는 세션의 어느 줄이든 넘으면 걸리므로, 편차 칸이 강조되지 않은 행(대각·환풍구 줄이나 채택 안 한 쪽 줄만 넘음)도 걸린다. 그 행은 상세에서 본다.
  6. 특이사항 태그로 거르기 (#847) — 앱이 사진·메모에 붙인 「손상」·「불균형」·「기타」 가운데 하나를 골라 그 태그가 붙은 측정만 남긴다(조회 조건 attachIssueTag). 목록 행에는 태그를 따로 그리지 않는다 — 걸러서 상세로 들어가 보는 동선이다. 태그는 앱에서 필수가 아니라 안 붙은 사진도 있다.
  7. 개소·기간 거르개 (#1021) — 개소 고르개는 여러 개소를 함께 고른다. 기간은 시작일·종료일 두 칸이고 yyyy-MM-dd 로 보내며, 재는 기준은 측정 시각(measured_at)이다. 두 칸은 목록 조회와 내보내기에 같은 값으로 실린다. 시작일이 종료일보다 뒤면 화면이 먼저 막는다. 개소 후보는 GET /api/fs/projects/{projectId}/areas 에서 다 받을 때까지 이어 받아 합친다.
  8. 상세로 가는 길·돌아오는 길 (#2825) — 행(처리 칸 밖)을 누르면 SCR-FS-003 으로 간다. 목록 상태는 주소 질의값으로 들고 다닌다 — 거르개·쪽을 목록 주소에 싣고(§00 §5.6), 그 주소 전체를 returnTo 로 상세에 넘긴다. 상세의 [목록으로] 는 그 주소에 방금 본 측정 번호(focus)를 붙여 돌아오고, 목록은 그 행이 보이게 스크롤해 고른 표시로 그린다. 오른쪽 상세 패널은 걷었다.
  9. 실측 검토·승인 규칙 (#3203 결정 2026-10-15 · ⏳ 반영 전) — ⛔ 뒤집힘 2026-10-20 (#3705) — 새로 올라오는 회차에는 쓰지 않고 옛 회차에만 쓴다. 검증은 그 프로젝트의 현장담당(SITE 멤버)·ROLE_FS_REVIEWER·ROLE_ADMIN, 승인은 받는 쪽(ROLE_FS_REVIEWER·ROLE_ADMIN)이 한다. 한 회차를 검증한 사람은 그 회차를 승인하지 못한다(관리자도) — 그 행에는 「다른 사람이 승인합니다」를 적는다. 편차를 넘은 회차(서버가 주는 approveReasonRequired)는 [상세에서 승인] 을 두고, 상세 확인창이 넘은 항목·크기(mm)·허용치를 보이며 승인 사유 한 줄을 받는다. 일괄 승인 — 행 고르기 칸 + [고른 것 승인], 100건까지, 채택 없는 「둘 다」 행·내가 검증한 행은 고르지 못한다(까닭은 말풍선). 결과는 「N건 승인 · M건 실패」. 편차를 넘은 행도 이제 고른다 — ⛔ 뒤집힘 2026-10-19 (#3603), 아래 10번. 정본 §11 「실측 검토·승인 규칙」 상자.
  10. 같은 부호 일괄 승인 (#3603 결정 2026-10-19 · 서버 변경 없음 · ⏳ 화면 반영 전) — ⛔ 뒤집힘 2026-10-20 (#3705) — 옛 「검증완료」 회차에만 쓴다. 진입: 이 목록에서 「검증완료」 행의 고르기 칸을 눌러 행을 고르고 [고른 것 승인] 을 누르면 확인창이 뜬다. 고르기 — 편차를 넘은 행(approveReasonRequired)도 고르기 칸을 연다. 고른 행에 편차를 넘은 행이 하나라도 있으면 고른 행이 모두 같은 부호여야 하고, 다른 부호가 섞이면 [고른 것 승인] 을 잠그고 「편차를 넘은 실측은 같은 부호끼리만 함께 승인합니다.」를 말풍선으로 적는다. 부호가 없는 편차 초과 행은 고르기 칸을 잠그고 「부호가 없는 실측은 상세에서 승인합니다.」를 적는다. 행을 하나 고르면 고르기 줄에 [같은 부호 모두 고르기 ({부호})] 가 뜨고, 이 쪽에 보이는 그 부호의 고를 수 있는 「검증완료」 행을 모두 고른다(서버 조회 없음). 확인창 — 머리 글 「고른 N건을 승인합니다. 그 가운데 편차를 넘은 건이 M건(부호 {부호}) 있습니다. 승인하면 되돌릴 수 없습니다. 승인한 실측은 제조의 절단 재계산이 씁니다.」(M 이 0 이면 종전 확인창). 편차를 넘은 M건 표(개소 · 회차 · 가로/세로 편차 · 넘은 항목 수 · 가장 큰 편차)와 그 아래 「항목별 값은 개소를 누르면 상세에서 봅니다.」 — 개소 이름은 SCR-FS-003 새 탭 링크다. 사유 단추 둘 「위치별 실제 차이(타입 나누기 대상)」·「도면이 옛 치수라 실측을 따름」은 누르면 칸에 글을 채우고 이어 고칠 수 있다. 「공통 승인 사유」 칸(1~500자)이 비거나 공백뿐이면 [승인] 을 잠근다. 보내기 — 편차를 넘은 M건은 단건 approve 에 { "reason": 공통 사유 } 를 실어 건마다, 나머지는 bulk-approve 한 번. 결과는 「N건 승인 · M건 실패」. 행 하나의 [상세에서 승인] 은 그대로 둔다. 정본 §11 「같은 부호 일괄 승인」 상자.
  11. 사이즈 타입 알림 줄 (#3589 결정 2026-10-19 · ✅ 서버 #3585 · ⏳ 화면 반영 전) — 거르개 바 위에 「실측이 끝난 묶음 가운데 사이즈 타입 수를 정할 묶음이 N개 있습니다.」와 [사이즈 타입 정하기] 를 둔다. 묶음 목록 응답의 sizeTypesPending 이 0 보다 큰 묶음을 세고, 0 이면 줄을 그리지 않는다. 보이는 사람 — 그 프로젝트의 현장담당(SITE 멤버)·ROLE_ADMIN. 그리고 실측 역할(ROLE_FS_VIEWER 이상)이 있어 들어온 실측담당(MEASURER 멤버). ⛔ 뒤집힘 (#3704 — 실측담당 걷음). ROLE_FS_REVIEWER 만 가진 사람에게는 보이지 않는다. ⛔ 뒤집힘 2026-10-19 (#3612) — 실측 역할이 없는 실측담당은 이 목록에 오지 않고, 웹 문은 SCR-PM-025 현장 관리(project.html)다. 누르면 — 묶음이 하나면 그 묶음의 「사이즈 타입 정하기」 창을, 둘 이상이면 묶음 고르개(차수·이름·정할 부호 수)를 먼저 연다. 창은 SCR-PM-025 의 창과 같은 것이다(정본 §06 SCR-PM-025 ⑤).
  12. 부호 그림 (#4166 · #4167 · FR-ES-025 · ⏳ 서버 · 화면 반영 전) — 「부호」 칸 부호 글자 앞에 작은 칸 40 px. 같은 부호끼리 한꺼번에 승인하기 전에 맞는 창인지 본다. 그림은 부호 단위라 같은 부호의 개소 줄은 같은 그림이다. 마우스를 올리면 240 px 미리보기가 뜬다. 부호가 없는 줄(EV-1)과 칸이 없는 부호는 같은 크기 빈 자리에 「그림 없음」 — 줄 높이는 그대로다. 이 자리 정본은 11_FS SCR-FS-002 「목록 칸」 1 이다. 크기 · 상태 문구 · 56 px 이하 줄여 그리기 · 꼬리표 규칙은 DE22-1 §00 §10 이 정본이다.
  13. [← 현장 관리로] · 낱말 (📌 #4181 · ⏳ 화면 반영 전) — 현장 관리(SCR-PM-025) [진행 상황] 의 「실측 보기」로 들어오면 주소에 returnTo=/site-management/{no}?tab=progress&batch={batchId} 가 실려 온다. 그때 머리(fgptitle) 오른쪽에 [← 현장 관리로] 보조 단추를 두고, 누르면 같은 현장 · [진행 상황] 탭 · 그 묶음 줄 강조로 돌아간다. 상세(SCR-FS-003)에 다녀와도 떨구지 않는다. 위 알림 줄 · 단추 이름은 「타입 수 정하기」(Q4, 종전 「사이즈 타입 정하기」). 정본 §11 SCR-FS-002 「📌 #4181 결정」 상자 · §00 §9.2.
관련 API Swagger UI ↗
  • GET/api/pm/projects/{projectNo} — 상단 appbar 브레드크럼·fgptitle 의 프로젝트명 조회
  • GET/api/search — 상단 CMD+K 전역 통합검색
  • GET/api/cm/notifications/unread-count · /api/cm/notifications — 상단 알림벨(🔔)의 안 읽은 수 배지와 펼친 목록. 화면은 1분마다 안 읽은 수를 묻는다 MISSING — ⏳ 서버·화면 반영 전 (#3596) (IF-CM-NOTIF-001 DE24-1 §6.6.5)
  • GET/api/fs/projects/{projectId}/measurements — 목록 13 칸·검색·상태 필터. 거르개 flaggedOnly·unphotographedFlaggedOnly·attachIssueTag·areaIds·dateFrom·dateTo, 그리고 ⏳ photoOnly. 행 칸 ⏳ designWidthMm·designHeightMm·measuredWidthMm·measuredHeightMm·bothSidesMeasured·widthDeviationMm·heightDeviationMm·widthFlagged·heightFlagged·photoCount 서버 반영 전 (IF-FS-MEAS-002 §5.4.31)
  • GET/api/fs/projects/{projectId}/areas — 개소 고르개의 후보 목록. 서버가 나눠 주므로(한 쪽 기본 200개) 다 받을 때까지 이어 받아 합친다 (IF-FS-AREA-001 §5.4.5)
  • POST/api/fs/measurements/{measurementId}/verify — 행 [검증]. SUBMITTED → VALIDATED. sideMode=BOTH 는 채택이 필요해 행에서 보내지 않고 상세로 간다 (IF-FS-REVIEW-001 §5.4.32)
  • POST/api/fs/measurements/{measurementId}/approve — 행 [승인]. VALIDATED 에서만 누를 수 있다. 단추는 검토 역할에게만 보인다 (IF-FS-REVIEW-001 §5.4.32, FR-FS-013)
  • POST/api/fs/measurements/{measurementId}/approve — 같은 부호 일괄 승인에서 편차를 넘은 건마다 본문 { "reason": 공통 사유 } 를 실어 부른다. 사유가 없으면 422 FS_APPROVE_REASON_REQUIRED. 주소는 새로 두지 않는다 ⏳ 화면 반영 전 (#3603) (IF-FS-REVIEW-001 §5.4.32 ②)
  • POST/api/fs/measurements/bulk-approve — [고른 것 승인] 의 편차 안인 행. 본문 { "measurementIds": [...] }, 1~100건, 건마다 따로 처리해 「N건 승인 · M건 실패」 (IF-FS-REVIEW-001 §5.4.32 ③)
  • GET/api/fs/projects/{projectId}/batches — 사이즈 타입 알림 줄. 묶음마다 sizeTypesPending(정해야 하는데 저장되지 않은 부호 수) 을 센다 (✅ 서버 #3585 0ad82e9b · IF-FS-BATCH-001 §5.4.38). 「사이즈 타입 정하기」 창의 주소는 SCR-PM-025(project.html) 에 적는다
  • GET/api/fs/measurements/export?format=xlsx — [엑셀 내려받기]. projectId 와 format 이 필수이고 화면은 늘 xlsx 를 보낸다. csv·pdf 는 서버에 남기되 화면에서 부르지 않는다. 사진 500장 초과는 400 EXPORT_TOO_MANY_PHOTOS. 서버가 받는 거르개는 상태·개소·기간 넷이고(#1021), 받지 않는 조건이 걸려 있으면 바 아래에 그 이름을 적는다 (IF-FS-EXPORT-001 §5.9.3)
  • GET/api/fs/projects/{projectId}/sections — 부호 동기화(IF-FS-SECTION-001 §5.9.5) items[] 의 부호 그림 칸 cropPictureUrl(그림 주소 — 읽을 때마다 서버가 한 시간짜리를 새로 발급, 화면이 오래 들고 있지 않는다) · cropPictureStatus(그림 상태 PENDING · RENDERED · SKIPPED · FAILED, null 은 SKIPPED 로 읽는다). 웹 실측 목록 · 상세만 읽고 앱은 읽지 않는다(§5.9.5 #3979 상자 「웹 예외」). DE24-1 §5.4.13 「부호 그림 칸」(#4168) · ⏳ 서버 반영 전 #4171
프로젝트  ›  A아파트 창호공사  ›  현장실측  ›  실측 데이터 검토
CMD+K 검색
🔔3
A아파트 창호공사← 현장 관리로목록으로 돌아가기
현장실측 하위 탭
현황 대시보드실측 데이터 검토
11사이즈 타입 알림 줄 (#3589 · ⏳ 화면 반영 전) — 정할 묶음이 0 이면 그리지 않는다
ⓘ실측이 끝난 묶음 가운데 타입 수를 정할 묶음이 2개 있습니다.타입 수 정하기
필터바 · 액션
1개소 코드·이름 검색 상태 전체 6특이사항 태그 전체 7개소 전체 (여러 개 고름) 7시작일 yyyy-MM-dd 7종료일 yyyy-MM-dd
5☐ 편차 큰 건만 5☐ 사진 있는 건만 ☐ 사진 없는 편차 초과만 검색 2↧ 엑셀 내려받기
3측정 목록 (모바일 push) — 화면 너비 표
102건 고름 (편차를 넘은 건 1건 · 부호 AW02) 같은 부호 모두 고르기 (AW02) 고른 것 승인
10고르기부호개소회차설계 가로설계 세로실측 가로실측 세로편차 (가로 / 세로)사진측정자측정일시상태4처리
12AW03SITE-0031 (AW03-2)1차1600140016111402⚠ +11 / +2사진 1박현장 (현장담당)2026-10-20 14:10승인완료
☐ 잠김AW01SITE-0007 (AW01-3)2차180015001795 안·밖1498 안·밖-5 / -2사진 1hb2026-07-27 09:40검토대기상세에서 검증
☐AW01SITE-0008 (AW01-4)1차1800150018121503⚠ +12 / +3사진 2hb2026-07-27 10:05검토대기검증
☑AW02SITE-0011 (AW02-1)1차2400150024021499+2 / -1kim2026-07-26 15:12검증완료승인
☑AW02SITE-0013 (AW02-3)1차2400150025501500⚠ +150 / 0사진 1kim2026-07-26 15:48검증완료상세에서 승인
AW02SITE-0012 (AW02-2)1차2400150023981501-2 / +1사진 1kim2026-07-26 15:30승인완료
그림 없음—SITE-0020 (EV-1)2차——12052101—hb2026-07-25 11:00반려
행(처리 칸 밖)을 누르면 SCR-FS-003 실측 데이터 상세(아래 프레임)로 간다. 📌 #3705 — 맨 위 행(AW03-2)이 새 규칙의 회차다. 현장담당이 올려 처음부터 「승인완료」이고 처리 칸이 비었다. 편차를 넘어 ⚠ 표시만 달렸다. 그 아래 행들은 이 규칙 전에 올라온 옛 회차라 [검증]·[승인] 이 남는다(⏳ 서버·화면 반영 전). AW01-3 행은 안팎을 둘 다 잰 개소라 [상세에서 검증] 이고 고르기 칸이 잠긴다. AW01-4 행은 가로 편차가 허용치를 넘어 굵게 ⚠ 로 적었다. EV-1 행은 도면값이 없는 항목이라 설계·편차가 비었다. 쪽 이동은 종전대로 아래 「X / Y」 와 [이전]·[다음] 이다. AW02-3 행은 편차를 넘은 「검증완료」 행이라 처리 칸은 [상세에서 승인] 이지만, 같은 부호(AW02)끼리는 고르기 칸으로 함께 승인한다(#3603).
10[고른 것 승인] 확인창 (#3603 · ⏳ 화면 반영 전) — 위 고르기 줄의 [고른 것 승인] 을 누르면 뜬다
고른 것 승인
고른 2건을 승인합니다. 그 가운데 편차를 넘은 건이 1건(부호 AW02) 있습니다. 승인하면 되돌릴 수 없습니다. 승인한 실측은 제조의 절단 재계산이 씁니다.
개소회차편차 (가로 / 세로)넘은 항목 수가장 큰 편차
SITE-0013 (AW02-3) ↗1차⚠ +150 / 01+150.0mm
항목별 값은 개소를 누르면 상세에서 봅니다.
위치별 실제 차이(타입 나누기 대상) 도면이 옛 치수라 실측을 따름
공통 승인 사유 (1~500자) — 비어 있거나 공백뿐이면 [승인] 잠김
취소승인
개소 이름은 SCR-FS-003 상세를 새 탭으로 연다. 사유 단추는 누르면 칸에 그 글을 채우고 사람이 이어 쓰거나 고칠 수 있다(상세의 [승인] 확인창도 같은 목록). 편차를 넘은 건은 단건 approve 에 사유를 실어 건마다, 나머지는 bulk-approve 한 번으로 보낸다. 결과는 「N건 승인 · M건 실패」.
⏳ 서버·화면 반영 전. 지금 화면은 다섯 칸(개소·회차·측정자·측정일시·상태)과 오른쪽 상세 패널이다. 새 칸 여덟·photoOnly 는 IF-FS-MEAS-002 개정(#2825)을 서버가 반영해야 찬다.
SCR-FS-003실측 데이터 상세/projects/:projectNo/field-survey/measurements/:measurementId?returnTo=…
측정 한 건을 넓은 화면에서 구획으로 나눠 보고 검증·승인·반려한다 (FR-FS-008, FR-FS-012, FR-FS-013). 조회 ROLE_FS_VIEWER 이상 · 검토 동작 ROLE_FS_REVIEWER·ROLE_ADMIN. 2026-10-12 신설(#2825, ✅ 화면 반영 #2897) — 종전 SCR-FS-002 오른쪽 상세 패널의 내용을 구획 ③~⑥ 으로 옮겼다. 구획 정리 ✅ 화면 반영(#3768, FB-78) — 머리 한 줄에 검토 단추, 「개소·측정 정보」 한 구획, 한쪽만 잰 측정의 다른 쪽 열·안팎 차 숨김, 구획마다 같은 제목·경계. ⛔ 뒤집힘 2026-10-20 (#3705 · 10-20 회의 「확인 절차 없음」, ⏳ 서버·화면 반영 전) — 현장담당·관리자가 올린 회차는 처음부터 「승인완료」라 머리에 [반려]·[검증]·[승인] 이 없다. 잘못 잰 값은 다시 재어 올리면 새 회차가 이긴다. 머리 단추·「둘 다」 채택 뒤 [검증]·[승인] 확인창 — 승인 사유는 이 규칙 전에 올라온 옛 「검토대기」·「검증완료」 회차에만 쓴다. 정본 §11 「뒤집힘 2026-10-20 (#3705)」 상자.

진입 — SCR-FS-002 실측 데이터 검토 목록에서 행(처리 칸 밖)을 누른다, 또는 그 행의 [상세에서 검증]·[상세에서 승인] 을 누른다 · 복귀 — 머리의 [목록으로] 를 누르면 returnTo 의 목록 주소로 돌아간다(거르개·쪽 유지, focus 로 그 행까지 스크롤). returnTo 가 없으면 거르개 없는 첫 쪽 목록으로 간다

  1. 머리 — [목록으로]·검토 동작 — 개소 이름·회차·상태 배지와 [반려]·[검증]·[승인] 을 둔다. 버튼 규칙은 종전 상세 패널과 같다(검증 SUBMITTED → VALIDATED, 승인은 VALIDATED 에서만, 반려는 SUBMITTED·VALIDATED 에서, 종단은 잠금). 반려는 이 화면에서만 한다 — 사유 1~500자 필수 대화창. 검토 권한이 없으면 동작 묶음을 그리지 않는다.
  2. ① 개소 정보 — 부호 · 개소 코드 · 이름 · 도면 위치(개소 마커를 얹은 도면). 값은 상세 조회에 이미 있다. 화면은 「개소·측정 정보」 한 구획에 부호·측정자·측정일시·재는 쪽·채택을 모은다(#3768). 개소 이름·회차는 머리가 적어 다시 적지 않는다. 재는 쪽과 채택은 「둘 다」로 잰 개소에서 두 칸, 한쪽만(또는 구분 없이) 잰 개소에서 「재는 쪽 · 채택」 한 칸이다(#3768 검증 회송, 화면 PR #1414).
  3. ② 설계 치수 — 항목별 도면값 한 벌. 도면값은 「만들 창호의 치수」라 안팎 축이 없다.
  4. ③ 측정 회차별 값 — 회차 고르개. 같은 개소의 다른 회차(history[])를 고르면 그 회차의 상세로 바뀐다. returnTo 는 그대로 넘긴다.
  5. ④ 내측·외측과 안팎 차 (#842) — 두 쪽을 좌우 열로 갈라 놓는다. 「안팎 차」는 화면이 계산해 보이고 저장하지 않는다. 재는 쪽(내측만·외측만·둘 다)은 ① 에 한 번만 적는다(#3768). 한쪽만 재기로 한 개소는 다른 쪽 열과 안팎 차 열을 숨긴다(#3768). 표 아래 안내문은 「표 읽는 법」 접는 안내에 담는다. 「둘 다」로 잰 개소는 여기서 채택을 고르고 [검증] 해야 저장된다. 채택 없이는 [승인] 이 잠긴다.
  6. ⑤ 편차 — 허용치를 넘은 항목(dims[].flagged)은 굵게 쓰고 ⚠ 를 붙인다. 아래에 견적 대조 표(도면값↔실측값↔견적값, 읽기 전용)를 둔다. 커튼월 부호(#2969, 서버·화면 반영 전) — 대조 응답 compareBasis 가 FRAME 이면 견적값은 커튼월 틀 치수다. inCellWindow 가 참이면 「칸 안 미서기 개소」 표지와 안내 한 줄(승인하면 미서기 치수로 쓰임 · 틀을 쟀으면 대조 검증에서 커튼월 선에 다시 잇기)을 단다.
  7. ⑥ 사진·메모·음성 — 사진 축소본은 잘라 채우지 않고 통째로 담아 보이며, 누르면 겹창에 원본이 뜬다(#1457). 치수 표 줄을 고르면 도면 패널에 찍힌 자리가 뜬다(#947). 음성은 받을 자리가 없다 — 첨부 종류가 PHOTO·MEMO 둘뿐이다. 둘지는 열린 질문이다.
  8. ⑦ 검증·승인·반려 이력 — 회차마다 상태·반려 사유·측정자·측정일시를 보인다. 누가 언제 검증·승인·반려했는지와 승인 사유도 보인다(#3203 ①, ⏳ 서버 반영 전). 칸이 생기기 전 회차는 「기록 없음」. 실측일과 앱 저장 날짜가 다르면 「실측일 고침」 표시를 단다(#3203 ④).
  9. [승인] 확인창 — 승인 사유 (#3203 ② · 사유 단추 #3603) — 편차를 넘은 회차는 넘은 항목마다 이름·편차(mm)·허용치를 적고 「승인 사유」 칸(1~500자)을 둔다. 비어 있으면 [승인] 을 잠근다. 칸 위에 사유 단추 둘 「위치별 실제 차이(타입 나누기 대상)」「도면이 옛 치수라 실측을 따름」을 둔다 — SCR-FS-002 일괄 승인 확인창과 같은 목록이다(정본 §11 「같은 부호 일괄 승인」 상자). 편차 안인 회차는 종전 확인 문구 그대로다.
  10. 부호 그림 (#4166 · #4167 · FR-ES-025 · ⏳ 서버 · 화면 반영 전) — ① 개소 정보의 부호 줄 옆에 큰 미리보기 240 px. 누르면 「크게 보기」 창. 잰 치수를 창 모양과 나란히 본다. 상세라서 칸 없는 부호는 자리를 두지 않고, 그리지 못한 부호는 부호 줄 아래 회색 한 줄로 까닭을 적는다. 이 자리 정본은 11_FS SCR-FS-003 구획 표 ① 이다. 크기 · 상태 문구 · 56 px 이하 줄여 그리기 · 꼬리표 규칙은 DE22-1 §00 §10 이 정본이다.
관련 API Swagger UI ↗
  • GET/api/cm/notifications/unread-count · /api/cm/notifications — 상단 알림벨(🔔)의 안 읽은 수 배지와 펼친 목록. 화면은 1분마다 안 읽은 수를 묻는다 MISSING — ⏳ 서버·화면 반영 전 (#3596) (IF-CM-NOTIF-001 DE24-1 §6.6.5)
  • GET/api/pm/projects/{projectNo} — 상단 appbar 브레드크럼·fgptitle 의 프로젝트명 조회
  • GET/api/fs/measurements/{measurementId} — 개소·부호·치수 줄(도면값·실측값·편차·flagged·쪽·도면 좌표·항목별 사진·메모 수)·사진·메모(downloadUrl·issueTag)·같은 개소 다른 회차 history[]·rejectReason (IF-FS-MEAS-002 §5.4.31)
  • GET/api/fs/measurements/{measurementId}/reconcile — 도면값↔실측값↔견적값 대조(읽기 전용, 견적 원본 불변). 견적 라인에 안 이어졌으면 422 안내. 커튼월 부호는 compareBasis(LINE·FRAME)·inCellWindow 를 더 싣는다(#2969, 서버 반영 전) (IF-FS-RECONCILE-001 §5.4.33)
  • GET/api/es/drawings/{drawingId}/json — 도면 패널 배경 벡터. 실측 역할에도 열려 있다(#1608) · 도면 이름과 축척은 IF-FS-DRAWING-001 (IF-ES-DRAWING-JSON-001 §5.4.23)
  • POST/api/fs/measurements/{measurementId}/verify — [검증]. SUBMITTED → VALIDATED. 「둘 다」로 잰 개소는 adoptedSide(내측·외측)를 함께 보낸다 (IF-FS-REVIEW-001 §5.4.32)
  • POST/api/fs/measurements/{measurementId}/approve — [승인]. VALIDATED 에서만. 편차를 넘은 회차는 본문 reason(승인 사유)을 싣는다. 「둘 다」로 잰 개소는 채택이 비면 422 (IF-FS-REVIEW-001 §5.4.32)
  • POST/api/fs/measurements/{measurementId}/reject — [반려]. 사유 필수(1~500자), 개소를 재측정으로 되돌린다. 이 화면에서만 부른다 (IF-FS-REVIEW-001 §5.4.32)
  • GET/api/fs/projects/{projectId}/sections — 부호 동기화(IF-FS-SECTION-001 §5.9.5) items[] 의 부호 그림 칸 cropPictureUrl(그림 주소 — 읽을 때마다 서버가 한 시간짜리를 새로 발급, 화면이 오래 들고 있지 않는다) · cropPictureStatus(그림 상태 PENDING · RENDERED · SKIPPED · FAILED, null 은 SKIPPED 로 읽는다). 큰 미리보기도 같은 주소를 크기만 달리해 띄운다. DE24-1 §5.4.13 「부호 그림 칸」(#4168) · ⏳ 서버 반영 전 #4171
프로젝트  ›  A아파트 창호공사  ›  현장실측  ›  실측 데이터 검토  ›  SITE-0007 (AW01-3) 2차
CMD+K 검색
🔔3
A아파트 창호공사목록으로 돌아가기
1머리 — 목록으로 · 검토 동작
← 목록으로 SITE-0007 (AW01-3) · 2차 검토대기 반려 검증 승인
[반려] 는 사유 대화창(1~500자 필수)을 연다. 이 개소는 「둘 다」로 재서 ④ 에서 채택을 고른 뒤에만 [검증] 이 풀린다. [승인] 은 검증을 마친 뒤에만 풀린다.
9[승인] 확인창 — 편차를 넘은 회차 (#3203 ② · 사유 단추 #3603 · ⏳ 화면 반영 전) — 머리의 [승인] 을 누르면 뜬다
승인
편차를 넘은 항목이 있습니다 — 폭 +12mm (허용 ±5mm). 승인하면 되돌릴 수 없습니다. 승인한 실측은 제조의 절단 재계산이 씁니다. 승인할까요?
위치별 실제 차이(타입 나누기 대상) 도면이 옛 치수라 실측을 따름
승인 사유 (1~500자) — 비어 있거나 공백뿐이면 [승인] 잠김
취소승인
사유 단추는 SCR-FS-002 [고른 것 승인] 확인창(위 프레임 10)과 같은 목록이다. 누르면 칸에 그 글을 채우고 사람이 이어 쓰거나 고칠 수 있다. 저장값은 적힌 글 그대로다(approve_reason 자유 글). 편차 안인 회차는 사유 칸·사유 단추 없이 종전 확인 문구만 묻는다.
2① 개소 정보
부호AW01
10부호 그림누르면 「크게 보기」 창(화면 폭 80% · 머리 「부호 그림 — AW01」). 실측 앱 SCR-FSM-004 와 같은 그림이다.
그림 상태가 SKIPPED(칸 없음)면 이 줄을 두지 않는다. FAILED(못 그림)면 줄을 두지 않고 부호 줄 아래에 회색 한 줄로 「일람표 그림을 그리지 못했습니다 — 견적 도면 보관함의 일람표를 확인하세요」 를 적는다. PENDING 은 같은 크기의 파란 점선 자리다.
측정자hb
측정일시2026-07-27 09:40
재는 쪽둘 다
채택아직 고르지 않음
개소 코드·이름과 회차는 머리가 적어 다시 적지 않는다. 개소 마커를 얹은 도면은 ⑥ 도면 패널이 그린다(#3768). 「둘 다」로 잰 개소는 재는 쪽과 채택을 두 칸에 적는다 — 채택은 ④ 에서 고를 때마다 바뀌는 값이다. 한쪽만(또는 구분 없이) 잰 개소는 「재는 쪽 · 채택」 한 칸에 「내측만 재어 그 값을 씁니다」처럼 적는다 — 그 글이 이미 잰 쪽을 담는다(#3768 검증 회송, 화면 PR #1414).
3② 설계 치수
항목도면값
폭1800
높이1500
옆 칸 폭710
4③ 측정 회차별 값
2차 · 2026-07-27 09:40 (지금)
고르면 그 회차의 상세로 바뀐다. 1차 · 2026-07-25 14:10 · 반려.
5④ 내측·외측과 안팎 차 · 6⑤ 편차
항목사진·메모도면 위치도면값내측내측 편차외측외측 편차안팎 차
폭📷1📍 A-10118001795-51812⚠ +1217mm
높이📷1📍 A-10115001498-21505+57mm
대각📷0——2338—2345—7mm
옆 칸 폭📷0—710712+2구분 없음——
◉ 내측 채택○ 외측 채택
허용치를 넘은 칸은 굵게 ⚠ 로 적는다(색만으로 가르지 않는다). 「사진·메모」 열의 📷N 은 그 항목의 사진·메모 수다(#1512). 「안팎 차」는 화면이 계산해 보일 뿐 저장하지 않는다.
6견적 대조 (읽기 전용)
ⓘ도면값 · 실측값(채택한 쪽) · 견적값 대조 표 자리
⚠칸 안 미서기 개소 이 개소의 실측은 승인하면 칸 안 미서기의 치수로 쓰입니다. 개구부 틀을 잰 값이면 견적의 대조 검증에서 이 개소를 커튼월 선에 다시 이으세요. (커튼월 부호에서 inCellWindow 가 참일 때만, #2969)
7⑥ 사진 · 메모 · 음성
사진1
내측 폭
사진2
개소 전체
메모: 좌측 하단 프레임 찍힘 (손상)
!음성은 받을 자리가 없다 — 첨부 종류가 PHOTO·MEMO 둘뿐이다(열린 질문).
도면 패널 — 고른 치수 줄이 찍힌 자리 표식 + 개소 마커
8⑦ 검증 · 승인 · 반려 이력
회차상태반려 사유측정자측정일시
2차 (지금)검토대기—hb2026-07-27 09:40
1차반려폭 실측값이 도면 대비 12.5mm 초과. 재측정 요청.hb2026-07-25 14:10
누가 언제 검증·승인했는지는 서버가 저장하지 않아 보이지 못한다(열린 질문).
✅ 화면 반영(#2897 · 구획 정리 #3768). 값은 지금 상세 조회가 모두 준다(서버 새 작업 없음). ② 설계 치수 따로 된 구획(지금은 치수 표의 「도면값」 열)·③ 회차 고르개·⑤ 편차 강조(굵게 ⚠)는 ⏳ 화면 반영 전이다.