SYSTEM BLUEPRINT

닫히지 않은 평면도가
3D 공간이 되는 화면들

1차 결과 확인 · 확인 질문 보정 · 3D 뷰어 · 폐합 검수 · CAD 내보내기

스토리보드란?

스토리보드는 서비스의 화면을 실제 모습에 가깝게 미리 그려 보는 문서입니다. 어떤 값이 어디에 뜨고, 어떤 규칙이 언제 걸리는지를 화면 단위로 확정합니다.

  1. 공간을 맡긴 사용자가 링크를 열고 1차 결과를 확인한다
  2. 확인 질문에 답해 평면도를 확정하고, 잘못된 편집은 거부된다
  3. 확정된 평면도가 3D로 올라가 모바일 웹에서 열린다
  4. 운영자는 그 뒤편에서 폐합을 검수하고 CAD와 정확도 리포트를 내보낸다

마지막까지 보시면 불완전한 1차 결과가 어떤 화면을 거쳐 서비스에 쓸 수 있는 공간 데이터가 되는지 머릿속에 그려지실 것입니다.

사용자 시나리오

사용자는 확인만 합니다

앱 설치 없이 링크로 열고, 질문에 답하고, 3D를 받습니다

링크 열기

문자로 받은 링크를 열면 모바일 웹이 바로 뜹니다.

1차 결과 확인

열린 구간과 추정 벽이 어디인지 도면에서 봅니다.

확인 질문 답변

예·아니오 질문 3건에 답하면 재계산됩니다.

평면도 확정

닫힌 평면도와 방별 면적이 확정됩니다.

3D 받기

3D 공간과 치수를 보고 링크로 공유합니다.

사용자 | 화면 01

1차 결과 확인

1차 측정 결과SCAN-2609-0184
수신검증폐합 68%3D뷰어
거실
주방
욕실
현관
침실1
침실2
관측 9추론 1미관측 1개방 2
1차 wall graph · 코너 14개 중 추정 3개
폐합 계산 진행 중68%
점군 182,431점제약 37건 적용경과 12초
확인이 필요한 곳 자동 확정 9곳 · 확인 3곳
현관 오른쪽 외벽
개방 구간 480mm · 폐합 후보 2개
확인 필요
침실2 좌측 내벽
미관측 · confidence 0.34
확인 필요
주방·거실 경계
부분관측 · 벽 두께 추정 폭 60mm
확인 필요
욕실 안쪽 코너
관측 프레임 3장 · 코너 미검출
재촬영 권장
확인 3건에 답하면 평면도가 닫힙니다. 재촬영 권장 1건은 답하지 않아도 진행할 수 있으나 해당 구간 치수는 추정값으로 남습니다.
확인하고 평면도 확정하기
내 공간
도면
알림
마이

[화면 개요 및 목적]

1차 wall graph가 아직 닫혀 있지 않다는 사실을 사용자에게 처음 보여줍니다. 선 종류가 곧 상태입니다 — 실선은 관측된 벽 9개, 옅은 점선은 추론 벽 1개, 주황 점선은 미관측 벽 1개, 붉은 원은 개방 구간 2곳(480mm·410mm)입니다. 코너 14개 중 속이 빈 원 3개가 추정 코너입니다.

[핵심 기능 로직]

상단 단계 칩은 수신·검증이 끝나고 폐합이 68% 진행 중임을 보여줍니다. 아래 목록은 자동 확정된 9곳을 빼고 사람이 판단할 3건만 남깁니다. 관측 프레임이 3장뿐인 욕실 안쪽은 '재촬영 권장'으로 분리해, 억지로 닫지 않고 다시 찍을 구간을 지목합니다. 미관측 벽은 라벨이 아니라 confidence 0.34 라는 값으로 적습니다.

  • 불완전 입력 수용
    wall graph 파서 + 관측 상태 판정
  • 잘못된 입력 차단
    JSON Schema 입력 계약 v1 검증기
사용자 | 화면 02

질문 · 보정

