Route
/profile/new프로필 등록사용자 모바일 · P0/profile/new
프로필 등록과 사진 업로드를 위한 단계형 폼
필수 입력, 사진/서류 업로드, 단계 표시를 분리해 검증 규칙을 붙일 준비를 합니다.
서툰 우리의 옆자리Concept C — Social Event
닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개와 뱃지 인증 최소 1개를 행사 참가 준비 과정처럼 구성한다.
프로필 등록
PASS 인증과 약관 동의 이후 닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개, 최소 1개 뱃지 인증을 순서대로 받습니다.
서툰 우리의 옆자리프로필 준비
프로필 기본값과 뱃지 증빙을 최소 단위로 제출해야 행사 신청 준비 상태로 이어집니다.
뱃지 인증 진행하기입력 정보
특징은 정확히 5개를 고르고, 뱃지는 직업/소득/자산/차량/매력 중 최소 1개 이상 제출합니다.
닉네임 입력
도/시군구와 싱글/돌싱 선택
직업과 키 설정
특징 5개 선택
뱃지 증빙 최소 1개 제출
Template family
프로필 저장 API 대기
UI primitives
State contract
디자인과 실데이터를 기다리는 동안에도 모든 route가 같은 실패/대기/빈값 골격을 유지하도록 화면별 상태 계약을 고정합니다.
Loading
프로필 등록 화면은 온보딩 프로필 정책, 특징/뱃지 catalog, 사용자 데이터, 공통 primitive 계약을 동시에 기다리는 로딩 상태를 노출합니다.
Empty
필수 프로필 데이터가 비어 있어도 닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개, 뱃지 인증 최소 1개 제출 순서를 유지합니다.
Error
온보딩 프로필 또는 뱃지 증빙 상태를 확인하지 못해도 외부 요청을 만들지 않고, 재시도·문의·뒤로가기 위치만 계약으로 고정합니다.
Blocked
brandSkin, profileRequiredFields, onboardingProfilePolicy, locationCatalog, jobCatalog, profileTraitCatalog, badgeVerificationPolicy, uploadPolicy, firebaseProject 항목이 확정되기 전까지 디자인과 실데이터를 잠그지 않습니다.
Success
프로필 변경 내용을 다음 단계에서 확인할 수 있습니다. 다음 단계는 인증서류 업로드에서 이어서 확인할 수 있어요.
Primary action
온보딩 프로필 저장 및 뱃지 인증 진행/verification/uploadcustomer input requiredRequired data
Customer input
Next routes
/verification/upload/meAction/Form contract
`screen-action-contract.json` 기준 primary CTA, form field, 상태전이, provider 차단, audit requirement를 화면에 직접 표시합니다. 현재 경계는 fixture-only-no-provider-call이며 no provider calls before customer accounts 정책을 유지합니다.
Primary CTA
프로필 등록 화면의 온보딩 저장 및 뱃지 인증 CTA를 submitForm contract로 고정합니다.
submitForm온보딩 프로필 저장 및 뱃지 인증 진행/verification/uploadProvider block
Firebase·Toss·Storage·Auth production call은 고객 계정 수령 전까지 차단합니다.
Audit requirement
none
none온보딩 프로필 저장 및 뱃지 인증 진행을 누르면 프로필 작성 흐름으로 자연스럽게 이어집니다.
잠시만 기다리면 프로필 등록 상태가 화면에 정리됩니다.
프로필 변경 내용을 다음 단계에서 확인할 수 있습니다. 다음 단계는 인증서류 업로드에서 이어서 확인할 수 있어요.
입력한 내용과 화면 안내를 확인한 뒤 온보딩 프로필 저장 및 뱃지 인증 진행을 다시 눌러 주세요.
프로필 필수 항목과 사진 기준 확인이 필요합니다. 준비되면 온보딩 프로필 저장 및 뱃지 인증 진행을 다시 진행할 수 있습니다.
사용자가 primary action을 실행합니다.
외부 provider 호출 없이 fixture 성공 상태를 표시합니다.
검증/fixture 오류 상태를 표시합니다.
고객 로고/계정/정책 blocker가 남아 있으면 blocked 상태를 유지합니다.
필수 입력이 해결되면 기본 상태로 돌아갑니다.
Upload state fixture
고객-facing 업로드 화면은 실제 Firebase Storage 호출 전에도 선택·검증·업로드 완료 상태를 같은 방식으로 보여줍니다. 실제 실행 seam은 boundedstorageUpload.uploadBytesOnce이며 다운로드 URL은 가져오지 않습니다.
Surface
뱃지 증빙증빙 파일은 업로드 완료 후 프로필 등록 흐름에 첨부됩니다.form-profile-newStorage policy
verification-documentsapplication/pdf · 최대 10MBbadge-evidence-fixture.pdfSafe persistence
uploadedUID·full path·download URL은 fixture 화면에 저장하지 않습니다.verificationDocuments.storagePath업로드가 완료되어야 다음 저장/심사 흐름으로 넘어갑니다.
Metadata follow-up fixture
화면 흐름은 uploaded → metadataReady → submit 순서로 고정합니다. metadataReady는 bounded Firestore write validation 입력만 준비하며 실제 쓰기는 실행하지 않습니다.
DTO field
verificationDocuments.storagePathverificationDocuments.storagePathform-profile-newBounded validation
validateCreateDocumentcreateDocumentexplicitVerificationDocumentIdBeforeWriteNo live write
metadataReadywrite/provider call 0 · download URL 미사용verification-documents/<current-user>/badge-evidence-fixture.pdfFixture interaction runner
실 provider 호출 없이 primary CTA, role decision, form submit, state transition, audit requirement를 fixture-only로 점검합니다.
Role access
user6 denied rolesPrimary flow
온보딩 프로필 저장 및 뱃지 인증 진행/verification/uploadForm submit
submitFixture10 required fields provided by fixtureAudit/provider
audit not required2 blocked providers, 0 callsFixture payload
실제 Firebase/Toss/정책 원문 대신 사용할 최소 payload입니다. 화면 구조와 DTO 슬롯을 먼저 맞추고, 고객 계정·정책 수령 후 실제 데이터로 교체합니다.
Payload contract
profileFormpayload-profile-newprofileSummary
프로필 등록 화면에 표시할 최소 온보딩 profile fixture payload입니다. 닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개, 뱃지 인증 최소 1개 슬롯을 provider 호출 없이 확인합니다.
route-profile-new-fixturefixture
blocked
profileForm 화면 검증용 fixture
Form fields
profile required fields
upload placeholder
brand-neutral form