상태 variant 토글 (8화면 연동)

현재 상태: default — 화면마다 해당 variant가 있을 때만 내용이 바뀌고 없으면 default 유지 (핵심: 002·004·007·008)

SCR-FSM-001로그인·프로젝트 선택

진입점 · 인증 → 프로젝트 목록·선택 → 도면·개소·섹션 다운로드·오프라인 캐싱(홈 요약 포함)

  1. 로그인 폼 — FS 전용 로그인 계약이 DE24-1에 확정돼 있지 않다(IF 갭). Phase 1 공통 인증 IF-CM-AUTH-001 재사용 여부는 미확정이다 (③·⑦)
  2. 프로젝트 카드 목록 — Project.project_id·Project.name 바인딩. 카드를 탭하면 도면·개소·섹션을 다운로드한 뒤 SCR-FSM-007로 자동 진입한다 (③·⑤)
  3. 캐시 상태 배지 — Drawing.cache_status. 도면 이미지 캐시 여부를 보여준다 (③)
  4. 최근 동기화 표시 — Project.last_sync_at (③)
  5. 로컬 저장 용량 표시 — "로컬 저장된 데이터 크기 표시"(FR-FS-006) 요구는 있으나 구체 필드는 소스에 없어 미확정이다 (③)
오프라인

1로그인

아이디 입력 자리
비밀번호 입력 자리
로그인

2프로젝트 선택 — 카드 목록 (Project.name)

프로젝트 A3캐시 완료

4최근 동기화(Project.last_sync_at) 자리

프로젝트 B다운로드 중

최근 동기화(Project.last_sync_at) 자리

프로젝트 C오프라인 · 캐시 없음

최근 동기화(Project.last_sync_at) 자리

5로컬 저장 용량 표시 자리 (필드 미확정)

프로젝트 다운로드 중

도면 · 개소 · 섹션(기준값 포함) 다운로드 중 — 완료 후 SCR-FSM-007로 자동 진입

프로젝트 선택

참여 중인 프로젝트가 없습니다
오프라인신규 다운로드 불가

프로젝트 선택 (로컬 캐시만 표시)

프로젝트 A캐시 완료
프로젝트 C캐시 완료
다운로드 (오프라인 · 비활성)
SCR-FSM-002BLE 페어링·연결전역

전역(프로젝트 무관) · 측정기 페어링·배터리·자동재연결 · 모든 화면 상태바의 BLE 칩에서 진입

  1. 상태바 BLE 칩(현재) — 프로젝트 진입 전후 어디서나 하단(상태바) 칩으로 접근하는 전역 화면이다 (①)
  2. BLE 스캔 목록 — 신호 강도 30dBm 이상인 근처 측정기만 표시한다 (③, FR-FS-001)
  3. 연결 상태 카드(device_id) — 연결됨·끊김·약함 표시. 장치 선택 → 자동 페어링, 앱 재시작 시 이전 장치 자동 재연결 (③·⑤)
  4. 배터리 레벨 — 20% 이하 주황 "배터리 부족", 5% 이하 빨강 "배터리 거의 없음" 경고 (⑤, FR-FS-009)
1BLE(현재) 오프라인

2BLE 스캔 목록 (신호 30dBm 이상만 표시)

레이저 측정기 #1신호 4/5
레이저 측정기 #2신호 3/5

3연결 상태 (device_id)

연결됨 · device_id 자리연결됨

4배터리 82%

신호 강도 4/5 바

단말 Bluetooth 꺼짐 — 설정에서 켜주세요
설정으로 이동 (자리)

연결 끊김

자동 재연결 시도 중… (최대 3회 · 2초 간격 — 재확인 필요, ⑤ 참조)

3회 실패 시 사용자 개입 요청 (FR-FS-009)

수동으로 다시 연결 시도
SCR-FSM-003개소 선택·목록