평면도 확인3건 중 2번째
거실
주방
욕실
현관
침실1
침실2
질문이 가리키는 곳 · 침실2 좌측
묻는 벽확정 벽미관측
이 위치로는 옮길 수 없습니다
벽이 서로 교차해 평면도가 닫히지 않습니다(자기교차 1곳). 가장 가까운 유효 위치 2,680mm로 맞출까요?
거부됨
Q2 · 영향도 높음
거실과 침실2 사이에
벽이 있습니까?
촬영에서 이 구간이 관측되지 않았습니다(confidence 0.34). 답에 따라 전용면적 0.3㎡ · 걸레받이 5.4m 차이.
있습니다
없습니다
답변은 제약으로 저장됩니다 · 재촬영해도 유지전용면적 51.6㎡
지금까지 저장된 조건
현관 개방 구간문 900mm 로 확정
침실1 벽 길이3,300mm 직접 입력
Q1답변 완료
Q2답변 대기
Q3답변 대기
Q1 답변이 제약으로 저장되었습니다
내 공간
도면
알림
마이

[화면 개요 및 목적]

보정을 CAD 편집이 아니라 질문으로 끝내는 화면입니다. 엔진이 확정하지 못한 구간만 영향도 순으로 질문을 만들어 한 번에 한 건씩 띄우고, 도면에서는 지금 묻는 벽 하나만 밝게 강조합니다. 진행은 '3건 중 2번째'로 표시합니다.

[핵심 기능 로직]

질문 카드는 답이 전용면적을 0.3㎡ 바꾼다는 것을 먼저 알리고, 답변 즉시 재계산된 51.6㎡를 같은 카드에 보여 줍니다. 답변은 좌표가 아니라 제약으로 저장되어 재촬영 후에도 유지됩니다(하단 '저장된 조건'). Q1 답변은 제약으로 저장되고, 남은 Q2·Q3는 답변 대기로 남습니다. 위 붉은 배너는 자기교차가 생기는 위치로 벽을 옮기려 했을 때의 거부 화면으로, 사유와 가장 가까운 유효 위치 2,680mm를 함께 제시합니다.

  • 질문 몇 개로 끝나는 보정
    영향도 정렬 질문 생성 + 증분 재풀이
  • 깨진 평면도 차단
    제약 저장 + Shapely 유효성 검사 후 커밋
사용자 | 화면 03

3D 뷰어

내 공간 3D
평면도
3D
층고 2,400mm · 내벽 100 / 외벽 200mm
삼각형 42,180GLB 1.6MB앱 설치 없이 열림
전용면적
51.6㎡
방 6개 · 개구부 6개
벽면적 128.6㎡
방별 치수 확정 = 내가 확인한 값
거실
4,200 × 3,600 mm
15.12㎡확정
침실1
3,300 × 3,000 mm
9.90㎡확정
현관·복도
7,500 × 1,200 mm
9.00㎡자동
침실2
2,700 × 2,700 mm
7.29㎡확정
주방
2,700 × 2,400 mm
6.48㎡자동
욕실
2,100 × 1,800 mm
3.78㎡자동
걸레받이
47.4m
개구부
문 4 · 창 2
천장고
2,400mm
내 공간
도면
알림
마이

[화면 개요 및 목적]

확정된 평면도가 3D CAD 공간 모델이 되어 모바일 웹에서 열리는 화면입니다. 층고 2,400mm, 내벽 100 / 외벽 200mm, 삼각형 42,180개, GLB 1.6MB 라는 실제 모델 규모가 함께 보입니다.

[핵심 기능 로직]

방 목록은 면적이 큰 순으로 정렬합니다. 치수마다 출처 배지를 붙여 '확정'은 사용자가 확인 질문으로 직접 정한 값, '자동'은 엔진 추정값으로 구분합니다. 견적으로 넘길 값이 사람이 확인한 것인지 기계가 추정한 것인지 끝까지 남아야 하기 때문입니다. 전용면적 51.6㎡와 벽면적 128.6㎡는 메쉬가 아니라 방·벽·개구부 객체에서 계산된 값입니다.

  • 설치 없이 열리는 3D
    three.js WebGL2 + glTF(Draco) 로딩
  • 견적 수량 산출
    방·벽·개구부 속성 모델 + 수량 계산 함수
운영 · 검수 담당자 시나리오

운영은 파이프라인을 봅니다

