Mobile UX Evidence Closure

남은 HTML coverage 항목을 Figma와 실제 화면 기준으로 닫기

이 페이지는 root UX index에서 남아 있던 `needs-clean-actual` 후보를 사람이 바로 판단할 수 있도록 모은 비교 리포트다. 각 항목은 Figma 근거, actual evidence, Maestro flow, stable testID, 남은 provider/backend 결정을 분리한다.

4 / 4

clean-actual 후보가 comparison report로 연결됨

5

decision-only/provider/backend 항목은 screen gap이 아니라 계약 대기임을 분리

0

local UX index에서 설명 없이 남은 APP screen placeholder 없음

2026-07-03

#490 배출자 clean actual evidence closure 기준

Root UX index로 돌아가기

배출자 비정기 배출 신청

진입점은 배출자 홈의 `emitter.home.request-create.cta`다. Figma 비교는 section overview가 아니라 `118:6122`, `130:6567`, `118:4105`, `118:4268`, `19:62` 단일 frame을 기준으로 보며, APP은 비정기/올바로 신고·미신고, 업체 검색, 조건 확인, 일정 선택, 완료 landing을 mock wizard로 닫았다.

comparison-linked

Step 1 / 타입 선택

Figma 신청 타입 선택
Figma single frame`118:6122` 타입 선택
Actual 신청 타입 선택
Actual evidence`emitter.request.type.screen` current capture

Step 2 / 운반업체 검색 결과

Figma 운반업체 검색 결과
Figma single frame`130:6567` 업체 검색 결과
Actual 운반업체 검색 결과
Actual evidence`emitter.request.transporter.search.result` capture

Step 3 / 수집·운반 조건 확인

Figma 수집 운반 조건 확인
Figma single frame`118:4105` 조건 확인
Actual 수집 운반 조건 확인
Actual evidence`emitter.request.conditions.screen` clean capture

Step 4 / 배출 희망일 선택

Figma 배출 희망일 선택
Figma single frame`118:4268` 일정 선택
Actual 배출 희망일 선택
Actual evidence`emitter.request.schedule.screen` clean capture

Step 5 / 신청 완료

Figma 배출 신청 완료
Figma single frame`19:62` 신청 완료
Actual 배출 신청 완료 화면
Actual evidence`emitter.request.complete.screen` capture
판정: section overview를 제거하고 실제 wizard step별 single frame과 actual state를 1:1로 비교한다. 남은 것은 실제 backend 저장/올바로 연동 전 mock contract 범위다.

배출자 배출 현황 / 상세

진입점은 배출자 홈의 오늘의 배출 현황과 더보기의 배출 현황 메뉴다. Figma 비교는 section overview가 아니라 `526:2964`, `951:590` 단일 frame을 기준으로 보며 APP은 오늘/완료 탭, 검색, 상세, 반입 확인서 provider-pending viewer를 닫았다.

comparison-linked

List / 오늘·완료 내역

Figma 배출 현황 list
Figma single frame`526:2964` 신청/완료 내역
Actual 배출 현황 screen
Actual evidence`emitter.history.screen` clean capture

Search / 검색 state

Figma 배출 현황 search
Figma single frame`951:590` 검색 state
Actual 배출 현황 search
Actual evidence`emitter.history.search` clean capture

Completed tab / 완료 내역

Figma 배출 현황 completed list
Figma single frame`526:2964` 완료 내역 포함 list
Actual 배출 완료 내역 flow
Actual evidence`ux-flow-emitter-history-completed` after-flow
판정: section overview를 제거하고 list/search/complete 상태를 single frame 기반으로 비교한다. 실제 반입 확인서 파일 provider와 PDF 저장은 provider decision으로 분리된다.

Cross-role lifecycle handoff

이 항목은 단일 Figma screen이 아니라 배출자 신청 완료, 배차담당자 배차 확정, 운전자 assignment, 처리자 inbound projection이 같은 mock lifecycle event로 이어지는지를 보여준다. Figma 근거는 lifecycle chat card `20:505`와 역할별 home/list frame이며, actual 근거는 `lifecycle-emission-dispatch.yaml`이다.

comparison-linked
Figma lifecycle chat card
Figma lifecycle card`20:505` 리포트 작성 완료 card
Actual lifecycle flow pass
Actual cross-role proof`lifecycle-emission-dispatch` pass capture
Actual lifecycle completion
Actual completionagent-device lifecycle completion
Actual processor projection
Actual projection처리자 projection pass
판정: HTML coverage 관점에서 before/after evidence가 연결됐다. 실제 backend event persistence와 retry/idempotency는 #488 backend decision이다.

처리자 입고 예정 / 입고 상세 / 처리 실적

진입점은 처리자 홈의 입고 예정 card다. Figma 비교는 처리자 home `478:3584`, 입고 list `966:2529`, 입고 상세 `1010:1628` 단일 frame을 근거로 삼는다. APP은 list/detail, status filter, 입고 승인, 계근 CTA bridge, 처리 실적 등록, replay/idempotency mock boundary를 닫았다.

comparison-linked

Home / 처리자 기본 화면

Figma 처리자 home exact
Figma single frame`478:3584` 처리자 home
Actual processor inbound after flow
Actual evidence`processor.home.screen` to inbound after-flow

List / 입고 예정 목록

Figma 처리자 입고 예정 목록
Figma single frame`966:2529` 입고/계근/승인 list
Actual processor inbound after flow
Actual evidence`processor.inbound.screen` after-flow

Detail / 입고 상세와 replay guard

Figma 처리자 입고 상세
Figma single frame`1010:1628` 내역 클릭 상세/list state
Actual processor inbound replay guard
Actual evidence`processor.inbound.detail.*.screen` replay guard
판정: page overview를 제거하고 home/list/detail을 single frame 기준으로 비교한다. 실제 backend conflict envelope, idempotency persistence, upload/OCR parsing은 backend/provider contract가 확정된 후 붙인다.

Decision-only nodes

아래 항목은 APP 화면 미구현이 아니라 실제 provider/backend/realtime/auth 계약 대기다. Root index에서는 빨간 missing처럼 읽히지 않도록 `decision-only`로 표시하고, 구현 전에는 각 decision issue를 먼저 열어야 한다.

blocked-by-contract
Provider backlogprovider/backend/realtime/auth 결정을 묶은 review backlog. APP은 provider-pending/fallback까지만 책임진다.
Backend/Auth/RBAC실제 login, session token, duties enum, backend authorization은 Kotlin Spring contract 필요.
Realtime Chat현재는 mock room/read-state/attachment surface. WS/SSE, message DB, read receipt persistence는 backend 계약.
Upload/OCRS3/presigned, OCR vendor/API, file picker, offline queue는 provider decision 후 구현.
External Links고객센터, 전화, 지도 deep link, signed file URL은 adapter policy 결정 전 raw open 금지.
판정: frontend HTML coverage 100% 기준에서는 이 항목들을 “미구현 화면”으로 세지 않는다. 실제 production integration scope로 승격할 때 별도 issue가 필요하다.