프로젝트 하위 · 개소별 업무상태 리스트 — SCR-FSM-007 도면 뷰어의 리스트형 대체 진입(fallback)

  1. 필터 칩(부호별) — Section.section_code 기준 동(섹션)별 필터, 다중 선택 가능, 기본값 "전체" (③·⑤, FR-FS-003)
  2. 개소 리스트 행 — Area.label. 행을 탭하면 SCR-FSM-004로 이동한다(SCR-FSM-007 마커 탭과 동일한 목적지) (③·⑤)
  3. 업무상태 배지 — Area.biz_status. 배색은 SCR-FSM-007이 정리한 잠정안을 재인용한다 — 재측정(빨강)은 근거 문서 어디에도 없는 임시 제안이다 (⑤)
  4. 정렬 옵션 — 개소명·진행 상태·측정 시간순 정렬을 제공한다 (③, FR-FS-003)
  5. 진행률 바 자리 — 프로젝트별·동별 진행률(파생 표시) — "진행률 바 표시" 요구만 있고 구체 필드는 소스에 없다 (③, FR-FS-003)
오프라인
1전체 AW01 AW02

4정렬: 개소명순(자리) · 필터: 업무상태별 · 동(섹션)별

2AW01-1 (Area.label)3실측대기
AW01-2 (Area.label)측정중
AW01-3 (Area.label)완료
AW01-4 (Area.label)재측정

5진행률 바 자리 (동별 파생 표시, FR-FS-003)

등록된 개소가 없습니다
오프라인
AW01-1 (로컬 캐시)실측대기
AW01-3 (로컬 캐시)완료

네트워크 복구 시 최신 목록으로 갱신

SCR-FSM-004실측 입력·결과

개소 하위 · W·H 기본 + 보조 라벨 자유 추가, 선택→측정→자동입력(BLE) 순차, 수동 입력 상시 병행, ±10% 검증(도면값 있는 항목), 재측정

  1. 측정 항목 리스트 — W(폭)·H(높이) 기본 상시 + 보조 라벨(사용자 추가). 데이터 바인딩 MEAS_DIM.dim_type을 사용자 정의 라벨로 확장(기존 W/H/대각선 고정 라벨에서 확장 — 구조설계 반영 후속 필요) (③)
  2. 항목 선택(arming) — 행을 탭하면 그 항목이 "측정 대기"로 하이라이트된다(한 번에 하나만 선택) (③·⑤)
  3. 측정 버튼 — 선택된(armed) 항목에 대해 BLE 측정을 트리거하고, 수신값(StandardMeasurement{dimType,value_mm,ts})이 그 항목에 자동 입력된다. 다음 항목을 다시 선택→측정→자동입력하는 순차 흐름이다 (⑤, FR-FS-002)
  4. 수동 입력 필드 — 어느 항목이든 BLE 연결 여부와 무관하게 키보드 또는 음성으로 항상 입력할 수 있다(BLE는 보조 수단) (③·⑤, FR-FS-002)
  5. + 보조 수치 추가 — 사용자가 라벨을 직접 입력해 행을 늘리거나 삭제한다(예: 대각선·W1·W2·H1·H2). 도면 기준값이 없는 보조 항목은 편차를 표시하지 않는다(도면값을 별도 입력하면 계산 — 확정 필요) (③·⑤)
  6. 재측정 이력 자리 — 동일 개소 재측정 시 새 측정 세션으로 이력이 누적된다 — 덮어쓰기가 아니다 (③·⑤)
오프라인
1라벨도면값실측값편차입력방식
W(폭)1800mm1795mm-0.3%BLE
2H(높이)1500mm측정 대기(자리)BLE 수신 대기
대각선(보조)도면값 없음2338mm— (도면값 없음)수동
W1(보조)도면값 없음수동입력 자리수동
3측정(BLE) → 선택된 H(높이)에 자동 입력
4실측값 수동 입력 (키보드 · 음성, 모든 항목 상시 가능)
5+ 보조 수치 추가 (라벨 직접 입력 자리)
저장

6재측정 이력 자리 (개소당 누적, 덮어쓰기 아님)

BLE 미연결 — 수동 입력 모드 (BLE는 보조 수단, 수동은 항상 가능)
라벨도면값실측값편차입력방식
W(폭)1800mm수동입력 자리(자리)수동
H(높이)1500mm수동입력 자리(자리)수동
실측값 수동 입력 (강조 — BLE 미수신 상태, 모든 항목 키보드로 입력)
저장
라벨도면값실측값편차입력방식
W(폭)1800mm1795mm-0.3%BLE
H(높이)1500mm1650mm+10.5% 초과BLE
편차 ±10% 초과 — 확인 후 저장하시겠습니까? (저장을 막지 않음, 도면값 있는 기본 항목만 검증)
취소
그래도 저장
SCR-FSM-005사진·메모 첨부