어디서 멈췄고 무엇이 남았는지가 단계로 보입니다

1차 결과 수신

점군·wall graph·관측 상태가 들어옵니다.

입력 검증

계약을 어긴 필드를 지목해 되돌립니다.

폐합 검수

제약·잔차·신뢰 등급을 확인합니다.

CAD 내보내기

GLB·DXF·IFC와 견적 수량을 만듭니다.

정확도 확인

회귀 코퍼스 표로 품질을 잽니다.

운영 · 검수 담당자 | 화면 01

파이프라인 작업 큐

console.local/queue
평면도 폐합 콘솔
작업 큐
폐합 검수
내보내기
정확도
입력 규격
검수자 김도윤 · 운영팀
2026년 9월 18일 (금) · 파이프라인 작업 큐
오늘 처리 27건
자동 폐합
21건
사용자 확인
4건
검증 실패
2건
작업 ID대상 · 면적접수단계비고상태
SCAN-2609-0184성동구 · 51.6㎡오늘 10:42
수신검증폐합3D뷰어
폐합 68% · 제약 37건진행중
SCAN-2609-0183광진구 · 43.2㎡오늘 10:19
수신검증폐합3D뷰어
A등급 · 잔차 7mm완료
SCAN-2609-0182송파구 · 78.4㎡오늘 09:51
수신검증폐합3D뷰어
corners[].confidence 누락 3건검증 실패
SCAN-2609-0181성동구 · 33.9㎡오늘 09:33
수신검증폐합3D뷰어
B등급 · 사용자 확인 2건완료
SCAN-2609-0180중랑구 · 59.1㎡오늘 09:04
수신검증폐합3D뷰어
1차 결과 업로드 대기대기
SCAN-2609-0179성동구 · 24.7㎡어제 18:27
수신검증폐합3D뷰어
A등급 · 잔차 5mm완료
SCAN-2609-0178노원구 · 66.3㎡어제 17:58
수신검증폐합3D뷰어
point cloud 스케일 단위 불일치검증 실패
SCAN-2609-0182 입력 검증 실패검증 실패
1차 결과가 입력 계약 v1 을 어겨 파이프라인에 들어가지 않았습니다. 규격을 어긴 필드만 아래에 표시합니다.
· corners[7].confidence 누락 — 관측 상태를 판정할 수 없음
· walls[3].thickness_mm 단위 불일치 (m 로 전송됨)
· coord_frame 미지정 — 중력축 기준을 알 수 없음
검증 리포트 열기
재실행
입력 계약 v1 · 받는 것
metric point cloud
PLY · 밀리미터 · 중력축 -Z
182,431점
wall graph
노드 = 코너 xy + confidence
코너 14 · 벽 12
관측 상태
observed / partial / inferred
9 / 2 / 1
좌표계 · 스케일
coord_frame · scale 필수
metric 확인
중력축
up_axis · 층 바닥 기준면
-Z 확인
방 가설
선택 · 있으면 초기값으로 사용
미제공
계약을 어긴 입력은 파이프라인 앞에서 멈춥니다. 어느 필드가 왜 틀렸는지 돌려주므로 1차 쪽에서 바로 고칠 수 있습니다.

[화면 개요 및 목적]

수신·검증·폐합·3D·뷰어 다섯 단계를 하나의 파이프라인으로 묶어 보는 화면입니다. 행마다 단계 칩을 두고 도달한 단계까지 채워, 진행률 바 대신 '어디서 멈췄는가'가 바로 읽히게 했습니다.

[핵심 기능 로직]

실패를 뭉개지 않는 것이 핵심입니다. SCAN-2609-0182는 입력 계약 v1 위반으로 파이프라인에 들어가지 못했고, 아래 패널이 어긴 필드를 이름 그대로 보여 줍니다 — corners[7].confidence 누락, walls[3].thickness_mm 단위 불일치, coord_frame 미지정. 1차 쪽에서 그대로 고칠 수 있는 형태입니다. 오른쪽은 우리가 받기로 약속한 입력 규격입니다.

  • 단계별 재실행
    Celery 작업 큐 + 단계 상태 기록
  • 입력 사고 차단
    입력 계약 v1 · JSON Schema 검증 리포트
