Skip to content

Conversation

hye0njuoo
Copy link
Member

@hye0njuoo hye0njuoo commented Oct 21, 2025

🌴 PR 요약

🌱 작업한 브랜치

🌱 PR Point

  • 새롭게 변경된 soptamp에 따른 딥링크 로직을 수정했습니다.
스크린샷 2025-10-21 오후 6 24 33
  • 기존에 존재하던, "SoptampCurrentGenerationRankingDeepLink", "SoptampEntireRankingDeepLink" 객체들은 초기화면이 각각, 현재 기수 랭킹, 전채 랭킹이기 때문에, 새롭게 바뀐 파트랭킹을 보여주는 노드가 없어 추가했습니다.

새롭게 추가된 노드

기존에는 인덱스가 깊은 케이스가 없어서 하나의 deeplink로 처리가 가능했지만, 더 깊은 뎁스의 요구사항때문에 필요한 노드를 추가했습니다.

  • SoptampEntirePartRankingDeepLink : 전채 파트 랭킹을 담당하는 노드입니다, 내부적으로 homeCoordinator의 runRankingFlow(rankingViewType: .partRanking) 메소드를 사용합니다

  • SoptampPartRankingDeepLink: 파트 내의 랭킹을 담당하는 노드입니다. 마찬가지로 내부적으로 홈코디네이터의 .runRankingFlow(rankingViewType: .individualRankingInPart(part: part)) 위 메소드를 사용합니다. 여기서 part는 deeplink의 파라미터를 사용합니다.

  • SoptampMissionListDeepLink: 사용자가 완료한 미션 리스트를 담당하는 노드입니다. 기존의 homecoordinator에서는 missionlist용 public 함수가 없어, 아래와 같이 구현해 사용중입니다.

    public func runOtherMissionList(username: String, sentence: String) {
        showOtherMissionList(username, sentence)
    }
  • SoptampMissionDetailDeepLink: 미션디테일을 담당하는 노드입니다. 마찬가지로 기존의 showMissionDetail(model, username) 함수를 외부에서 실행할 public함수가 없어 아래와 같이 함수를 추가해 사용중입니다.
    public func runMissionDetailById(missionId: Int, username: String?) {
        let model = MissionListModel(
            id: missionId,
            title: "",
            level: 1,
            isCompleted: true
        )
        showMissionDetail(model, username)
    }
+) model의 경우에는 딥링크에서는 정보가 부족해 ID만 뷰에 전달해주고 id를 기준으로 뷰를 업데이트하도록 하는 방식으로 구현했습니다.

📌 참고 사항

  • missionDetail뷰에서 isMine여부에 따라 하나의 뷰에서 분기처리 하고 있는걸로 알고 있습니다. 그러나 아직 구체적인 인터페이스가 없어서 뷰작업 완료이후 필요한 데이터를 전달 드리는 방식으로 구현하기 위해 아직 isMine은 별도 처리 안해뒀습니다. 뷰작업이후 뷰에 맞춰서 구현해두겠습니다!

  • 현재 missionDetail뷰로 이동하는 경우에는 원래 함수의 시그니쳐인 func showMissionDetail(_ model: MissionListModel, _ username: String?)에 대해서 딥링크에서는 Model에 대한 정보를 얻을수 없다는 문제점이 있어, missionID만 전달받고, MissionListModel에 missionID를 제외한 나머지 필드에 빈값을 넣어주고 해당 mission ID로 뷰를 업데이트하도록해 구현해뒀습니다. 최대한 기존 함수 시그니처들을 유지하고 싶어 수정하지 않고 구현했는데 혹시 더 좋은 방법이 있다면 공유해주시면 감사드리겠습니당 ㅠ 🙇‍♂️

  • 레거시 분기코드는 레거시가 전부 사라진뒤에 한번에 정리하기위해 똑같이 구현해두었습니다!

