Skip to content

[ARCHIVED 2026-08-19] 역사 자료 — 현행 규범이 아니다. 아카이브 사유와 대체 문서는 docs/README.md의 Archive 섹션을 참조.

Claude Functional Requirements

Updated: 2026-06-08

이 문서는 Claude Design에게 전달할 기능 요구사항 표다. 목적은 Claude가 어떤 화면이 있고, 사용자가 어떤 값을 입력하며, 어떤 행동 후 어디로 이동해야 하는지 이해하게 하는 것이다.

이 문서는 시각 디자인 지시서가 아니다. 레이아웃, 간격, 카드 모양, 색, 타이포그래피, 컴포넌트 형태, UI-flow 연출은 Claude Design이 자유롭게 결정한다. Claude가 완성 앱/프로토타입을 넘긴 경우 그 앱의 UI-flow가 정본이며, Codex는 필요한 인증, 데이터, Supabase 저장 함수만 연결한다.

전달 파일 묶음

파일역할
docs/process/claude-free-design-contract.md필요 시 기능 연결에 쓰는 의미 계약과 역할 분리 원칙
docs/process/claude-handoff-rules.mdCodex와 Claude Design의 역할 분리
docs/claude-functional-requirements.md화면, 입력, 행동, 이동, 상태 요구사항
docs/architecture/session-hierarchy.md세션 데이터 위계가 필요할 때 참고

핵심 데이터 위계

레벨의미하위 데이터디자인에서 보여줄 때 필요한 관점
하루사용자가 선택한 날짜여러 세션하루에 세션이 0개, 1개, 여러 개일 수 있음
세션한 번의 운동 기록 또는 계획여러 종목완료, 미완료, 예정 상태가 있음
종목스쿼트, 벤치프레스 같은 운동 단위여러 세트종목별 세트 목록과 종목 메모가 있음
세트실제 수행 또는 계획한 한 줄 기록반복, 무게, 휴식, 난이도, 메모기본 입력은 반복/무게, 상세 입력은 선택 사항

전체 화면 목록

화면사용자 목적주요 입력주요 행동이동 결과핵심 marker
로그인 필요로그인 전 사용자를 인증으로 유도없음Kakao·Google·Apple 중 선택선택한 provider 인증 시작onboardingLogin
프로필 설정첫 로그인 사용자가 앱 안 프로필을 만든다닉네임, 프로필 사진저장, 로그아웃, 사진 제거저장 성공 시 앱 진입profileGate, profileForm, profileName, profileAvatarInput, profileAvatarPreview
오늘의 요약과 운동 시작 진입없음운동 시작, 주요 탭 이동운동 시작 또는 각 탭dashboardView, startWorkoutButton, mobileStartWorkoutButton, dashboardNavLinks
운동 시작세션 시작 전 정보를 기록하고 예정 세션을 불러올지 고른다날짜, 시작 시간, 컨디션, 시작 전 메모예정 세션으로 시작, 빈 세션으로 시작운동 기록workoutView, sessionStartStep, conditionButtons, workout.session.date, workout.session.startTime, workout.usePlan, workout.skipPlan
운동 기록종목과 세트를 입력한다세트 반복, 세트 무게, 세트 완료 여부종목 추가, 세트 추가, 종목 완료/수정, 세션 종료종목 선택 또는 세션 종료sessionRecordStep, addExerciseButton, exerciseTabs, draftList, setPerfComposer, workout.set.entryLabel, workout.finishStep
종목 선택기록할 운동 종목을 고른다검색어, 장비/부위 필터종목 선택, 닫기운동 기록으로 복귀exercisePickerView, exerciseSearchResults, workout.picker.search, workout.picker.equip, workout.picker.part, workout.picker.select, workout.picker.cancel
세션 종료운동 전체를 저장하기 전 마지막 메모를 남긴다운동 후 컨디션, 세션 후 메모저장, 폐기저장 후 앱 화면으로 이동sessionFinishStep, sessionFeelButtons, sessionNote, workout.finish.home, workout.discardSession
세션 달력날짜별 기록과 계획을 본다날짜 선택, 계획 세트 입력월 이동, 오늘, 계획 추가, 계획 삭제선택 날짜 내용 갱신mobileSessionCalendarGrid, mobileSessionPrevMonthButton, mobileSessionNextMonthButton, mobileSessionTodayButton, mobileSessionsList, mobilePlannedSetsList
PR개인 최고 기록을 본다없음탭 이동PR 화면 유지mobilePrHeroName, mobilePrHeroValue, mobilePrHeroDelta, mobilePrList, prList
길드팔로우/친구 기준 랭킹을 본다없음출석왕, 볼륨왕, 무게왕 탭 선택랭킹 목록 갱신mobileGuildTabs, mobileGuildRankList, mobileGuildLeaderboardTitle, mobileGuildRankingMeta
회복부위별 회복과 체성분 기반 섭취 목표를 본다체중, 골격근량, 체지방률, 메모회복 데이터 저장최신 회복 데이터 갱신mobileRecoveryList, mobileNutritionTargets, bodyMetricForm, bodyWeightInput, skeletalMuscleInput, bodyFatInput, saveBodyMetricButton
내 정보계정과 앱 데이터를 관리한다없음내보내기, 가져오기, 로그아웃파일 처리 또는 로그아웃mobileProfileView, mobileExportButton, mobileImportButton, mobileLogoutButton, importFile
멤버 피드특정 멤버의 운동 피드를 본다없음내 프로필로 돌아가기, 응원멤버 피드 유지 또는 대시보드memberView, memberProfileName, memberFeedList, backFromMemberButton, feed.kudos