운영 · 검수 담당자 | 화면 02

폐합 검수 콘솔

console.local/closure/SCAN-2609-0184
평면도 폐합 콘솔
작업 큐
폐합 검수
내보내기
정확도
입력 규격
검수자 김도윤 · 운영팀
SCAN-2609-0184 · 성동구 · 폐합 검수
잔차 RMS 11mm최대 24mm · 임계 15mm
신뢰 등급
B
재풀이
폐합 전 · 후 비교회색 점선 = 1차 입력 / 파랑 = 폐합 결과
거실
주방
욕실
현관
침실1
침실2
폐합 결과 12벽1차 입력사용자 확정 2건
닫힌 polygon 1개 · 방 6개 · 전용면적 51.6㎡ · 자기교차 0
움직인 코너
6개
평균 14mm
메운 개방
2곳
480 / 410mm
반복 횟수
37회
수렴 0.8초
잘 관측된 벽은 거의 고정한 채 추론 구간이 오차를 흡수합니다 — 관측 코너는 평균 14mm 안에서만 움직였습니다.
적용된 제약 37건 중 주요 9건w = 관측 신뢰도 가중치
제약대상w잔차출처
wall_directionE01 · 외벽 상0.98±3mm관측 확정
perpendicularE01 ⟂ E020.960.2°관측 확정
wall_existsE12 · 침실2 좌측1.00고정사용자 확정
length_fixedE07 · 3,300mm1.00고정사용자 확정
gap_closureE04 ↔ E05 · 480mm0.41±22mm추론
collinearE09 ∥ E110.38±17mm추론
corner_snapN03 · 코너 스냅0.91±5mm관측 확정
thickness_priorE10 · 내벽 두께 100mm0.35±14mm추론
openingE04 · 문 900mm1.00고정사용자 확정
등급 판정 규칙
A
전 구간 관측 + 잔차 15mm 이하 → 확인 없이 3D 생성
B
추론 구간 존재, 질문으로 해소 가능 → 사용자 확인 요청 (현재 등급)
C
미관측 길이 비율 초과 → 재촬영 구간을 도면에 지목
이 작업은 추론 제약 3건이 남아 B 입니다. 사용자 답변 1건이 들어오면 A 로 승급하고 3D 생성이 자동으로 이어집니다.
사용자 보정 이력 · 제약으로 저장geometry 가 아니라 조건으로 남습니다
wall_exists · E12
침실2 좌측 벽 있음 — 답변 1건
10:47
length_fixed · E07
3,300mm 직접 입력
10:48
재풀이 2회
제약 추가 후 전체 재계산
10:48
1차 알고리즘이 개선되어 같은 촬영본을 다시 처리해도 이 조건들은 그대로 적용됩니다. 사용자가 같은 확인을 반복하지 않습니다.

[화면 개요 및 목적]

제약 기반 폐합 엔진의 내부를 사람이 보게 만든 화면입니다. 왼쪽은 1차 입력(회색 점선)과 폐합 결과(파랑)를 겹쳐 무엇이 얼마나 움직였는지 보여 주고, 오른쪽은 제약 37건 중 주요 9건을 출처와 함께 나열합니다.

[핵심 기능 로직]

제약 표의 w 열이 핵심입니다. 관측 신뢰도가 그대로 최적화 가중치가 되어, 잘 관측된 벽(w 0.98)은 거의 움직이지 않고 추론 구간(w 0.41·0.38)이 오차를 흡수합니다. 사용자가 확정한 제약은 w 1.00으로 고정됩니다. 등급 규칙은 A 확인 없이 3D 생성, B 사용자 확인 요청, C 재촬영 구간 지목이며, 이 작업은 B입니다.

  • 반드시 닫히는 평면도
    SciPy 최소제곱 제약 최적화 + 잔차 분배
  • 실패를 실패로 알림
    신뢰 등급 A·B·C 판정 + 재촬영 구간 지목
운영 · 검수 담당자 | 화면 03

내보내기 · 정확도

