-
Notifications
You must be signed in to change notification settings - Fork 1
design Requirements
Seoyoung Cho edited this page Jan 19, 2026
·
6 revisions
- 기본 정보 입력
- 이름
- 나이
- 다가오는 일정 선택
- 피부 고민 선택
-
피부 고민 카테고리 선택 → 시술 추가 화면으로 이동
- V1: 이름, 나이, 피부 고민 카테고리 저장
- 최종: 이름, 나이만 저장
- 헤더
- 오늘 날짜
- Today’s Status
- 현재 상태
- 시술 경과일
- 케어 메시지
- Today’s Care
- 루틴 목록
- 달성 여부
- 주/일간 달성률
- 헤더
- 오늘 날짜
- 챌린지
- 챌린지 이름
- 현재 챌린지 달성률
- 체리 레벨
- Today's Status
- 현재 상태
- 시술 경과일
- 케어 메시지
- 해당 월 뷰티 플랜
- 일정 목록: 시술명, 날짜/시간, D-Day
-
챌린지
- V1: 루틴명, 달성 여부, 주/일간 달성률
- V2/최종: 챌린지명, 현재 챌린지 달성률, 체리 레벨(1~4, 챌린지 없으면 0)
-
Today's Status → 다운타임 진행 중인 시술 리스트
- 오늘 날짜
- 오늘 요일 (클라이언트 요청)
- V1/V2: 가장 최근 시술 1개만 반환 (단일 객체 또는 null)
- 최종: 다운타임 진행 중인 모든 시술 반환 (
List) -
정렬 로직 추가
- 1차 정렬: 다운타임 단계 우선 (
SENSITIVE→CAUTION→RECOVERY) - 2차 정렬: 같은 단계 내에서는 최근 시술부터 (
scheduledAt내림차순)
- 1차 정렬: 다운타임 단계 우선 (
-
반환 필드
- 시술명 (
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/V2: 해당 월의 시술 리스트 (최대 5개)
시술 추가 플로우
- 피부 고민 선택 → AI가 피부고민에 따른 시술 플랜 추천 → 캘린더에 추가



시술 추가 플로우
- 피부 고민 선택 → 목표 디데이 선택 → 추천 시술 리스트 확인 → 시술 선택 → 선택한 시술 목록 확인 → 개인 다운타임 설정 → 저장
- 생각해둔 시술 없는 경우: 피부고민 선택
- 생각해둔 시술 있는 경우: 시술명 검색



- 사용자 개별 다운타임 설정
시술 추가 플로우
- 시술 선택 여부 선택
-
생각해둔 시술이 있는 경우
- 목표 회복일 선택 → 시술명 검색 → 시술 리스트 확인 → 시술 선택 → 개인 다운타임 설정 → 저장
-
생각해둔 시술이 없는 경우
- 피부 고민 선택 → 목표 회복일 선택 → 피부 고민 관련 시술 리스트 확인 → 시술 선택 → 개인 다운타임 설정 → 저장
-
생각해둔 시술이 있는 경우
-
피부 고민 선택 방식 변경
- 온보딩 화면→ 캘린더 시술 추가 화면으로 이동
- 다중 선택 (
List<String>) → 단일 선택 (String)으로 변경
-
시술 리스트 정렬 기준 추가
- 정렬 순서: 한글 가나다순
-
사용자 개별 다운타임 등록 규칙 추가
- 다운타임 일수: 0~30일까지 입력 가능
- 당일을 1일차로 계산
- 다운타임 기간 계산 로직
- 다운타임 일수를 3으로 나누어 민감기/주의기/회복기로 분할
- 나머지가 1이면 → 민감기에 +1일
- 나머지가 2이면 → 민감기 +1일, 주의기 +1일
-
중요 일정 추가 기능 제외
- MVP에서 제외됨
- 확장성을 위해 일정 타입은
PROCEDURE(시술) enum 설계 유지
-
시술 예약 시간 저장 제외
- 확장성을 위해 날짜와 시간을 함께
LocalDateTime타입으로 저장
- 확장성을 위해 날짜와 시간을 함께
-
목표 회복일 저장 추가
- 목표 회복일(
recoveryTargetDate)LocalDate타입으로 저장
- 목표 회복일(
-
캘린더 뷰
- 월/일별 캘린더
- 시술 일정, 중요 일정 표시
- 일정 상세 진입 시 다운타임 기간 표시
-
일정 상세
- 날짜 선택 시 하단에 상세 정보 표시
- 시술명, 시술 날짜 및 시간, 다운타임 정보
-
날짜별 사용자 시술 정렬 기준 변경
- 기존: 시술 시간(
scheduledAt) 오름차순 - 변경: 등록 시간(
createdAt) 내림차순
- 기존: 시술 시간(
- 시술 다운타임 상세 조회 시 목표 회복일(
recoveryTargetDate) 응답 추가 -
API 분리
- 기존: 일자별 시술 조회 시 시술 정보 + 다운타임 상세를 한 번에 반환
- 변경: 두 개의 API로 분리
-
GET /api/calendar/daily: 시술 정보 반환- DTO:
ProcedureEventResponseDto: 시술 목록 조회용 - 필드:
userProcedureId,procedureId,name,scheduledAt,downtimeDays - 다운타임 기간(민감기/주의기/회복기) 제외
- DTO:
-
GET /api/calendar/events/{id}/downtime: 다운타임 상세 정보 반환- DTO:
ProcedureEventDowntimeResponseDto: 다운타임 상세 조회용 - 필드:
userProcedureId,scheduledAt,downtimeDays,sensitiveDays,cautionDays,recoveryDays,recoveryTargetDate
- DTO:
-
- 변경 이유: 클라이언트 팀에서 데이터를 따로 받는 것이 더 편하다는 요청 반영
Step 1: 관리 영역, 루틴 카테고리 선택
↓
Step 2: AI 추천 루틴 확인 및 선택
↓
Step 3: 커스텀 루틴 추가 (선택사항)
↓
Step 4: 챌린지 생성 완료- 챌린지 제목
- 응원 메세지
- 챌린지 기간
- 오늘 날짜
- 체리 성장률
- 챌린지 달성률 (%)
- 현재 진행 일차
- 오늘의 루틴 목록 (완료 여부 체크)



-
루틴 카테고리 조회 API
- 지정된 카테고리(총 6개 반환)
- enum으로 저장 후 GET으로 보냄
-
AI 추천 루틴 생성 API
- 루틴 카테고리를 키워드로 추천 루틴 6개 생성
- 키워드는 1개만 가능
-
챌린지 생성 API
- 선택한 루틴 기반으로 챌린지 생성
- 기간 14일 고정
- 챌린지 통계 객체 생성
- 챌린지 이름 AI 생성
- 00시마다 스케줄링으로 기간이 지난 챌린지 비활성화
-
챌린지 조회 API
- 챌린지 진행률 계산
- 체리 레벨 계산
- 일차별 응원 메세지 생성
- 현재 루틴 상태 표기
- 00시 기준 챌린지 일수 변환
-
루틴 상태 업데이트 API
- 루틴 true/false 전환
- 루틴 상태 업데이트시 실시간으로 달성률 업데이트
-
커스텀 루틴 추가 API
- 직접 루틴 추가 가능
- 루틴 추가 시 당일부터 챌린지 끝나는 날까지 루틴이 추가된 상태로 유지
- 통계에 추가된 커스텀 루틴 즉시 반영
-
챌린지 생성 플로우 간소화
- V1: Step 3 커스텀 루틴 추가 (선택사항) → Step 4 완료
- V2: Step 3에서 바로 완료 (커스텀 루틴 추가 단계 제외)
-
챌린지 기간 변경
- 14일 → 7일로 변경
-
화면 구성 변경
- 오늘 날짜 제거
- 체리 성장률 → 체리 레벨, 체리 이름으로 변경
-
챌린지 조회 API 추가 정보
- 다음 레벨까지 남은 루틴 개수 계산 추가
- 각 레벨별 % 정보 추가 (예: lv1 30%)
-
루틴 상태 업데이트 처리 방식 변경
- 특정 시간 동안 추가 입력이 없으면 변경된 내용들 일괄 업데이트 (클라이언트에서 처리)
-
커스텀 루틴 추가 API 제외
- MVP 범위에서 제외됨



-
AI 추천 루틴 생성 API
- 10글자 제한
-
챌린지 생성 API
- V1/V2: 00시마다 스케줄링으로 기간이 지난 챌린지 비활성화
- 최종: 스케줄링 자동 비활성화 제거
-
챌린지 조회 API
- V1/V2: 일차별 응원 메시지 생성, 00시 기준 챌린지 일수 변환
- 최종: 응원 메시지 생성 기능 제거, 해당 기능 명시 제거 (다음날 이동 API로 대체)
-
다음날로 넘어가는 API 추가 (데모용)
- 버튼 클릭 시 다음날로 이동
- 지난 루틴 완료 기록에 따라 통계 업데이트
- 오늘이 챌린지 마지막 날이면 챌린지 비활성화 처리
- 마이 탭 기능
- 유저 기본 정보
- 유저 이름
- 회원가입 경과일
- 회원 정보 수정
- 문의하기
- 로그아웃
- 회원 탈퇴
- 유저 기본 정보
- 마이 탭 MVP에서 삭제됨
- 마이 탭 MVP에 다시 추가
-
GET /api/users- Response
- 사용자 이름(
name) - 회원가입 경과일(
daysSinceSignup)
- 사용자 이름(
- Response