Profile form scaffoldP0 14/70

/profile/new

프로필 등록

프로필 등록과 사진 업로드를 위한 단계형 폼

필수 입력, 사진/서류 업로드, 단계 표시를 분리해 검증 규칙을 붙일 준비를 합니다.

ASBU서툰 우리의 옆자리

Concept C — Social Event

참여 준비 온보딩

닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개와 뱃지 인증 최소 1개를 행사 참가 준비 과정처럼 구성한다.

PDF 로고 반영 · 폰트/앱 아이콘 미확정

Route

/profile/new프로필 등록사용자 모바일 · P0

Template

profileForm시안 변경 시 family plan과 componentSet을 먼저 수정합니다.Balanced expression

Reusable components

ExtractedLogoProfileProgressFormSectionCardSecureNoticeStickyActionBar

Guardrails

검증된 오프라인 이벤트에 초대받는 밝고 설레는 경험투표/매칭 화면은 밝게, 인증/결제/관리자 화면은 절제한다실시간 채팅, AI 매칭, OCR, 구독/IAP처럼 보이는 UI를 만들지 않는다
ASBU
프로필 등록검증된 오프라인 이벤트

프로필 등록

필수 프로필과 뱃지 인증을 한 흐름으로 준비합니다

PASS 인증과 약관 동의 이후 닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개, 최소 1개 뱃지 인증을 순서대로 받습니다.

공식 로고 반영개인정보 최소 입력처음 등록
ASBU서툰 우리의 옆자리

프로필 준비

첫 온보딩 완료

프로필 기본값과 뱃지 증빙을 최소 단위로 제출해야 행사 신청 준비 상태로 이어집니다.

뱃지 인증 진행하기

입력 정보

온보딩 필수 항목

특징은 정확히 5개를 고르고, 뱃지는 직업/소득/자산/차량/매력 중 최소 1개 이상 제출합니다.

  • 닉네임문장 · 필수
  • 살고 있는 곳(도)선택형 · 필수
  • 살고 있는 곳(시군구)선택형 · 필수
  • 싱글/돌싱선택형 · 필수
  • 직업선택형 · 필수
  • 키(cm)숫자 · 필수
  • 특징 5개multi선택형 · 필수
  • 뱃지 카테고리선택형 · 필수
  • 뱃지 종류선택형 · 필수
  • 뱃지 증빙파일 · 필수

닉네임 입력

도/시군구와 싱글/돌싱 선택

직업과 키 설정

특징 5개 선택

뱃지 증빙 최소 1개 제출

fixture-only no-provider-call audit log preview

Template family

profileForm

프로필 저장 API 대기

01Stepper
02Required fields
03UploadTile
04BottomNav

UI primitives

공통 컴포넌트 슬롯

MobileShellPageHeaderFormFieldUploadTileStepperBottomNav

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 required

Required data

profileDraftrequiredFieldSchemauploadPolicyonboardingProfilePolicylocationCatalogjobCatalogprofileTraitCatalogbadgeVerificationPolicyprimitive:MobileShellprimitive:PageHeaderprimitive:FormFieldprimitive:UploadTileprimitive:Stepperprimitive:BottomNav

Customer input

brandSkinprofileRequiredFieldsonboardingProfilePolicylocationCatalogjobCatalogprofileTraitCatalogbadgeVerificationPolicyuploadPolicyfirebaseProject

Next routes

/verification/upload/me

Action/Form contract

버튼·폼·상태전이 바인딩

`screen-action-contract.json` 기준 primary CTA, form field, 상태전이, provider 차단, audit requirement를 화면에 직접 표시합니다. 현재 경계는 fixture-only-no-provider-call이며 no provider calls before customer accounts 정책을 유지합니다.

Provider block

no-provider-call-before-customer-accounts

Firebase·Toss·Storage·Auth production call은 고객 계정 수령 전까지 차단합니다.

Firebase StorageCloud Firestore

Audit requirement

audit log not required

none

none

Form preview

form-profile-newrequiredField · clientShapeOnly · noLiveProviderCredential · fixtureOnlySubmit · exactFiveTraitTags · minimumOneBadgeEvidence
준비idle

온보딩 프로필 저장 및 뱃지 인증 진행을 누르면 프로필 작성 흐름으로 자연스럽게 이어집니다.

진행 중submitting

잠시만 기다리면 프로필 등록 상태가 화면에 정리됩니다.

완료success

프로필 변경 내용을 다음 단계에서 확인할 수 있습니다. 다음 단계는 인증서류 업로드에서 이어서 확인할 수 있어요.

다시 확인error

입력한 내용과 화면 안내를 확인한 뒤 온보딩 프로필 저장 및 뱃지 인증 진행을 다시 눌러 주세요.