console.local/export
평면도 폐합 콘솔
작업 큐
폐합 검수
내보내기
정확도
입력 규격
검수자 김도윤 · 운영팀
회귀 코퍼스 124건 · 엔진 v0.9.3
자동 폐합률 78.3%
이전 v0.9.2 대비 +4.1%p
질문 개수 중위값 2건
CAD 내보내기 · SCAN-2609-0184
GLB
생성 완료
모바일 웹 뷰어용 · Draco 압축
1.6MB내려받기
DXF
생성 완료
2D 평면도 · AutoCAD R2013
284KB내려받기
IFC
생성중
BIM · IfcWall / IfcSpace / IfcDoor
내려받기
견적으로 넘기는 수량
모델에서 계산된 값입니다. 사람이 확인한 치수만 확정으로 표시합니다.
바닥 면적
장판 · 타일
51.6㎡확정
벽 면적
도배·욕실 타일 (개구부 차감)
128.6㎡확정
천장 면적
도배 · 조명 배치
51.6㎡확정
걸레받이 길이
몰딩
47.4m자동
문틀 둘레 길이
문 4개 · 규격 900×2,100
24.0m확정
창 면적
창 2개 · 규격 1,500×1,200
3.6㎡자동
개구부
문 4 · 창 2
6개확정
방 개수
거실 포함 · 복도 별도
6개확정
천장고 2,400mm 기준. 벽 두께는 내벽 100 / 외벽 200mm 로 적용했습니다.
다음 공정으로 넘기는 형태
공간 모델 JSON
방·벽·개구부 객체와 속성. 견적 엔진이 직접 읽는 형식
수량 산출표 CSV
위 항목을 그대로 내보낸 표. 단가만 곱하면 견적
제약 이력
어떤 치수를 사람이 확정했는지 남긴 기록
회귀 코퍼스 정확도 리포트실촬영 24건 + 합성 100건
케이스 종류건수길이 오차면적 오차질문 수판정
직교 · 전 구간 관측38건9mm0.4%0건통과
미관측 벽 1개31건18mm1.4%1건통과
개방 구간 2곳 이상26건24mm2.1%2건통과
좁은 복도 (폭 1.2m 이하)19건27mm2.4%2건통과
비직교 (45° 포함)17건41mm3.8%3건미달
개방형 거실·주방 (무벽 구분)11건52mm5.4%4건미달
유리·거울 반사 구간12건63mm6.2%4건미달
미달로 남은 세 종류는 숨기지 않고 그대로 둡니다. 비직교·개방형 거실·반사 구간은 착수 때 함께 정한 기준에 아직 못 미칩니다.
엔진 버전별 추이
v0.9.1
61.2%질문 4건
v0.9.2
74.2%질문 3건
v0.9.3
78.3%질문 2건
커밋마다 이 표가 다시 계산되므로, 엔진을 고친 것이 실제로 좋아진 것인지 바로 확인됩니다. 이 하네스가 납품물에 포함됩니다.

[화면 개요 및 목적]

3D CAD 산출물과 정확도를 한 화면에서 관리합니다. 같은 공간 모델에서 굽는 세 포맷 — 뷰어용 GLB 1.6MB, 2D 평면도 DXF 284KB, BIM용 IFC(생성중)입니다. 어느 포맷이 필요한지는 착수 1주차 확정 항목이라 세 갈래를 다 열어 두었습니다.

[핵심 기능 로직]

가운데 표가 '향후 견적'으로 이어지는 부분입니다. 바닥 51.6㎡, 개구부를 뺀 벽 면적 128.6㎡, 걸레받이 47.4m가 메쉬가 아니라 방·벽·개구부 객체에서 계산됩니다. 아래 표는 정확도를 문장이 아니라 숫자로 관리하는 장치로, 실촬영 24건 + 합성 100건을 커밋마다 다시 돌립니다. 기준에 못 미치는 세 종류는 '미달'로 남겨 둡니다.

  • 세 갈래 CAD 산출
    IfcOpenShell · ezdxf · trimesh glTF
  • 정확도를 숫자로 관리
    회귀 코퍼스 + CI 정확도 리포트
시나리오

| 화면 01

[화면 개요 및 목적]

[핵심 기능 로직]

    | 화면 02

    [화면 개요 및 목적]

    [핵심 기능 로직]

      | 화면 03

      [화면 개요 및 목적]

      [핵심 기능 로직]