측정 하위 · 개소·측정 부속정보

  1. 사진 썸네일 슬롯 — PHOTO. 최대 5장, 업로드 전 최대 2MB/장으로 자동 압축한다 (③·⑤, FR-FS-010)
  2. 카메라·갤러리 버튼 — 촬영 또는 갤러리에서 선택한다 (③, FR-FS-010)
  3. 메모 입력 — MEMO. 최대 500자, 텍스트 또는 음성→텍스트 변환을 지원한다(장갑 착용 대응) (③·⑤, FR-FS-011)
  4. 태그 선택 — "손상"·"불균형"·"기타" 미리 정의된 태그 — 구체 필드명은 소스에 없어 미확정이다 (③, FR-FS-011)
  5. 촬영 시간 메타 자리 — 사진 메타정보로 촬영 시간을 자동 기록 — 구체 필드명은 소스에 없어 미확정이다 (③)
오프라인

1사진 첨부 (최대 5장, PHOTO)

사진1
사진2
빈 슬롯
빈 슬롯
빈 슬롯
2카메라
갤러리

3메모 (MEMO, 최대 500자)

메모 입력 자리 (텍스트 또는 음성 입력)
128/500자
음성 입력
4손상 불균형 기타

5촬영 시간 메타 자리 (필드 미확정)

오프라인 (로컬 저장)
사진1
빈 슬롯
빈 슬롯
메모 입력 자리 (로컬 저장 중)

네트워크 연결 시 측정 데이터와 함께 자동 동기화 대기열에 등록

SCR-FSM-006오프라인 저장·동기화

프로젝트/전체 · 로컬 저장·배치 push 동작·정책

  1. 동기화 상태 표시 — MEASUREMENT.sync_status(draft/pending/synced/failed) (③)
  2. 로컬 저장 건수 표시 자리 — 최소 500건 이상 보관 — 구체 표시 필드는 소스에 없어 미확정이다 (③, FR-FS-004)
  3. 로컬 저장 항목 리스트 — 전송완료 항목을 보여준다 (③)
  4. 일괄 전송 버튼(배치 push) — 네트워크 복구 시 백그라운드에서 자동 동기화하며, gzip 압축 배치 최대 500건을 30초 이내 완료 목표로 한다 (⑤, NFR-PF-FS-003)
  5. 로컬 삭제 옵션 자리 — 동기화 완료 후 로컬 삭제 옵션 — 구체 UI 필드는 소스에 없어 미확정이다 (③)
오프라인
1동기화 상태synced

2로컬 저장 건수 표시 자리 (최소 500건 이상 보관, FR-FS-004)

로컬 저장 항목

3AW01-2 측정전송완료
AW02-1 측정전송완료
4일괄 전송 (배치 push)

5로컬 삭제 옵션 자리 (필드 미확정)

오프라인 — 로컬 DB(암호화) 저장 중, 측정 흐름은 계속됩니다
AW01-2 측정로컬 저장

온라인 복구 시 자동 백그라운드 동기화

동기화 상태대기 12건
AW01-2 측정전송 대기
AW02-1 측정전송 대기
일괄 전송 (배치 push)

재시도 정책: 지수 백오프 최대 5회 (자리)

SCR-FSM-007도면 뷰어(허브)

프로젝트 하위, 중심 · 도면 위 개소 마커(업무상태 색)·섹션 필터·핀치줌

  1. 섹션 필터 바 — Section.section_code. 칩 다중 선택, 기본값 "전체" — 선택한 부호의 개소 마커만 도면 위에 남긴다 (③·⑤)
  2. 도면 캔버스(배경 이미지) — Drawing.image_path. 서버 사전렌더 이미지를 로컬 캐시해 오프라인에도 조회할 수 있다 (③)
  3. 개소 마커(오버레이) — Area.marker_x/marker_y·Area.label·Area.biz_status(마커 색). 탭하면 SCR-FSM-004로 이동한다 (③·⑤)
  4. 핀치줌 제스처 — 두 손가락으로 확대·축소, 더블탭하면 기본 배율로 되돌아간다 (③·⑤)
  5. 하단 전역 칩(BLE·동기화) — SCR-FSM-002·SCR-FSM-008이 소유한 상태만 노출하고, 탭하면 해당 화면으로 이동한다 (③)
