사용자 화면 · 마켓 / 판매등록
판매등록 - 간편 업로드(보증서 업로드) MKT-004 · 2026. 03. 19
0 화면 접근 조건 MKT-003(판매등록 – 업로드 방식 선택) 화면에서 [간편 업로드] 버튼 선택 시 진입 로그인 사용자만 접근 가능 비로그인 사용자는 접근 불가 1-1 헤더 구성좌측: 뒤로가기 버튼 중앙: 화면 타이틀 판매 등록 우측: 취소 텍스트 버튼 뒤로가기 버튼 클릭 시판매 등록 플로우 내 이전 단계 화면으로 이동 기본적으로 별도의 안내 모달 없이 즉시 이동 단, 업로드 방식 선택 화면(MKT-003)으로 이동하는 경우이며
보증서 업로드 또는 OCR 처리 등 입력 이력이 존재할 경우진행 중인 내용 초기화 안내 모달 노출 (MKT-012) 모달 확인 시 이전 단계로 이동, 취소 시 현재 화면 유지 화면 ID 나중에 작성 판매 등록 플로우 중단 확인 모달 노출 (MKT-012) 취소 시 현재 화면 유지 1-2 보증서 업로드 버튼 및 안내 문구 구성보증서 업로드 버튼 안내 문구보증서는 제 3자에게 공개되지 않습니다 pdf, jpeg, png, bmp 파일만 업로드 가능합니다 보증서 업로드 버튼 클릭 시디바이스 파일 선택 UI 호출 파일 1개만 업로드 가능 보증서 파일 정보 확인 영역(2) 상태로 전환 가능 1-3 이전/다음 버튼 구성 이전 버튼 클릭 시
→ MKT-003(업로드 방식 선택 화면)으로 이동 다음 버튼보증서 파일 업로드 전: 비활성화 (비활성화 버튼 반영) 보증서 파일 업로드 후: 활성화 클릭 시 → 보증서 OCR 분석 시작 2 보증서 파일 제목 확인 및 삭제 버튼, 안내문구 구성업로드된 보증서 파일명 + 파일 확장자 표시 삭제 텍스트 버튼 보증서 안내 문구 동일 유지 삭제 버튼 클릭 시업로드된 보증서 파일 삭제 화면은 보증서 업로드 전 상태(1-2) 로 전환 다음 버튼 비활성화 3 보증서 읽기 로딩 화면 구성OCR 분석 로딩 아이콘 안내 문구잠시만 기다려주시겠어요 보증서를 분석해서 입력중이에요 OCR 분석 진행 중 사용자 인터랙션 불가 분석 완료 시다음 화면 ID(보증서 기반 정보 확인/수정 화면)로 자동 이동 토스트 메시지 노출 후 보증서 업로드 완료 상태로 복귀 4 토스트 메시지 정의 지원하지 않는 파일 업로드 시 파일 업로드에 실패했어요. 다시 시도해 주세요 OCR 분석 실패 시보증서를 인식하지 못했어요. 다시 업로드해 주세요 5 공통 규칙 본 화면은 간편 업로드 Step 1 (보증서 업로드 단계) 화면 보증서는 내부 검증 및 정보 추출 목적이며 외부에 공개 X OCR 분석 결과는 자동 입력 보조 수단이며, 다음 화면에서 사용자 수정 가능 동일 판매 등록 플로우 내 보증서는 1개만 업로드 가능 화면 이탈(뒤로가기, 취소) 시업로드된 보증서 파일 및 분석 상태는 초기화됨 헤더 취소 버튼 클릭 시 확인 모달 노출 (MKT-012) 모달 선택 분기계속 작성하기 선택 시: 모달 닫기 작성 취소 선택 시:판매 등록 플로우 종료 마켓 메인 화면(MKT-001)으로 이동
Design Output
UI 디자인 산출물 위 스토리보드 기획을 CHAART OS 디자인 토큰으로 변환한 결과물. 실제 구현 시 참조할 최종 디자인.
보증서
보증서는 제 3자에게 공개되지 않습니다
pdf / jpeg / png / bmp 파일만 업로드 가능합니다
보증서
보증서는 제 3자에게 공개되지 않습니다
pdf / jpeg / png / bmp 파일만 업로드 가능합니다
잠시만 기다려주세요
보증서를 분석해서 입력중이에요
Update History
2026.03.17 구현 가이드 ↔ 디자인 산출물 불일치 수정
2026.03.17 PM Description 최신 반영 + 구현 가이드 포맷 통일 (뒤로가기 MKT-012 모달 분기, 취소 공통 규칙, 토스트 메시지 원문 교정)
2026.03.16 구현 가이드 8섹션 표준 포맷 재작성 (치수·토큰값·모션·여백 보강)
2026.03.11 구현 가이드 추가 (7섹션: 화면구조, 레이어구조, 헤더, 업로드영역, 이전다음버튼, OCR로딩화면, 에러처리)
2026.03.04 초기 디자인 작성
Implementation Specification
1. 화면 구조 개요
화면 유형: 전체 화면 단계형 플로우 (393 x 852px), 3개 상태 전환 간편 업로드 Step 1 — 보증서 파일 업로드 화면 State 1: 업로드 전 (CTA 버튼만 노출) State 2: 업로드 후 (파일명 + 삭제 버튼 표시, "다음" 활성화) State 3: OCR 분석 로딩 (풀스크린 로딩 UI) 진입 경로: MKT-003 간편 업로드 선택 → MKT-004 다음 화면: OCR 분석 완료 시 자동으로 MKT-005 진입 탭바 없음 — 헤더 "취소" 텍스트 버튼으로 등록 취소 (MKT-012 확인 모달) 2. 레이어 구조 + 치수
# 영역 높이 / 위치 세부 스펙 1 상태바 top:0 / 44px iOS 시스템 영역 2 헤더 48px --bg #FAFAF8 bg / chevron 10x18 좌측 / 타이틀 "마켓 - 판매 등록" 중앙 / "취소" 우측 3 섹션 라벨 "보증서" padding-top 32px --sans 13px/600, --charcoal #1A1A1A, ls:-0.01em, mb:16px 4 보증서 업로드 CTA (State 1) 48px --charcoal bg, #fff text, R=0, gap:8px, upload SVG 18px stroke:#fff square/miter 5 파일 정보 행 (State 2) 48px bg rgba(26,26,26,0.04), border 1px rgba(26,26,26,0.07), 파일아이콘 16px + 파일명 13px + "삭제" 12px/500 6 안내 문구 가변 (2줄) --sans 12px, --text-muted #888888, line-height:1.6, ls:-0.005em 7 이전/다음 버튼 bottom:34px / 50px flex row, gap:12px, 각 flex:1, R=0, padding:0 24px 8 OCR 로딩 (State 3) 풀스크린 --bg bg, 검색 아이콘 48px --red-brand stroke, 중앙 정렬 9 홈 인디케이터 bottom:0 / 34px iOS 기본
3. 핵심 인터랙션
뒤로가기 chevron: 10x18px SVG, stroke --charcoal #1A1A1A, stroke-width:1.5, linecap:square, linejoin:miter → 이전 단계 이동. 단, MKT-003으로 이동 시 보증서 업로드/OCR 입력 이력이 존재하면 초기화 안내 모달(MKT-012) 선행 타이틀: "마켓 - 판매 등록" — --sans Pretendard 17px/700, --charcoal #1A1A1A, ls:-0.02em, 중앙 정렬 취소: --sans 13px/500, --charcoal, ls:-0.01em → MKT-012 확인 모달 노출 (확인 시 MKT-001 이동, 취소 시 현재 유지) 업로드 CTA 클릭: 네이티브 파일 선택 다이얼로그 호출 (pdf/jpeg/png/bmp) 업로드 완료: CTA → 파일 정보 행으로 교체 (파일 아이콘 16px + "보증서 파일 제목.pdf" 13px + "삭제" 12px/500 --text-muted) 파일 삭제: "삭제" 텍스트 클릭 → 업로드 초기화, CTA 버튼 복원, "다음" 비활성화 다음 클릭 (활성 시): OCR 분석 로딩 화면(State 3) 진입 → 완료 시 MKT-005 자동 이동 4. 상태 변화
State 1 → State 2 (업로드 전→후): - 업로드 CTA(48px --charcoal bg) → 파일 정보 행(48px, bg rgba(26,26,26,0.04), border 1px rgba(26,26,26,0.07)) - "다음" 비활성(bg rgba(26,26,26,0.15), text rgba(26,26,26,0.35)) → 활성(--cta-gradient bg, #fff text) State 2 → State 3 (다음 클릭→OCR 로딩): - 전체 화면이 OCR 로딩 UI로 전환 - 검색 아이콘: 48x48px, stroke --red-brand #961E23, stroke-width:1.5, linecap:square, linejoin:miter - 타이틀: "잠시만 기다려주세요" — --sans 16px/700, --charcoal, ls:-0.02em - 서브: "보증서를 분석해서 입력중이에요" — --sans 14px/400, --text-muted #888888, ls:-0.005em State 3 → MKT-005: OCR 분석 완료 시 자동 전환 5. 네비게이션 플로우
진입: MKT-003(업로드 방식 선택) → 간편 업로드 선택 시 뒤로가기(chevron): MKT-003으로 복귀 취소: MKT-012 확인 모달 노출 → 확인 시 등록 취소 이전 버튼: MKT-003으로 이동 (항상 활성) 다음 버튼: 보증서 업로드 완료 시만 활성 → OCR 분석 → MKT-005 자동 이동 접근 제한: 로그인 사용자만 접근 가능 (비로그인 시 LOG-009 모달) 6. 에러/예외 처리
지원 불가 파일 형식: 토스트 "지원하지 않는 파일 형식입니다" 파일 업로드 실패: 토스트 "파일 업로드에 실패했어요. 다시 시도해 주세요" OCR 분석 실패: 토스트 "보증서를 인식하지 못했어요. 다시 업로드해 주세요" → 업로드 완료 상태(State 2)로 복귀 화면 이탈: 뒤로가기/취소 시 업로드된 보증서 파일 및 분석 상태 전부 초기화 취소 공통 규칙: 헤더 취소 → MKT-012 모달 → "계속 작성하기" 시 닫기, "작성 취소" 시 MKT-001 이동 7. 모션 스펙
업로드 CTA → 파일 정보 행 전환: opacity crossfade, duration 200ms, ease-out "다음" 비활성→활성: background-color transition 200ms ease-out State 2 → State 3 (OCR 로딩 진입): opacity 0→1, duration 300ms OCR 아이콘: 검색 아이콘 pulse 또는 rotate 애니메이션 (분석 중 시각 피드백) 토스트: translateY(100%)→0, duration 300ms, ease-out / 2.5초 후 자동 dismiss 8. 여백·간격 요약
좌우 콘텐츠 패딩: 24px 바디 상단 패딩: 32px (헤더 하단에서) "보증서" 라벨 → 업로드 CTA: margin-bottom 16px 업로드 CTA/파일 정보 → 안내 문구: margin-bottom 16px 안내 문구 줄 간격: line-height 1.6, 문구 간 margin-bottom 4px 이전/다음 버튼 gap: 12px 이전/다음 → 홈 인디케이터: bottom 34px 파일 정보 행 내부 패딩: 0 16px, 아이콘-텍스트 gap 8px OCR 로딩 아이콘 → 타이틀: margin-bottom 24px OCR 타이틀 → 서브 문구: margin-bottom 8px 9. 적용 디자인 토큰
요소: 헤더 배경 → Token: --bg → 값: #FAFAF8 요소: 헤더 타이틀 → Token: --sans · 17px · 700 · ls:-0.02em → 값: Pretendard Variable 요소: 취소 버튼 → Token: --sans · 13px · 500 · --charcoal → 값: #1A1A1A 요소: 섹션 라벨 "보증서" → Token: --sans · 13px · 600 · --charcoal → 값: #1A1A1A 요소: 업로드 CTA 배경 → Token: --charcoal → 값: #1A1A1A 요소: 업로드 CTA 텍스트 → Token: --sans · 14px · 600 → 값: #FFFFFF 요소: 안내 문구 → Token: --sans · 12px · --text-muted → 값: #888888, lh:1.6 요소: 파일 정보 행 배경 → 값: rgba(26,26,26,0.04), border 1px rgba(26,26,26,0.07) 요소: 파일명 → Token: --sans · 13px · --charcoal → 값: #1A1A1A 요소: 삭제 텍스트 → Token: --sans · 12px · 500 · --text-muted → 값: #888888 요소: 이전 버튼 → Token: --charcoal · --sans · 14px · 600 → 값: #1A1A1A bg, #FFF text 요소: 다음 버튼(활성) → Token: --cta-gradient · --sans · 14px · 600 → 값: linear-gradient bg, #FFF text 요소: 다음 버튼(비활성) → 값: bg rgba(26,26,26,0.15), text rgba(26,26,26,0.35) 요소: OCR 로딩 아이콘 → Token: --red-brand → 값: #961E23 stroke, 48px 요소: OCR 타이틀 → Token: --sans · 16px · 700 · --charcoal → 값: #1A1A1A 요소: OCR 서브 문구 → Token: --sans · 14px · --text-muted → 값: #888888