💡논의하고 싶은 이슈

  • mission Detail 구현과 관련한 논의사항인데요 현재, mission 전채 리스트에서는 미션의 starlevel이 전달되지만, missionDetail에서는 서버로부터 startlevel을 전달 받지 못합니다. 그래서 현재 초기화해준 레벨 1로 보이는 문제가 있는데, 제가 생각한 해결방법은 아래와 같습니다.
  1. 서버응답으로 디테일에서도 해당미션에 대한 레벨 같이 전달 받기
  2. 딥링크에서 해당 미션 레벨 전달 받기
  3. viewController에서 선택한 Cell에 대한 callback 코디네이터에게 전달하기
    이렇게 있을거 같아요. 개인적으로는 최대한 사이드 이펙트를 줄이고 깔끔하게 구현이 가능한 방식은 2번인거 같은데 이부분은 서버측, 안드측과도 논의가 필요할거 같아 의견이 궁금합니다.
  • 테스트를 위해 home의 서베이 버튼에 임의로 연결시켜두었습니다. 테스트완료이후 제거하도록 하겠습니다.
        //TODO: - DeepLink 테스트이후 제거
        homeForMember.vm.onSurveyButtonTapped = { [weak self] _ in
                 guard let self else { return }
            let testLink = "home/soptamp/entire-part-ranking/part-ranking/missions/missionDetail?part=ANDROID&nickname=안드박찬미&id=292&isMine=true"
                 self.delegate?.homeCoordinator(self, to: .deepLink(url: testLink))
             }

📸 스크린샷

기능 스크린샷
딥링크 동작 Simulator Screen Recording - iPhone 17 Pro - 2025-10-21 at 18 23 19

📮 관련 이슈

Copy link

coderabbitai bot commented Oct 21, 2025

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능
    • 부분별 랭킹, 미션 상세, 미션 목록에 대한 딥링크 경로 추가
    • 공유된 링크를 통한 직접 네비게이션 지원 확대

Walkthrough

솝탬프 기능을 위한 새로운 딥링크 구조를 구현합니다. 부분 랭킹, 미션 목록, 미션 상세 조회 등의 딥링크 핸들러를 추가하고, 스탬프 코디네이터에 공개 래퍼 메서드를 추가하며, 홈 화면의 조사 버튼 동작을 테스트 딥링크로 변경합니다.

Changes

Cohort / File(s) 변경 요약
딥링크 핸들러 신규 추가
SoptampEntirePartRankingDeepLink.swift, SoptampMissionDetailDeepLink.swift, SoptampMissionListDeepLink.swift, SoptampPartRankingDeepLink.swift
부분 랭킹, 미션 상세, 미션 목록, 파트 랭킹에 대한 새로운 DeepLinkExecutable 구현체 추가. 각 핸들러는 Config.coordinatorFlag에 따라 LegacyStampCoordinator 또는 StampCoordinator로 분기하여 해당 플로우 실행
딥링크 라우팅
SOPT-iOS/Projects/Features/RootFeature/Sources/DeepLinks/SoptampDeepLink.swift
children 배열에 SoptampEntirePartRankingDeepLink() 추가
코디네이터 래퍼 메서드
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/StampCoordinator.swift
runOtherMissionList(username:sentence:)와 runMissionDetailById(missionId:username:) 공개 메서드 추가
테스트 경로 임시 수정
SOPT-iOS/Projects/Features/HomeFeature/Sources/HomeScene/Coordinator/HomeCoordinator.swift
onSurveyButtonTapped에서 URL을 무시하고 하드코딩된 테스트 딥링크로 네비게이션하도록 변경 (TODO 주석으로 테스트 후 제거 예정)

Sequence Diagram(s)

sequenceDiagram
    participant App
    participant HomeCoordinator
    participant RootCoordinator
    participant StampCoordinator
    participant DeepLinkHandler
    
    App->>HomeCoordinator: onSurveyButtonTapped()
    HomeCoordinator->>RootCoordinator: navigate(deepLink: test-url)
    RootCoordinator->>DeepLinkHandler: execute(handler)
    
    alt Config.coordinatorFlag == .new
        DeepLinkHandler->>StampCoordinator: runRankingFlow(rankingViewType)
        StampCoordinator->>App: Present Ranking View
    else Config.coordinatorFlag == .legacy
        DeepLinkHandler->>StampCoordinator: runRankingFlow(rankingViewType)
        StampCoordinator->>App: Present Legacy Ranking View
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

