Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔗 연관된 이슈
🎯 작업 목적
Cradle의
sourcesgraph 조합과@External생성 메서드를 일반 SwiftUI MVVM 구조에서 컴파일로 검증할ExampleApp구성.이슈 본문의 다중 모듈 요구는 소유자 합의에 따라 app target 하나와 실제 폴더 책임으로 대체. GitHub 이슈 본문은 변경하지 않음.
📝 작업 내용
📌 요약
ExampleAppproject와 공유 scheme 추가App,Domain,Data,Presentation,AppComposition폴더 기반 Clean Architecture 예제 구성ProductRepositorygraph 조합 추가@External ProductID로ProductDetailViewModel을 생성하는AppGraph와ExampleAppComposition추가ExampleApp BuildCI 추가🔍 상세
Domain에Product,ProductID,ProductRepository,LoadProductUseCase구성Data/Persistence의 비어 있는 기본 저장소와Data/Infra의 결정적인 상품 응답 구성DataGraph에서 Persistence 결과를 먼저 사용하고 값이 없을 때 Infra 응답을Product로 변환하는 비공개DefaultProductRepository구성ProductDetailViewModel의@MainActor,ObservableObject,@Published상태와ProductDetailView의@StateObject소유권 구성ExampleAppComposition이 leaf graph부터DataGraph,AppGraph까지 조립하고 graph만 보유하는 Composition Root 구성@Provide(.transient)와@External ProductID로 호출마다 ViewModel을 생성하고 graph·Factory가 결과를 저장하지 않는 흐름 구성PersistenceGraph.override(...).build()를 직접 적용하는 구성ExampleApp Buildjob에서 generic iOS Simulator destination과CODE_SIGNING_ALLOWED=NObuild만 수행하고 build log artifact를 보존하는 CI 구성✅ 검증
xcodebuild -list -project Examples/ExampleApp/ExampleApp.xcodeprojxcodebuild -project Examples/ExampleApp/ExampleApp.xcodeproj -scheme ExampleApp -configuration Debug -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO buildswift buildswift test— Swift Testing 236개와 XCTest 2개 통과git diff --check🔄 변경 흐름
flowchart TB app[ExampleApp] --> composition[ExampleAppComposition] composition --> persistence[PersistenceGraph] composition --> infra[InfraGraph] persistence --> data[DataGraph] infra --> data data --> repository[ProductRepository] repository --> useCase[LoadProductUseCase] useCase --> appGraph[AppGraph] input[ProductID] --> appGraph appGraph --> viewModel[ProductDetailViewModel] viewModel --> view[ProductDetailView] previewOverride[PersistenceGraph override build] --> previewData[Preview DataGraph] previewInfra[Preview InfraGraph] --> previewData previewData --> previewRepository[Preview ProductRepository] previewRepository --> previewUseCase[Preview LoadProductUseCase] previewUseCase --> previewGraph[Preview AppGraph] previewInput[Preview ProductID] --> previewGraph previewGraph --> previewModel[Preview ProductDetailViewModel] previewModel --> previewView[Preview ProductDetailView]