Skip to content

design Requirements

Seoyoung Cho edited this page Jan 19, 2026 · 6 revisions

요구사항 명세서

📌 온보딩

V1

Onboarding V1
  • 기본 정보 입력
    • 이름
    • 나이
    • 다가오는 일정 선택
  • 피부 고민 선택

최종

Onboarding final

변경사항

  • 피부 고민 카테고리 선택 → 시술 추가 화면으로 이동
    • V1: 이름, 나이, 피부 고민 카테고리 저장
    • 최종: 이름, 나이만 저장

📌 홈

V1

Home V1
  • 헤더
    • 오늘 날짜
  • Today’s Status
    • 현재 상태
    • 시술 경과일
    • 케어 메시지
  • Today’s Care
    • 루틴 목록
    • 달성 여부
    • 주/일간 달성률

V2

Home V2
  • 헤더
    • 오늘 날짜
  • 챌린지
    • 챌린지 이름
    • 현재 챌린지 달성률
    • 체리 레벨
  • Today's Status
    • 현재 상태
    • 시술 경과일
    • 케어 메시지
  • 해당 월 뷰티 플랜
    • 일정 목록: 시술명, 날짜/시간, D-Day

최종

Home final
  • 챌린지
    • V1: 루틴명, 달성 여부, 주/일간 달성률
    • V2/최종: 챌린지명, 현재 챌린지 달성률, 체리 레벨(1~4, 챌린지 없으면 0)
  • Today's Status → 다운타임 진행 중인 시술 리스트
    • 오늘 날짜
    • 오늘 요일 (클라이언트 요청)
    • V1/V2: 가장 최근 시술 1개만 반환 (단일 객체 또는 null)
    • 최종: 다운타임 진행 중인 모든 시술 반환 (List)
    • 정렬 로직 추가
      • 1차 정렬: 다운타임 단계 우선 (SENSITIVE → CAUTION → RECOVERY)
      • 2차 정렬: 같은 단계 내에서는 최근 시술부터 (scheduledAt 내림차순)
    • 반환 필드
      • 시술명 (name)
      • 회복 N일차 (daysSince) - 시술 당일 = 1일차
      • 다운타임 상태 (currentPhase): SENSITIVE / CAUTION / RECOVERY
    • 케어 메시지: MVP에서 제외
  • 해당 월 뷰티 플랜 → 다가오는 일정
    • V1/V2: 해당 월의 시술 리스트 (최대 5개)
      • 반환: id, name, scheduledAt, dDay
    • 최종: 다가오는 시술 날짜별 그룹 리스트 (최대 3개 날짜)
      • 반환: date, name, count, dDay
      • date: 시간 정보 제외하고 날짜만 표시하도록 변경
      • name: 해당 날짜의 시술 중 다운타임이 가장 긴 시술명 (대표 시술)
      • count: 해당 날짜의 총 시술 개수

📌 캘린더

V1

Procedure add flow V1

시술 추가 플로우

  • 피부 고민 선택 → AI가 피부고민에 따른 시술 플랜 추천 → 캘린더에 추가

V1.1

Procedure add flow V1.1 - step 1Procedure add flow V1.1 - step 2Procedure add flow V1.1 - step 3

시술 추가 플로우

  • 피부 고민 선택 → 목표 디데이 선택 → 추천 시술 리스트 확인 → 시술 선택 → 선택한 시술 목록 확인 → 개인 다운타임 설정 → 저장

최종

  • 생각해둔 시술 없는 경우: 피부고민 선택
  • 생각해둔 시술 있는 경우: 시술명 검색

No preselected procedure - skin concern selectionProcedure list for skin concernsPreselected procedure - search by name

  • 사용자 개별 다운타임 설정
Custom downtime settings

시술 추가 플로우

  • 시술 선택 여부 선택
    • 생각해둔 시술이 있는 경우
      • 목표 회복일 선택 → 시술명 검색 → 시술 리스트 확인 → 시술 선택 → 개인 다운타임 설정 → 저장
    • 생각해둔 시술이 없는 경우
      • 피부 고민 선택 → 목표 회복일 선택 → 피부 고민 관련 시술 리스트 확인 → 시술 선택 → 개인 다운타임 설정 → 저장

변경사항

  • 피부 고민 선택 방식 변경
    • 온보딩 화면→ 캘린더 시술 추가 화면으로 이동
    • 다중 선택 (List<String>) → 단일 선택 (String)으로 변경
  • 시술 리스트 정렬 기준 추가
    • 정렬 순서: 한글 가나다순
  • 사용자 개별 다운타임 등록 규칙 추가
    • 다운타임 일수: 0~30일까지 입력 가능
    • 당일을 1일차로 계산
    • 다운타임 기간 계산 로직
      • 다운타임 일수를 3으로 나누어 민감기/주의기/회복기로 분할
      • 나머지가 1이면 → 민감기에 +1일
      • 나머지가 2이면 → 민감기 +1일, 주의기 +1일
  • 중요 일정 추가 기능 제외
    • MVP에서 제외됨
    • 확장성을 위해 일정 타입은 PROCEDURE(시술) enum 설계 유지
  • 시술 예약 시간 저장 제외
    • 확장성을 위해 날짜와 시간을 함께 LocalDateTime 타입으로 저장
  • 목표 회복일 저장 추가
    • 목표 회복일(recoveryTargetDate) LocalDate 타입으로 저장

V1

Calendar view V1
  • 캘린더 뷰
    • 월/일별 캘린더
    • 시술 일정, 중요 일정 표시
    • 일정 상세 진입 시 다운타임 기간 표시
  • 일정 상세
    • 날짜 선택 시 하단에 상세 정보 표시
    • 시술명, 시술 날짜 및 시간, 다운타임 정보

