Skip to content

feat: 온보딩 완료 정보를 서버에 저장 - #179

Merged
A6ul1213 merged 2 commits into
devfrom
feature/#178-onboarding-api-integration
Nov 3, 2026
Merged

A6ul1213 merged 2 commits into
devfrom
feature/#178-onboarding-api-integration

Conversation

@A6ul1213

@A6ul1213 A6ul1213 commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Summary

  • 온보딩 완료 때 경험 수준·목표·주간 운동 횟수를 명세된 값으로 변환해 서버에 저장합니다.
  • Debug에서만 로컬 Compose와 메모리 기반 dev-token을 사용하고, Debug plist에만 로컬 네트워크 예외를 둡니다.
  • 서버 오류 메시지, 재시도, 로컬 계속하기 동작을 추가하고 요청 매핑·토큰·오류 흐름 테스트를 보강합니다.

Related issue

Closes #178

Verification

  • Tuist project generation
  • Build (앱 및 테스트 번들)
  • Unit tests: 4 passed, 0 failed
  • SwiftLint: 로컬 실행 불가(바이너리 미설치); CI에서 실행
  • UI tests: 2 passed, 0 failed on isolated iPhone 17e (iOS 27); 서버 오류 재시도 및 Release 미구성 화면 확인

Review checklist

  • Scope is limited to the linked issue.
  • Tests cover changed behavior where appropriate.
  • No secrets, generated Xcode project files, or unrelated changes are included.

범위 및 Release 동작

이번 PR은 Debug 빌드에서 로컬 Compose (http://localhost:8000)와 개발 토큰을 사용한 온보딩 저장 검증만 다룹니다. Release용 인증 구성과 실제 서버 저장은 후속 작업입니다. Release에서 저장 서비스가 구성되지 않은 경우 성공이나 온보딩 완료로 처리하지 않고, 서버 저장을 사용할 수 없음을 표시합니다.

@A6ul1213
A6ul1213 marked this pull request as ready for review November 2, 2026 23:22

@dltldn1234 dltldn1234 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 결과, 현재 상태로는 Approve하지 않고 수정 요청합니다.

차단 항목은 Release 빌드에서 온보딩 서버 저장이 조용히 건너뛰어지는 점입니다. GYMUPApp은 #if DEBUG 바깥에서 submissionService를 nil로 주입하고, 아래 인라인 코드는 서비스가 없어도 성공을 반환합니다. 그러면 온보딩 화면이 로컬 저장과 완료 처리를 진행하지만 PUT /api/v1/users/me/onboarding은 전송되지 않습니다. 이번 PR의 목적이 Debug 로컬 서버 확인에 한정된 것이라면 그 범위를 PR/화면 동작에 명시하고, Release의 누락 상태를 성공으로 표시하지 않는 처리가 필요합니다. 제품 기능까지 의도한다면 Release용 인증된 서비스 구성이 필요합니다.

Notion 링크와 #178의 매핑 요구, 기존 OnboardingAPIService의 경로/DTO를 확인했습니다. 다만 연결된 Notion에서는 원본 데이터베이스의 행을 읽을 수 없어 필드 계약 전체를 독립 대조했다고 보지는 않습니다. CI의 프로젝트 생성, SwiftLint, 단위 테스트는 모두 통과한 것으로 확인했습니다.

errorMessage = "온보딩 정보를 확인한 뒤 다시 시도해 주세요."
return false
}
guard let service else {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] 서비스가 없는 Release 경로를 성공 처리하지 마세요. GYMUPApp은 #if DEBUG에서만 서비스를 만들기 때문에 Release에서는 이 분기로 들어와 true를 반환합니다. OnboardingFlowView는 그 값을 성공으로 받아 로컬 설정을 저장하고 온보딩을 완료하므로, 서버의 PUT /api/v1/users/me/onboarding은 실행되지 않은 채 저장된 것처럼 보입니다. Release API 구성이 후속 범위라면 현재 빌드가 Debug 전용임을 명시하고 이 경로를 성공처럼 표시하지 않도록 해 주세요. 실제 제품 저장을 목표로 한다면 Release용 인증된 서비스 주입과 테스트가 필요합니다.

@A6ul1213
A6ul1213 merged commit 6e6bdaf into dev Nov 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 온보딩 완료 정보를 서버에 저장

2 participants