# 메인 복귀 시 중복 초기화 방지 계획 ### Phase 1: 현재 동작 확인 - [x] **Task 1.1: MainView 생명주기와 내비게이션 구조 확인** - 확인: `SodaLive/Sources/V2/Main/MainView.swift` - 확인: `SodaLive/Sources/ContentView.swift` - 확인: `SodaLive/Sources/App/AppState.swift` - 검증 기준: `MainView`가 `NavigationStack` 루트에 유지되고 복귀 시 첫 번째 `.onAppear`의 요청이 반복되는 구조를 확인한다. ### Phase 2: 중복 초기화 차단 - [x] **Task 2.1: MainView 인증 데이터 초기화에 1회 가드 적용** - 수정: `SodaLive/Sources/V2/Main/MainView.swift` - 검증 기준: 로그인 상태에서 `hasLoadedMainData`가 `false`인 경우에만 인증 데이터 요청이 실행된다. - 검증 기준: `contentView`와 push 메시지용 두 번째 `.onAppear`는 변경되지 않는다. ### Phase 3: 검증 - [x] **Task 3.1: 변경 범위 및 Debug 빌드 검증** - 확인: `SodaLive/Sources/V2/Main/MainView.swift` - 실행 명령: `git diff --check` - 실행 명령: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug -destination 'generic/platform=iOS Simulator' -derivedDataPath /private/tmp/SodaLiveDerivedData CODE_SIGNING_ALLOWED=NO build` - 기대 결과: 공백 오류와 컴파일 오류 없이 빌드가 성공한다. ## 검증 기록 - 2026-07-15: `ContentView`와 `AppState`를 확인해 일반 상세 이동은 `navigationPath`에 destination을 추가하고, 메인 복귀는 path를 제거하는 구조임을 확인했다. `MainView`의 인증 데이터 요청은 첫 번째 `.onAppear`에 있어 복귀마다 다시 실행될 수 있다. - 2026-07-15: `MainView`에 `hasLoadedMainData` 상태를 추가하고, 토큰이 존재하면서 아직 로드하지 않은 경우에만 인증 데이터 초기화 요청을 실행하도록 변경했다. `contentView`와 push 메시지용 두 번째 `.onAppear`는 변경하지 않았다. - 2026-07-15: `git diff --check`가 exit 0으로 통과했다. Simulator 접근이 필요한 빌드는 샌드박스 밖에서 실행했으며, 위 `xcodebuild` 명령이 기존 경고만 출력하고 `** BUILD SUCCEEDED **` 및 exit 0으로 완료됐다.