새로운 딥링크 핸들러 4개가 유사한 구조를 따르지만, 각각 서로 다른 쿼리 파라미터 처리 로직과 코디네이터 메서드 호출을 포함합니다. Config.coordinatorFlag 분기 패턴이 반복되므로 리뷰 효율이 향상되지만, 각 핸들러의 파라미터 파싱 및 에러 처리 방식을 검증해야 합니다.

Possibly related PRs

Suggested labels

size/M, feature, deeplink

Suggested reviewers

  • dlwogus0128
  • juri123123

Poem

🐰 딥링크의 길을 따라가며
부분 랭킹과 미션들이 손을 잡고,
코디네이터는 두 갈래 길에서 균형을 맞추네.
테스트 경로를 통해 새로운 솝탬프로 향하고,
TODO 주석처럼 아직 임시이지만 곧 완성될 거야! 🎯

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues Check ✅ Passed PR에서 구현한 모든 변경 사항이 연결된 이슈 #731의 목표 "새로운 솝탬프에 맞춰 딥링크를 수정한다"와 일치합니다. 새로운 파트 랭킹 노드(SoptampEntirePartRankingDeepLink, SoptampPartRankingDeepLink), 미션 리스트 노드(SoptampMissionListDeepLink), 미션 디테일 노드(SoptampMissionDetailDeepLink)를 추가하고, 이들을 SoptampDeepLink에 통합하며, 필요한 코디네이터 메서드를 노출하여 새로운 솝탬프 구조에 맞춘 딥링크 기능을 구현하고 있습니다.
Out of Scope Changes Check ✅ Passed PR에 포함된 모든 변경 사항은 이슈 #731의 목표 범위 내에 있습니다. 새로운 딥링크 핸들러 파일 추가, SoptampDeepLink.swift 업데이트, StampCoordinator의 public 메서드 추가는 모두 딥링크 로직 구현의 필수 요소입니다. HomeCoordinator의 테스트 코드는 PR 설명에서 명시적으로 "테스트 완료 후 제거" 예정이라고 언급되어 있어 의도적인 임시 추가입니다.
Description Check ✅ Passed PR 설명은 체인지셋과 직접적이고 상세하게 관련되어 있습니다. 저자는 수정된 Soptamp 구조에 맞춘 딥링크 로직 업데이트라는 명확한 목표를 제시하고, 새롭게 추가된 네 개의 딥링크 노드(SoptampEntirePartRankingDeepLink, SoptampPartRankingDeepLink, SoptampMissionListDeepLink, SoptampMissionDetailDeepLink)와 두 개의 wrapper 메서드(runOtherMissionList, runMissionDetailById)를 구체적으로 설명합니다. 각 노드의 역할과 내부 구현 방식을 상세히 기술했으며, 테스트용 임시 코드와 미해결 문제점도 명시하고 있습니다.
Title Check ✅ Passed PR 제목 "[Feat]#731 - 딥링크 로직 구현"은 변경 사항의 핵심을 명확하게 설명합니다. 제시된 파일 요약에 따르면 이 PR은 새로운 Soptamp 구조에 맞춰 여러 개의 새로운 딥링크 노드(SoptampEntirePartRankingDeepLink, SoptampPartRankingDeepLink, SoptampMissionListDeepLink, SoptampMissionDetailDeepLink)를 추가하고, 기존 SoptampDeepLink를 수정하며, StampCoordinator에 새로운 래퍼 메서드를 추가하는 것으로 구성되어 있습니다. 제목은 이러한 모든 변경사항의 주요 목표인 "딥링크 로직 구현"을 정확하게 나타내고 있으며, 간결하고 명확하며 의미 있는 정보를 전달합니다.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#731-deeplink

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@hye0njuoo hye0njuoo self-assigned this Oct 21, 2025
@hye0njuoo hye0njuoo requested a review from juri123123 October 21, 2025 09:30
@hye0njuoo hye0njuoo added Feat 새로운 기능 구현 size/M 현주⚽️ and removed size/L labels Oct 21, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 04eef73 and 8f02fa9.