오프라인
1전체 AW01 AW02 AW03
2 도면 이미지 자리 (Drawing.image_path) AW01-1 대기 AW01-2 측정중 AW01-3 완료 AW01-4 재측정 3

4손가락 두 개로 확대·축소 · 더블탭으로 원래 배율 (핀치줌)


5하단 전역 칩

오프라인
도면 이미지 자리 (로컬 캐시) AW01-1 대기 AW01-3 완료

로컬 캐시로 조회 계속 · 마커 탭·실측 진입은 막지 않음

전체 AW01
도면 이미지 자리 AW01-2 측정중 AW01-3 완료

마커 색(업무상태)과 동기화 상태는 서로 다른 축 — 마커 색은 바뀌지 않음

SCR-FSM-007도면 뷰어(허브) — 가로(landscape) 모드

앱 전체는 세로 고정, 도면 뷰어(007)만 가로 회전 허용(Android sensorLandscape) · 위 세로 007 프레임과 동일 데이터 — 배치만 재구성(캔버스 확대 + 필터·전역 칩 상단 이동)

  1. 상단 필터·전역 칩 바 — 가로 모드에서는 섹션 필터·전역 칩(BLE·동기화)이 상단/측면으로 재배치된다 (⑤, 2026-07-07 Approach A)
  2. 도면 캔버스(확대) — 가로 회전 시 도면 캔버스가 넓어진다. 앱 나머지는 세로 고정이고 007만 예외로 가로 회전을 허용한다(Android sensorLandscape) (⑤)
  3. 개소 마커 — 위 세로 007 프레임과 동일 데이터, 배치만 재구성한 것이다 (③·⑤)
  4. 복귀 안내 — 세로로 되돌려도 축소된 배치로 계속 동작한다 — 화면 방향 규정은 현재 AN12-1 요구사항·NFR 어디에도 없어 이식성(NFR-PT)·사용성(UX) NFR 후속 반영 후보로만 남긴다 (⑤)
1전체 AW01 AW02 AW03
2 도면 이미지 자리 (Drawing.image_path) — 가로 확대 표시 AW01-1 대기 AW01-2 측정중 AW01-3 완료 AW01-4 재측정 3

4핀치줌으로 확대·축소(더블탭 리셋) · 세로로 되돌려도 위 007 프레임처럼 도면이 축소된 배치로 계속 동작 (현 AN12-1 요구·NFR 미규정 — 이식성/UX NFR 후속 반영 후보)

SCR-FSM-008동기화 현황전역

전역 · pending/failed 목록·수동 재시도 · 모든 화면 상태바의 동기화 칩에서 진입

  1. 상태바 동기화 칩(현재) — 모든 화면 상태바의 동기화 칩에서 진입하는 전역 화면이다 (①)
  2. pending 목록 — MEASUREMENT.sync_status=pending. 서버에 아직 전송되지 않은 대기 중 실측 건을 보여준다 (③)
  3. failed 목록 + 재시도 버튼 — sync_status=failed(5회 재시도 후 실패). 버튼을 누르면 해당 건을 즉시 재전송한다 (③·⑤, NFR-RL-FS-003)
  4. 재측정 배지 자리 — Area.biz_status=재측정. 서버 검증 실패·거절(FCM 수신) 시 완료→재측정으로 역행한다 (③·⑤, FR-FS-008)
오프라인 1동기화(현재)

동기화 현황 — pending · failed 목록

2AW01-2 측정전송 대기
3AW02-5 측정
전송 실패
재시도

4재측정 배지 자리 (Area.biz_status=재측정, FCM 수신 시)

전송 대기 12건

AW01-2 측정전송 대기
AW01-3 측정전송 대기

전송 실패 2건 (5회 재시도 후)

AW02-5 측정
전송 실패
재시도
AW03-1 측정
전송 실패
재시도
미전송 · 실패 항목이 없습니다