인증 및 프로필 플로우

현재 상태사용자 행동시스템 처리다음 화면
로그인 전Kakao·Google·Apple 중 선택선택한 provider의 Supabase OAuth로 이동인증 진행
인증 성공, 프로필 없음프로필 입력닉네임과 사진을 Supabase에 저장앱 홈
인증 성공, 프로필 있음없음원격 데이터를 불러옴앱 홈
인증 오류다시 시도선택한 provider 인증 재시도인증 진행
로그인 상태로그아웃세션과 원격 데이터 상태를 초기화로그인 필요

운동 기록 플로우

단계사용자 입력사용자 행동조건다음 단계
1. 세션 준비날짜, 시작 시간, 컨디션, 시작 전 메모운동 기록 시작선택 날짜에 계획 있음2. 플랜 확인
1. 세션 준비날짜, 시작 시간, 컨디션, 시작 전 메모운동 기록 시작선택 날짜에 계획 없음3. 운동 기록
2. 플랜 확인없음플랜 불러오기계획 세트 있음3. 운동 기록, 계획 세트가 입력 후보가 됨
2. 플랜 확인없음빈 세션 시작사용자가 계획을 쓰지 않음3. 운동 기록
3. 운동 기록검색어종목 추가종목 선택 필요종목 선택 화면
3. 운동 기록반복, 무게세트 추가활성 종목 있음완료 세트 목록 갱신
3. 운동 기록휴식, 난이도, 세트 메모세트 상세 저장완료된 세트를 선택함완료 세트 목록 갱신
3. 운동 기록종목 메모종목 입력 완료활성 종목 있음종목 완료 상태
3. 운동 기록없음세션 종료최소 1개 세트 있음4. 세션 종료
4. 세션 종료세션 후 메모세션 저장Supabase 저장 성공세션/홈 화면

세션 달력 및 계획 플로우

사용자 행동입력값시스템 처리표시 결과
이전 달없음표시 월을 한 달 전으로 이동해당 월 달력 표시
다음 달없음표시 월을 한 달 후로 이동해당 월 달력 표시
오늘없음선택 날짜와 표시 월을 오늘로 이동오늘 날짜 상세 표시
날짜 선택날짜해당 날짜의 세션과 계획을 조회여러 세션과 여러 계획 세트를 위계로 표시
예정 세트 추가종목, 반복, 무게, 메모선택 날짜의 계획 세트로 저장선택 날짜 계획 목록 갱신
예정 세트 삭제계획 세트 id해당 계획 세트 삭제선택 날짜 계획 목록 갱신

회복 플로우