최종

Calendar view final
  • 날짜별 사용자 시술 정렬 기준 변경
    • 기존: 시술 시간(scheduledAt) 오름차순
    • 변경: 등록 시간(createdAt) 내림차순
  • 시술 다운타임 상세 조회 시 목표 회복일(recoveryTargetDate) 응답 추가
  • API 분리
    • 기존: 일자별 시술 조회 시 시술 정보 + 다운타임 상세를 한 번에 반환
    • 변경: 두 개의 API로 분리
      • GET /api/calendar/daily: 시술 정보 반환
        • DTO: ProcedureEventResponseDto: 시술 목록 조회용
        • 필드: userProcedureId, procedureId, name, scheduledAt, downtimeDays
        • 다운타임 기간(민감기/주의기/회복기) 제외
      • GET /api/calendar/events/{id}/downtime: 다운타임 상세 정보 반환
        • DTO: ProcedureEventDowntimeResponseDto: 다운타임 상세 조회용
        • 필드: userProcedureId, scheduledAt, downtimeDays, sensitiveDays, cautionDays, recoveryDays, recoveryTargetDate
    • 변경 이유: 클라이언트 팀에서 데이터를 따로 받는 것이 더 편하다는 요청 반영

📌 챌린지

V1

챌린지 생성 플로우

Step 1: 관리 영역, 루틴 카테고리 선택
   ↓
Step 2: AI 추천 루틴 확인 및 선택
   ↓
Step 3: 커스텀 루틴 추가 (선택사항)
   ↓
Step 4: 챌린지 생성 완료

챌린지 현황

  • 챌린지 제목
  • 응원 메세지
  • 챌린지 기간
  • 오늘 날짜
  • 체리 성장률
  • 챌린지 달성률 (%)
  • 현재 진행 일차
  • 오늘의 루틴 목록 (완료 여부 체크)

상세 요구사항

Challenge V1 - screen 1Challenge V1 - screen 2Challenge V1 - screen 3

  • 루틴 카테고리 조회 API
    • 지정된 카테고리(총 6개 반환)
    • enum으로 저장 후 GET으로 보냄
  • AI 추천 루틴 생성 API
    • 루틴 카테고리를 키워드로 추천 루틴 6개 생성
    • 키워드는 1개만 가능
  • 챌린지 생성 API
    • 선택한 루틴 기반으로 챌린지 생성
    • 기간 14일 고정
    • 챌린지 통계 객체 생성
    • 챌린지 이름 AI 생성
    • 00시마다 스케줄링으로 기간이 지난 챌린지 비활성화
  • 챌린지 조회 API
    • 챌린지 진행률 계산
    • 체리 레벨 계산
    • 일차별 응원 메세지 생성
    • 현재 루틴 상태 표기
    • 00시 기준 챌린지 일수 변환
  • 루틴 상태 업데이트 API
    • 루틴 true/false 전환
    • 루틴 상태 업데이트시 실시간으로 달성률 업데이트
  • 커스텀 루틴 추가 API
    • 직접 루틴 추가 가능
    • 루틴 추가 시 당일부터 챌린지 끝나는 날까지 루틴이 추가된 상태로 유지
    • 통계에 추가된 커스텀 루틴 즉시 반영

V2

Challenge V2

변경사항

  • 챌린지 생성 플로우 간소화
    • V1: Step 3 커스텀 루틴 추가 (선택사항) → Step 4 완료
    • V2: Step 3에서 바로 완료 (커스텀 루틴 추가 단계 제외)
  • 챌린지 기간 변경
    • 14일 → 7일로 변경
  • 화면 구성 변경
    • 오늘 날짜 제거
    • 체리 성장률 → 체리 레벨, 체리 이름으로 변경
  • 챌린지 조회 API 추가 정보
    • 다음 레벨까지 남은 루틴 개수 계산 추가
    • 각 레벨별 % 정보 추가 (예: lv1 30%)
  • 루틴 상태 업데이트 처리 방식 변경
    • 특정 시간 동안 추가 입력이 없으면 변경된 내용들 일괄 업데이트 (클라이언트에서 처리)
  • 커스텀 루틴 추가 API 제외
    • MVP 범위에서 제외됨

최종

Challenge final - screen 1Challenge final - screen 2Challenge final - screen 3

변경사항

  • AI 추천 루틴 생성 API
    • 10글자 제한
  • 챌린지 생성 API
    • V1/V2: 00시마다 스케줄링으로 기간이 지난 챌린지 비활성화
    • 최종: 스케줄링 자동 비활성화 제거
  • 챌린지 조회 API
    • V1/V2: 일차별 응원 메시지 생성, 00시 기준 챌린지 일수 변환
    • 최종: 응원 메시지 생성 기능 제거, 해당 기능 명시 제거 (다음날 이동 API로 대체)
  • 다음날로 넘어가는 API 추가 (데모용)
    • 버튼 클릭 시 다음날로 이동
    • 지난 루틴 완료 기록에 따라 통계 업데이트
    • 오늘이 챌린지 마지막 날이면 챌린지 비활성화 처리

📌 마이

V1

My page V1
  • 마이 탭 기능
    • 유저 기본 정보
      • 유저 이름
      • 회원가입 경과일
    • 회원 정보 수정
    • 문의하기
    • 로그아웃
    • 회원 탈퇴

V2

  • 마이 탭 MVP에서 삭제됨

최종

My page final
  • 마이 탭 MVP에 다시 추가
  • GET /api/users
    • Response
      • 사용자 이름(name)
      • 회원가입 경과일(daysSinceSignup)

Clone this wiki locally