배경
온보딩 완료 후 사용자가 처음 홈 화면에 진입할 때, 알림 허용 여부를 묻는 모달을 노출하고 선택 결과를 앱 설정에 반영해야 한다.
동시에 온보딩 직후에는 빈 시간 추천 관련 기본값을 사용자 UI 없이 내부/서버에 적용해야 한다.
이 두 가지는 목적이 다르지만, 온보딩 완료 → 홈 첫 진입 시점에 함께 처리되는 후속 플로우다.
목표
1. 알림 허용 모달 (사용자 facing)
온보딩 완료 후 홈에 처음 들어왔을 때 모달을 노출한다.
| 사용자 선택 |
결과 |
| 알림 허용 |
아래 3종 알림 설정 모두 ON + OS 알림 권한 요청 |
| 허용 안 함 |
아래 3종 알림 설정 모두 OFF |
모달 카피 (Figma 기준)
- 타이틀: 더 정확한 일정 추천을 위해 알림을내도 될까요?
- 설명: 일정 완료 확인, 컨디션 기록, 맞춤 일정 추천 알림을 보내드릴게요.
- 버튼: 알림 허용 / 허용 안 함
반영 대상 알림 3종
- 일정 종료 알림
- 컨디션 기록 알림
- 추천 일정 알림
모달은 일괄 opt-in/opt-out이다. 항목별 선택은 모달에서 하지 않는다.
이후 사용자는 설정 페이지에서 항목별 ON/OFF를 변경할 수 있어야 한다.
2. 빈 시간 추천 기본값 (silent / non-UI)
온보딩 직후 아래 값을 설정 UI에 노출하지 않고 기본값으로 적용한다.
| 항목 |
기본값 |
| 빈 시간 추천 여부 |
허용 |
| 추천 기준 (최소 빈 시간) |
15분 |
| 제외 시간대 |
00:00~07:00, 22:00~24:00 |
예시 동작:
- 새벽 3시 빈 시간 → 추천 안 함
- 오전 10시 20분 빈 시간 → 추천 후보
- 밤 11시 빈 시간 → 추천 안 함
이 값은 추천 알고리즘 규칙이며, 알림 ON/OFF와는 별개 축이다.
두 축 정리
|
알림 모달 |
빈 시간 추천 기본값 |
| 사용자 노출 |
✅ 홈 첫 진입 모달 |
❌ UI 없음 |
| 설정에서 변경 |
✅ (3종 토글) |
❌ 스펙상 온보딩 직후 고정 기본값 |
| 역할 |
푸시 알림 수신 여부 |
언제/어떤 빈 시간에 일정을 추천할지 |
현재 코드베이스 갭
- 온보딩 마지막(
transport-screen)에서 바로 /(tabs) 이동, 홈 첫 진입 모달 없음
settings-screen 알림 토글 2종만 존재 (일정 종료 / 컨디션 기록), 추천 일정 알림 없음
- 알림 토글은 로컬
useState만 사용, API/persist 미연동
- OS 알림 권한 요청 미구현
ai-recommendation 도메인/일정 추천 기준 설정 화면은 별도 존재하나, 온보딩 직후 silent 기본값(15분, 07시·2224시 제외) 자동 적용 로직 없음
작업 범위
A. 홈 첫 진입 알림 모달
B. 빈 시간 추천 silent 기본값
C. 라우팅 연계
열린 질문
- 알림 3종 설정 저장소: 서버 API 있는지, 어떤 도메인/endpoint인지
- 빈 시간 추천 기본값: onboarding API에 포함되는지,
ai-recommendation/settings API인지
- 모달 재노출: "허용 안 함" 후 앱 재실행 시 다시 보여줄지
- OS 권한 거부 시 앱 내 토글 상태 처리 (ON 유지 vs OFF 강제)
recommendation-criteria-screen과 silent 기본값의 관계 (같은 store/API를 쓸지, 온보딩 직후만 seed할지)
검증
완료 조건
- 온보딩 직후 홈 첫 진입 알림 모달이 스펙대로 동작한다.
- 알림 3종은 모달에서 일괄 설정되고, 이후 설정 페이지에서 항목별 수정 가능하다.
- 빈 시간 추천 기본값은 UI 없이 온보딩 직후 적용된다.
- 알림 설정과 추천 알고리즘 기본값이 서로 다른 책임으로 분리되어 있다.
관련 파일 (예상)
src/screens/home/home-screen.tsx
src/screens/onboarding/transport-screen.tsx
src/screens/settings/settings-screen.tsx
src/screens/settings/recommendation-criteria-screen.tsx (연계 검토)
src/domains/ai-recommendation/*
src/translations/ko.ts
배경
온보딩 완료 후 사용자가 처음 홈 화면에 진입할 때, 알림 허용 여부를 묻는 모달을 노출하고 선택 결과를 앱 설정에 반영해야 한다.
동시에 온보딩 직후에는 빈 시간 추천 관련 기본값을 사용자 UI 없이 내부/서버에 적용해야 한다.
이 두 가지는 목적이 다르지만, 온보딩 완료 → 홈 첫 진입 시점에 함께 처리되는 후속 플로우다.
목표
1. 알림 허용 모달 (사용자 facing)
온보딩 완료 후 홈에 처음 들어왔을 때 모달을 노출한다.
모달 카피 (Figma 기준)
반영 대상 알림 3종
모달은 일괄 opt-in/opt-out이다. 항목별 선택은 모달에서 하지 않는다.
이후 사용자는 설정 페이지에서 항목별 ON/OFF를 변경할 수 있어야 한다.
2. 빈 시간 추천 기본값 (silent / non-UI)
온보딩 직후 아래 값을 설정 UI에 노출하지 않고 기본값으로 적용한다.
예시 동작:
이 값은 추천 알고리즘 규칙이며, 알림 ON/OFF와는 별개 축이다.
두 축 정리
현재 코드베이스 갭
transport-screen)에서 바로/(tabs)이동, 홈 첫 진입 모달 없음settings-screen알림 토글 2종만 존재 (일정 종료 / 컨디션 기록), 추천 일정 알림 없음useState만 사용, API/persist 미연동ai-recommendation도메인/일정 추천 기준 설정 화면은 별도 존재하나, 온보딩 직후 silent 기본값(15분, 07시·2224시 제외) 자동 적용 로직 없음작업 범위
A. 홈 첫 진입 알림 모달
expo-notifications등)B. 빈 시간 추천 silent 기본값
ai-recommendation연동)C. 라우팅 연계
열린 질문
ai-recommendation/settings API인지recommendation-criteria-screen과 silent 기본값의 관계 (같은 store/API를 쓸지, 온보딩 직후만 seed할지)검증
npm run type-checknpm run lint완료 조건
관련 파일 (예상)
src/screens/home/home-screen.tsxsrc/screens/onboarding/transport-screen.tsxsrc/screens/settings/settings-screen.tsxsrc/screens/settings/recommendation-criteria-screen.tsx(연계 검토)src/domains/ai-recommendation/*src/translations/ko.ts