화면 영역입력/데이터시스템 처리표시 결과
부위별 회복최근 세션의 부위별 운동량부위별 회복 진행률 계산회복/주의/준비 상태
권장 섭취최신 체성분 데이터권장 칼로리, 단백질, 지방 계산오늘 섭취 목표
체성분 입력날짜, 체중, 골격근량, 체지방률, 메모Supabase 저장최신 기록과 히스토리 갱신
체성분 기록 없음없음기본 안내 상태입력 유도 상태

길드 플로우

기준표시 데이터사용자 행동
출석왕팔로우/친구 중 이번 달 운동일 수랭킹 목록, 내 순위탭 선택
볼륨왕팔로우/친구 중 이번 달 총 볼륨랭킹 목록, 내 순위탭 선택
무게왕주요 종목별 최대 무게랭킹 목록, 내 순위탭 선택

입력 필드 목록

의미필드 marker값 타입비고
세션 날짜workout.session.date날짜운동 시작과 세션 달력에서 사용
세션 시작 시간workout.session.startTime시간선택 입력
세션 컨디션workout.session.condition문자열좋음, 보통, 무거움, 회복
시작 전 메모workout.session.preNote긴 텍스트선택 입력
세션 후 메모workout.session.note긴 텍스트선택 입력
종목 검색어workout.picker.search문자열검색 결과 갱신
세트 반복workout.set.reps숫자필수
세트 무게workout.set.load숫자 kg필수
세트 휴식workout.set.restSeconds숫자 초선택
세트 난이도workout.set.difficulty숫자 1-10선택
세트 메모workout.set.note짧은 텍스트선택

상태 요구사항

상태의미기능 marker
active현재 선택된 탭, 현재 단계, 현재 날짜data-lg-state="active"
selected사용자가 선택한 옵션data-lg-state="selected"
completed완료한 종목, 완료한 세션data-lg-state="completed" 또는 data-lg-status="completed"
planned미래 또는 오늘의 예정 세션data-lg-status="planned"
missed과거에 계획했지만 완료하지 못한 세션data-lg-status="missed"
locked운동 중이라 시작 버튼을 새로 누를 수 없음data-lg-state="locked"
resume운동 중 화면으로 복귀 가능한 상태data-lg-state="resume"
empty기록이나 데이터가 없는 상태data-lg-state="empty"
editing세트 상세를 편집 중인 상태data-lg-state="editing"

빈 상태와 오류 상태

상황사용자에게 필요한 정보가능한 행동
로그인 전운동 기록을 보려면 로그인이 필요함Kakao·Google·Apple 중 선택
프로필 없음앱 안에서 사용할 닉네임과 사진이 필요함프로필 저장, 로그아웃
세션 기록 없음아직 저장된 운동 세션이 없음운동 시작
선택 날짜 기록 없음해당 날짜에 완료 세션이 없음계획 세트 추가, 운동 시작
계획 없음불러올 플랜이 없음빈 세션 시작
회복 데이터 없음체성분 기록을 남기면 섭취 목표를 계산함회복 데이터 저장
저장 실패Supabase 저장 오류가 발생함다시 저장 시도

스트레스 케이스

케이스예시
긴 닉네임박주희_하체볼륨_절대지켜_2026
긴 종목명인클라인 덤벨 프레스 매우 긴 커스텀 이름
하루 여러 세션오전 하체 세션, 저녁 상체 세션
한 종목 많은 세트백스쿼트 20세트
큰 볼륨 숫자1,234,567kg, 1,234.5t
계획만 있는 날짜완료 세션 0개, 예정 세트 여러 개
모바일 좁은 폭360px 기준에서도 주요 행동이 가려지지 않아야 함
데이터가 없는 첫 사용자모든 요약 영역이 빈 상태를 가져야 함

Claude에게 요청할 산출물 형식

산출물요구사항
화면 HTML대상 화면의 완전 교체 HTML 또는 component HTML
화면 CSS화면 단위 CSS. 이전 CSS 위에 덧씌우는 patch가 아님
상태 설명빈 상태, 로딩, 오류, 활성, 완료, 예정 상태 설명
반응형 설명모바일과 데스크탑을 같은 구조로 만들 필요 없음
marker 체크필요한 data-lg-* marker가 어디에 보존되는지 설명