확인 필요blocked

프로필 필수 항목과 사진 기준 확인이 필요합니다. 준비되면 온보딩 프로필 저장 및 뱃지 인증 진행을 다시 진행할 수 있습니다.

action-profile-new-primaryidlesubmitting

사용자가 primary action을 실행합니다.

fixtureSuccesssubmittingsuccess

외부 provider 호출 없이 fixture 성공 상태를 표시합니다.

fixtureErrorsubmittingerror

검증/fixture 오류 상태를 표시합니다.

customerInputMissingidleblocked

고객 로고/계정/정책 blocker가 남아 있으면 blocked 상태를 유지합니다.

customerInputResolvedblockedidle

필수 입력이 해결되면 기본 상태로 돌아갑니다.

Upload state fixture

업로드 상태

고객-facing 업로드 화면은 실제 Firebase Storage 호출 전에도 선택·검증·업로드 완료 상태를 같은 방식으로 보여줍니다. 실제 실행 seam은 boundedstorageUpload.uploadBytesOnce이며 다운로드 URL은 가져오지 않습니다.

Surface

뱃지 증빙증빙 파일은 업로드 완료 후 프로필 등록 흐름에 첨부됩니다.form-profile-new

Storage policy

verification-documentsapplication/pdf · 최대 10MBbadge-evidence-fixture.pdf

Safe persistence

uploadedUID·full path·download URL은 fixture 화면에 저장하지 않습니다.verificationDocuments.storagePath
01idle
02selecting
03validating
04readyToUpload
05uploading
06uploaded

업로드가 완료되어야 다음 저장/심사 흐름으로 넘어갑니다.

Metadata follow-up fixture

업로드 이후 저장 후보

화면 흐름은 uploaded → metadataReady → submit 순서로 고정합니다. metadataReady는 bounded Firestore write validation 입력만 준비하며 실제 쓰기는 실행하지 않습니다.

DTO field

verificationDocuments.storagePathverificationDocuments.storagePathform-profile-new

Bounded validation

validateCreateDocumentcreateDocumentexplicitVerificationDocumentIdBeforeWrite

No live write

metadataReadywrite/provider call 0 · download URL 미사용verification-documents/<current-user>/badge-evidence-fixture.pdf
01uploaded
02metadataReady
03submit

Fixture interaction runner

role·CTA·form·provider·audit 시뮬레이션

실 provider 호출 없이 primary CTA, role decision, form submit, state transition, audit requirement를 fixture-only로 점검합니다.

Role access

user6 denied roles

Primary flow

온보딩 프로필 저장 및 뱃지 인증 진행/verification/upload

Form submit

submitFixture10 required fields provided by fixture

Audit/provider

audit not required2 blocked providers, 0 calls

Mock navigation fixture

실데이터 없이 클릭 가능한 대표 흐름

Firebase·Toss·정책 원문을 호출하지 않는 fixture-only 링크입니다. 동적 segment는 demo id로 치환해 브라우저에서 바로 route reachability를 확인합니다.

Seed

프로필 등록 demo flowroute-profile-new-fixturefixture-only-no-provider-call

Mocked entities

fixture:profileDraftfixture:requiredFieldSchemafixture:onboardingProfilePolicyfixture:locationCatalogfixture:jobCatalogfixture:profileTraitCatalogfixture:badgeVerificationPolicyfixture:uploadSlotprimitive:MobileShellprimitive:PageHeaderprimitive:FormFieldprimitive:UploadTileprimitive:Stepperprimitive:BottomNav

Fixture payload

화면별 최소 DTO preview

실제 Firebase/Toss/정책 원문 대신 사용할 최소 payload입니다. 화면 구조와 DTO 슬롯을 먼저 맞추고, 고객 계정·정책 수령 후 실제 데이터로 교체합니다.

Payload contract

profileFormpayload-profile-newprofile

Summary

프로필 등록 화면에 표시할 최소 온보딩 profile fixture payload입니다. 닉네임, 도/시군구, 싱글/돌싱, 직업, 키, 특징 5개, 뱃지 인증 최소 1개 슬롯을 provider 호출 없이 확인합니다.

route-profile-new-fixture
readyP0 demo

fixture

pendingbrandSkin

blocked

준비됨

프로필 등록 대표 데이터

profileForm 화면 검증용 fixture

userP0profileForm

Form fields

닉네임 · text · required살고 있는 곳(도) · select · required살고 있는 곳(시군구) · select · required싱글/돌싱 · select · required직업 · select · required키(cm) · number · required특징 5개 · multiselect · required뱃지 카테고리 · select · required뱃지 종류 · select · required뱃지 증빙 · file · required

profile required fields

upload placeholder

brand-neutral form