📒 Files selected for processing (7)
  • SOPT-iOS/Projects/Features/HomeFeature/Sources/HomeScene/Coordinator/HomeCoordinator.swift (2 hunks)
  • SOPT-iOS/Projects/Features/RootFeature/Sources/DeepLinks/SoptampDeepLink.swift (1 hunks)
  • SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampEntirePartRankingDeepLink.swift (1 hunks)
  • SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionDetailDeepLink.swift (1 hunks)
  • SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionListDeepLink.swift (1 hunks)
  • SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampPartRankingDeepLink.swift (1 hunks)
  • SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/StampCoordinator.swift (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (6)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionListDeepLink.swift (4)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionDetailDeepLink.swift (1)
  • execute (20-41)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampPartRankingDeepLink.swift (1)
  • execute (20-43)
SOPT-iOS/Projects/Core/Sources/Extension/Foundation+/Array+.swift (1)
  • getQueryValue (18-20)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/StampCoordinator.swift (1)
  • runOtherMissionList (102-104)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/StampCoordinator.swift (1)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/LegacyRankingCoordinator.swift (1)
  • showOtherMissionList (67-82)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionDetailDeepLink.swift (4)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionListDeepLink.swift (1)
  • execute (20-36)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampPartRankingDeepLink.swift (1)
  • execute (20-43)
SOPT-iOS/Projects/Core/Sources/Extension/Foundation+/Array+.swift (1)
  • getQueryValue (18-20)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/StampCoordinator.swift (1)
  • runMissionDetailById (106-114)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampPartRankingDeepLink.swift (4)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionDetailDeepLink.swift (1)
  • execute (20-41)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionListDeepLink.swift (1)
  • execute (20-36)
SOPT-iOS/Projects/Core/Sources/Extension/Foundation+/Array+.swift (1)
  • getQueryValue (18-20)
SOPT-iOS/Projects/Features/StampFeature/Interface/Sources/Part.swift (1)
  • uppercasedName (19-28)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampEntirePartRankingDeepLink.swift (1)
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampEntireRankingDeepLink.swift (1)
  • SoptampEntireRankingDeepLink (15-34)
SOPT-iOS/Projects/Features/HomeFeature/Sources/HomeScene/Coordinator/HomeCoordinator.swift (1)
SOPT-iOS/Projects/Features/RootFeature/Sources/ApplicationCoordinator+Delegate.swift (1)
  • homeCoordinator (52-77)
🔇 Additional comments (7)
SOPT-iOS/Projects/Features/HomeFeature/Sources/HomeScene/Coordinator/HomeCoordinator.swift (1)

123-128: 테스트 코드 제거 필요

TODO 주석에 명시된 대로, 딥링크 테스트 완료 후 이 코드를 제거해야 합니다. 프로덕션 배포 전에 원래의 onSurveyButtonTapped 동작을 복원하거나 해당 기능을 완전히 제거해 주세요.

SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/StampCoordinator.swift (1)

102-104: LGTM!

기존 내부 메서드를 외부에 노출하는 깔끔한 래퍼 구현입니다.

SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionDetailDeepLink.swift (1)

28-39: Legacy 경로에서 네비게이션 미구현

Config.coordinatorFlag.legacy인 경우, coordinator 타입 검증만 수행하고 실제 네비게이션 메서드를 호출하지 않습니다. 반면 .new 경로는 runMissionDetailById를 호출합니다.

이것이 의도된 동작인지 확인해 주세요. Legacy 구현이 아직 필요하지 않다면 명시적인 주석을 추가하거나, 구현이 필요하다면 적절한 메서드 호출을 추가해야 합니다.

 switch Config.coordinatorFlag {
 case .legacy:
     guard let coordinator = coordinator as? LegacyStampCoordinator else {
         return nil
     }
+    // TODO: Legacy 미션 디테일 네비게이션 구현 필요
+    // coordinator.runMissionDetailById(missionId: missionId, username: nickname)
 
 case .new:
     guard let coordinator = coordinator as? StampCoordinator else {
         return nil
     }
     coordinator.runMissionDetailById(missionId: missionId, username: nickname)
 }
SOPT-iOS/Projects/Features/RootFeature/Sources/DeepLinks/SoptampDeepLink.swift (1)

15-15: LGTM!

새로운 파트 랭킹 딥링크를 children 배열에 적절히 추가했습니다.

SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionListDeepLink.swift (1)

28-34: Legacy 경로에서 네비게이션 미구현

SoptampMissionDetailDeepLink와 동일한 패턴으로, .legacy 경로에서 coordinator 타입 검증만 수행하고 runOtherMissionList를 호출하지 않습니다. .new 경로와 달리 실제 네비게이션이 발생하지 않습니다.

Legacy 구현 계획을 확인하고, 필요시 메서드 호출을 추가하거나 TODO 주석을 추가해 주세요.

 switch Config.coordinatorFlag {
 case .legacy:
     guard let coordinator = coordinator as? LegacyStampCoordinator else { return nil }
+    // TODO: Legacy 미션 리스트 네비게이션 구현 필요
+    // coordinator.runOtherMissionList(username: username, sentence: sentence)
 case .new:
     guard let coordinator = coordinator as? StampCoordinator else { return nil }
     coordinator.runOtherMissionList(username: username, sentence: sentence)
 }
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampEntirePartRankingDeepLink.swift (1)

14-31: LGTM!

Legacy와 new 경로 모두에서 적절히 runRankingFlow를 호출하고 있으며, 자식 딥링크 구조도 올바르게 설정되어 있습니다.

SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampPartRankingDeepLink.swift (1)

20-43: LGTM!

파트 파라미터 검증 및 에러 로깅이 잘 구현되어 있으며, legacy/new 경로 모두에서 일관되게 네비게이션을 수행합니다. uppercasedName()을 사용한 대소문자 무시 비교도 적절합니다.

Comment on lines +1 to +7
//
// SoptampPartMissionListDeepLink.swift
// StampFeature
//
// Created by 성현주 on 10/21/25.
// Copyright © 2025 SOPT-iOS. All rights reserved.
//
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

파일명 불일치

헤더 주석의 파일명이 실제 파일명과 다릅니다.

  • 주석: SoptampPartMissionListDeepLink.swift
  • 실제: SoptampMissionListDeepLink.swift
 //
-//  SoptampPartMissionListDeepLink.swift
+//  SoptampMissionListDeepLink.swift
 //  StampFeature
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//
// SoptampPartMissionListDeepLink.swift
// StampFeature
//
// Created by 성현주 on 10/21/25.
// Copyright © 2025 SOPT-iOS. All rights reserved.
//
//
// SoptampMissionListDeepLink.swift
// StampFeature
//
// Created by 성현주 on 10/21/25.
// Copyright © 2025 SOPT-iOS. All rights reserved.
//
🤖 Prompt for AI Agents
In
SOPT-iOS/Projects/Features/StampFeature/Sources/Coordinator/DeepLinks/SoptampMissionListDeepLink.swift
around lines 1 to 7, the header comment's filename
(SoptampPartMissionListDeepLink.swift) does not match the actual file name
(SoptampMissionListDeepLink.swift); update the header comment to use the correct
filename so the top-of-file comment matches the real file name exactly.

Comment on lines +106 to +114
public func runMissionDetailById(missionId: Int, username: String?) {
let model = MissionListModel(
id: missionId,
title: "",
level: 1,
isCompleted: true
)
showMissionDetail(model, username)
}
Copy link

@coderabbitai coderabbitai bot Oct 21, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

더미 데이터로 인한 잠재적 문제

MissionListModel을 하드코딩된 더미 값으로 생성하고 있습니다:

  • title: "" - UI에서 빈 제목이 표시될 수 있음
  • level: 1 - 실제 미션 레벨과 불일치할 수 있음 (Line 117에서 StarViewLevel 초기화에 사용됨)
  • isCompleted: true - 다른 사용자의 미션인 경우 부정확할 수 있음

PR 설명에서 언급하신 대로, 미션 레벨 정보 누락 문제에 대한 다음 해결 방안을 검토해 주세요:

  1. 서버 응답에 레벨 정보 포함하도록 API 확장
  2. 딥링크 파라미터로 레벨 전달 (예: level 쿼리 파라미터 추가)
  3. 미션 디테일 뷰에서 ID로 전체 정보를 다시 fetch
 public func runMissionDetailById(missionId: Int, username: String?) {
+    // 옵션 1: 쿼리 파라미터에서 레벨 정보를 추가로 받기
+    // public func runMissionDetailById(missionId: Int, username: String?, level: Int?)
+    
+    // 옵션 2: 미션 디테일 뷰에서 ID로 전체 정보 fetch 후 업데이트
     let model = MissionListModel(
         id: missionId,
-        title: "",
-        level: 1,
+        title: "", // TODO: Fetch from server or pass via query
+        level: 1,  // TODO: Get actual level from query parameter
         isCompleted: true
     )
     showMissionDetail(model, username)
 }

Committable suggestion skipped: line range outside the PR's diff.

Copy link
Contributor

@dlwogus0128 dlwogus0128 Oct 21, 2025

Choose a reason for hiding this comment

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

저도 적어주신 내용 확인했는데, 2로 가는 게 깔끔할 듯 ! 안드랑 논의하고 결정해주세요

Copy link

Choose a reason for hiding this comment

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

@dlwogus0128 넵, 알겠습니다! 딥링크 파라미터로 level 정보를 전달하는 방식(옵션 2)으로 안드로이드 팀과 협의하여 결정하시면 좋을 것 같습니다. 크로스 플랫폼 간 일관성 있는 딥링크 스펙을 맞추는 것이 중요하니 논의 후 구현 방향이 정해지면 더미 데이터 부분을 실제 값으로 대체해 주시면 되겠습니다! 👍

Copy link
Contributor

@dlwogus0128 dlwogus0128 left a comment

Choose a reason for hiding this comment

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

굿! 수고햇어요

//TODO: - DeepLink 테스트이후 제거
homeForMember.vm.onSurveyButtonTapped = { [weak self] _ in
guard let self else { return }
let testLink = "home/soptamp/entire-part-ranking/part-ranking/missions/missionDetail?part=ANDROID&nickname=안드박찬미&id=292&isMine=true"
Copy link
Contributor

Choose a reason for hiding this comment

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

길긴 길다 ㅋㅋㅋㅋ

}

guard let part = Part.allCases.first(where: {
$0.uppercasedName() == partString.uppercased()
Copy link
Contributor

Choose a reason for hiding this comment

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

오 디테일하네요

coordinator.runRankingFlow(rankingViewType: .individualRankingInPart(part: part))
case .new:
guard let coordinator = coordinator as? StampCoordinator else { return nil }
coordinator.runRankingFlow(rankingViewType: .individualRankingInPart(part: part))
Copy link
Contributor

Choose a reason for hiding this comment

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

분기까지 굿! 근데 이제 coordinatorFlag 들어가보면 알겠지만 legacy 쪽은 안 쓰긴 해요

Comment on lines +106 to +114
public func runMissionDetailById(missionId: Int, username: String?) {
let model = MissionListModel(
id: missionId,
title: "",
level: 1,
isCompleted: true
)
showMissionDetail(model, username)
}
Copy link
Contributor

@dlwogus0128 dlwogus0128 Oct 21, 2025

Choose a reason for hiding this comment

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

저도 적어주신 내용 확인했는데, 2로 가는 게 깔끔할 듯 ! 안드랑 논의하고 결정해주세요

@dlwogus0128
Copy link
Contributor

별건 아니지만.. 담번엔 pr 제목 컨벤션 맞춰주세요! 진짜 사소하긴함

@hye0njuoo hye0njuoo changed the title [feat] 딥링크 로직 구현 [Feat]#731 - 딥링크 로직 구현 Oct 21, 2025
@pull-request-size pull-request-size bot added size/L and removed size/M labels Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feat 새로운 기능 구현 size/L 현주⚽️

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 솝탬프 딥링크 구현

2 participants