Skip to content

Conversation

@Funital
Copy link
Contributor

@Funital Funital commented Feb 3, 2026

🔗 연결된 이슈

Resolved #51

✨ 주요 작업사항

이번 PR의 핵심 변경사항을 알려주세요!

실제 API 서비스를 데이터 소스에 통합하고, 의존성 주입(DI) 컨테이너를 리팩토링하며, Home 관련 API 요청·응답을 위한 새로운 DTO를 추가함으로써 Home 및 LookBook 모듈에 중요한 개선 사항을 도입합니다. 또한 LookBook DI 컨테이너 전반에서 ID 타입을 Int64로 표준화하고, 새로운 문자열 리터럴을 추가해 로컬라이제이션을 강화했으며, 몇 가지 소소한 개선과 디버그 유틸리티도 포함되어 있습니다.

가장 중요한 변경 사항은 다음과 같습니다:

1. Home 모듈 API 연동 및 리팩토링

  • HomeDatasource가 새로운 HomeDatasourceProtocol을 구현하고, 추천 카테고리 의류 조회, 오늘의 기온 전송, 오늘의 코디 생성, 룩북 목록 조회를 위해 실제 백엔드 API와 연결됩니다.
    이를 통해 기존의 목(Mock) 데이터 로직을 대체했습니다.

2. LookBook 모듈 리팩토링 및 타입 표준화

  • LookBookDIContainer가 리팩토링되어 LookBookAPIService를 데이터 소스에 주입하도록 변경되었습니다.
  • 모든 관련 뷰 및 뷰모델 팩토리 메서드에서 ID 타입을 Int 대신 Int64로 통일했습니다. 이는 API 데이터 타입과의 일관성을 보장하고, 향후 백엔드 연동을 대비하기 위한 변경입니다.

3. 모듈 전반의 의존성 주입 개선

  • Notification 및 Search DI 컨테이너가 각각의 API 서비스를 데이터 소스에 주입하도록 수정되어, 테스트 용이성과 모듈화를 향상시켰습니다.
  • Search DI 컨테이너에는 최근 검색 결과를 위한 새로운 팩토리 메서드도 추가되었습니다.

4. 로컬라이제이션 및 사용자 피드백 개선

  • UI 명확성과 사용자 피드백 향상을 위해 TextLiteral에 새로운 문자열 리터럴이 추가되었습니다. 여기에는 전체 보기, 최근 검색어, 코디 등록/삭제 결과 메시지가 포함됩니다.

5. 기타 개선 사항 및 디버그 유틸리티

  • 개발 편의를 위해 AuthAPIService에 현재 액세스 토큰을 출력하는 디버그 로그가 추가되었습니다.
  • ClothAPIService에서 프리사인드 URL 업로드 엔드포인트가 올바른 operation을 사용하도록 수정되었습니다.

📸 스크린샷 / 동영상

구현한 화면의 크기를 img width="250"로 설정해서 첨부해주세요!

🔍 리뷰어에게 (선택)

코드 리뷰 시 특별히 확인했으면 하는 부분이나, 의견을 묻고 싶은 내용을 적어주세요!

  • 룩북의 경우, 이전 코디로 불러오는 플로우 제외하고 모두 api 연결을 완료했습니다.
  • 홈의 경우, 룩북에 추가 바텀시트 부분은 api 연결 완료 했고, 나머지는 아직 카테고리별 계절에 맞는 옷 조회 api 조율이 아직 되지 않아 진행이 안되는 상태입니다.
  • 알림의 경우, 모든 api 적용을 했고, 알림 조회의 redirectType 수정하신다 했는데 아직 안올라온거 같아서 일단 보류했습니다.
  • 검색의 경우, 검색 탭의 기록 추천 api 적용을 했습니다.

우선 사용해야 하는 모든 api 에 대해 sevice, datasource, repository, repositoryImpl, usecase까지는 모두 작성 완료했고 view와 viewModel에 적용만 남은 상태입니다.

@Funital Funital requested review from Hrepay and taebin2 February 3, 2026 03:54
@Funital Funital self-assigned this Feb 3, 2026
@Funital Funital added the 📃 Feat 사용자를 위한 새로운 기능 추가 또는 개선 label Feb 3, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @Funital, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 앱의 핵심 기능인 홈, 룩북, 알림, 검색 모듈에 대한 API 연동을 광범위하게 구현하고, 데이터 모델을 표준화하며, 의존성 주입 구조를 개선하는 데 중점을 둡니다. 이를 통해 실제 백엔드 서비스와의 통합을 강화하고, 사용자 경험을 향상시키기 위한 기반을 마련합니다. 또한, 코드의 유지보수성과 확장성을 높이는 리팩토링 작업도 포함되어 있습니다.

Highlights

  • Home 모듈 API 연동 및 리팩토링: HomeDatasource가 HomeAPIServiceProtocol을 구현하고, 추천 카테고리 의류 조회, 오늘의 기온 전송, 오늘의 코디 생성, 룩북 목록 조회 등 실제 백엔드 API와 연결되었습니다. 기존 목(Mock) 데이터 로직이 대체되었습니다.
  • LookBook 모듈 리팩토링 및 타입 표준화: LookBookDIContainer가 리팩토링되어 LookBookAPIService를 데이터 소스에 주입하도록 변경되었습니다. 또한, LookBook 관련 뷰 및 뷰모델 팩토리 메서드에서 ID 타입이 Int에서 Int64로 통일되어 API 데이터 타입과의 일관성을 확보했습니다.
  • 모듈 전반의 의존성 주입 개선: Notification 및 Search DI 컨테이너가 각각의 API 서비스를 데이터 소스에 주입하도록 수정되어 테스트 용이성과 모듈화가 향상되었습니다. Search DI 컨테이너에는 최근 검색 결과를 위한 새로운 팩토리 메서드가 추가되었습니다.
  • 로컬라이제이션 및 사용자 피드백 개선: UI 명확성과 사용자 피드백 향상을 위해 TextLiteral에 '전체보기', '최근 검색어', '코디 등록/삭제 결과 메시지' 등 새로운 문자열 리터럴이 추가되었습니다.
  • 기타 개선 사항 및 디버그 유틸리티: 개발 편의를 위해 AuthAPIService에 현재 액세스 토큰을 출력하는 디버그 로그가 추가되었으며, ClothAPIService에서 프리사인드 URL 업로드 엔드포인트가 올바른 operation을 사용하도록 수정되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • Codive/Core/Resources/TextLiteral.swift
    • 검색 관련 문자열 리터럴 '전체삭제' 및 '전체보기' 추가
    • 최근 검색 결과 제목 '최근 검색어' 추가
    • 코디 등록 성공 및 삭제 실패 알림 메시지 추가
  • Codive/DIContainer/HomeDIContainer.swift
    • HomeAPIService를 HomeDatasource에 주입하도록 DI 컨테이너 수정
  • Codive/DIContainer/LookBookDIContainer.swift
    • LookBookAPIService를 LookBookDataSource에 주입하도록 DI 컨테이너 수정
    • SpecificLookBook, AddCodi, AddBeforeCodi, CodiDetail, EditCodi 관련 팩토리 메서드의 ID 타입을 Int에서 Int64로 통일
    • AddCodiDetailViewModel 및 View에서 lookbookId 파라미터 제거
    • AddCodiViewModel에 codiUseCase 주입
  • Codive/DIContainer/NotificationDIContainer.swift
    • NotificationAPIService를 NotificationDataSource에 주입하도록 DI 컨테이너 수정
    • TopNavigationNotificaionUsecase 추가
  • Codive/DIContainer/SearchDIContainer.swift
    • SearchAPIService를 SearchDataSource에 주입하도록 DI 컨테이너 수정
    • makeSearchUseCase()를 사용하여 SearchViewModel 및 SearchResultViewModel 초기화 로직 개선
    • 최근 검색 결과를 위한 makeRecentlySearchResultView 및 makeRecentlySearchResultViewModel 팩토리 메서드 추가
  • Codive/Features/Auth/Data/AuthAPIService.swift
    • 디버그 모드에서 현재 액세스 토큰을 출력하는 로그 추가
  • Codive/Features/Closet/Data/ClothAPIService.swift
    • 프리사인드 URL 업로드 엔드포인트를 Cloth_getClothUploadPresignedUrl에서 ClothAi_getClothUploadPresignedUrl로 수정
  • Codive/Features/Closet/Presentation/View/main/MyLookbookSectionView.swift
    • AddLookbookButton 클로저 내 빈 줄 추가 (기능 변경 없음)
  • Codive/Features/Home/Data/DTOs/HomeCategoryDTO.swift
    • HomeCategoryResponseDTO 및 HomeCategoryResponseItem 정의 (추천 카테고리 의류 조회용)
  • Codive/Features/Home/Data/DTOs/HomeCoordinateDTO.swift
    • CreateTodayCoordinateRequestDTO 및 CreateTodayCoordinateResponseDTO 정의 (오늘의 코디 생성용)
  • Codive/Features/Home/Data/DTOs/HomeDTO.swift
    • PostTodayTemperatureAPIRequestDTO 정의 (오늘의 기온 전송용)
  • Codive/Features/Home/Data/DataSources/HomeDatasource.swift
    • HomeDatasourceProtocol 정의 및 HomeDatasource가 이를 구현하도록 변경
    • 목(Mock) 데이터 대신 실제 HomeAPIService를 사용하여 API 호출 로직으로 전환 (추천 카테고리 의류, 오늘의 기온, 오늘의 코디 생성, 오늘의 코디 옷 정보, 룩북 목록 조회)
    • 더미 DraggableImageEntity 초기화 코드 주석 처리
  • Codive/Features/Home/Data/Repositories/HomeRepositoryImpl.swift
    • HomeDatasourceProtocol에 맞춰 API 호출 메서드 추가 및 기존 목(Mock) 데이터 관련 메서드 제거
    • DTO를 Entity로 매핑하는 로직 추가
  • Codive/Features/Home/Data/Services/HomeAPIService.swift
    • HomeAPIServiceProtocol 정의 및 HomeAPIService 구현 (홈 관련 API 호출 로직 포함)
  • Codive/Features/Home/Data/Services/LocationService.swift
    • 파일 이름 변경: Codive/Features/Home/Data/DataSources/LocationService.swift -> Codive/Features/Home/Data/Services/LocationService.swift
  • Codive/Features/Home/Domain/Entities/HomeCategoryEntity.swift
    • CategoryEntity 및 HomeClothEntity 정의
  • Codive/Features/Home/Domain/Entities/HomeCodiEntity.swift
    • TodayCoordinateEntity, CodiItemEntity, TodayDailyCodi, CodiPayload, CodiCoordinateRequestDTO, CodiCoordinatePayloadDTO, DraggableImageProtocol, DraggableImageEntity 정의
  • Codive/Features/Home/Domain/Entities/HomeEntity.swift
    • 이동된 엔티티 정의 (CategoryEntity, HomeClothEntity, DraggableImageEntity, CodiItemEntity, ClothListRequestDTO, ClothListResponseDTO, CodiCoordinateRequestDTO, CodiCoordinatePayloadDTO, CodiPayload) 제거
    • LookBookBottomSheetEntity의 lookbookId 및 count 타입을 Int64로 변경
  • Codive/Features/Home/Domain/Protocols/HomeRepository.swift
    • HomeRepository 프로토콜에 새로운 API 호출 메서드 추가 및 기존 목(Mock) 데이터 관련 메서드 제거
  • Codive/Features/Home/Domain/UseCases/AddToLookBookUseCase.swift
    • 룩북 목록 조회 메서드를 fetchLookBookList로 변경하고 페이지네이션 및 정렬 파라미터 추가
  • Codive/Features/Home/Domain/UseCases/CategoryUseCase.swift
    • loadClothItems 메서드를 API 기반으로 변경하고 categoryId를 Int64, season을 Set 타입으로 변경
  • Codive/Features/Home/Domain/UseCases/CodiBoardUseCase.swift
    • saveCodiItems 메서드에서 DraggableImageEntity의 rotationAngle 대신 rotation 사용
  • Codive/Features/Home/Domain/UseCases/FetchWeatherUseCase.swift
    • postTodayTemp 메서드 추가
  • Codive/Features/Home/Domain/UseCases/TodayCodiUseCase.swift
    • createTodayCoordinate 및 fetchTodayCoordinateClothes 메서드 추가
  • Codive/Features/Home/Presentation/Component/CodiClothView.swift
    • 목(Mock) 데이터 및 로컬 에셋 관련 주석 제거
    • 캐러셀의 간격, 활성/비활성 스케일 조정
    • CodiClothView의 초기 currentIndex 로직 변경
    • CodiClothView에 contentShape(Rectangle()) 및 background(Color.white) 추가
  • Codive/Features/Home/Presentation/Component/DraggableImageView.swift
    • 기존 DraggableImageViewModelProtocol 및 DraggableImageView를 제거하고 ZoomRotateDragView 및 Kingfisher를 사용하는 새로운 DraggableImageView로 대체
  • Codive/Features/Home/Presentation/Component/ZoomRotateDragView.swift
    • Zoom, Rotate, Drag 제스처를 처리하는 새로운 SwiftUI 뷰 추가
  • Codive/Features/Home/Presentation/View/CodiBoardView.swift
    • DraggableImageContainerView 관련 코드 주석 처리 (리팩토링 예정)
  • Codive/Features/Home/Presentation/View/HomeHasCodiView.swift
    • 선택된 아이템 ID 비교 로직을 Int64 타입에 맞게 수정
  • Codive/Features/Home/Presentation/View/HomeNoCodiView.swift
    • 카테고리 드래그 앤 드롭을 위한 draggingItem 상태 추가 및 관련 로직 구현
    • codiClothList를 ScrollView로 감싸고 onDrag/onDrop 제스처 추가
    • 하단 버튼 너비 계산 로직 수정
    • CategoryDropDelegate 구조체 추가
  • Codive/Features/Home/Presentation/View/HomeView.swift
    • loadActiveCategoriesWithAPI() 호출 주석 처리
  • Codive/Features/Home/Presentation/ViewModel/CodiBoardViewModel.swift
    • DraggableImageViewModelProtocol 채택 제거
    • handleConfirmCodi 로직 주석 처리 (리팩토링 예정)
    • 이미지 회전 각도 속성을 rotationAngle에서 rotation으로 변경
  • Codive/Features/Home/Presentation/ViewModel/HomeViewModel.swift
    • hasCodi 초기값을 true로 변경
    • loadWeather 메서드에서 postTodayTemp API 호출 추가
    • loadRecommendCategoryClothList 메서드를 API 기반으로 변경하고 DTO 매핑 로직 추가
    • handlePopupRecord 메서드에서 코디 이미지 캡처, Base64 인코딩, CreateTodayCoordinateRequestDTO 생성 및 API 호출 로직 추가
    • addLookbook 메서드에서 API를 통해 룩북 목록을 가져오고 LookBookBottomSheetEntity로 매핑
    • moveCategory 메서드 및 UIImage Base64 인코딩 확장 추가
  • Codive/Features/LookBook/Data/DTOs/CoordinateDTO.swift
    • 코디 미리보기, 상세, 수동 생성, 편집, 페이로드, 자동 일일 생성, 오늘의 코디 옷 정보 관련 DTO 정의
  • Codive/Features/LookBook/Data/DTOs/LookBookCoordinateDTO.swift
    • 룩북 코디 목록 및 과거 일일 코디 관련 DTO 정의
  • Codive/Features/LookBook/Data/DTOs/LookBookDTO.swift
    • 룩북 목록, 생성, 업데이트 관련 DTO 정의
  • Codive/Features/LookBook/Data/DataSources/LookBookDataSource.swift
    • LookBookAPIServiceProtocol을 사용하도록 리팩토링하고 모든 목(Mock) 데이터 제거
    • 룩북 및 코디 관리 관련 새로운 API 메서드 구현 (목록 조회, 생성, 삭제, 업데이트, 좋아요, 이미지 업로드)
  • Codive/Features/LookBook/Data/Repositories/LookBookRepositoryImpl.swift
    • LookBookDataSource의 새로운 API 메서드에 맞춰 리팩토링하고 DTO를 Entity로 매핑하는 로직 추가
  • Codive/Features/LookBook/Data/Services/LookBookAPIService.swift
    • LookBookAPIServiceProtocol 정의 및 LookBookAPIService 구현 (룩북 및 코디 관련 API 호출 로직 포함)
  • Codive/Features/LookBook/Data/Services/LookBookAPIServiceProtocol.swift
    • LookBookAPIService의 프로토콜 정의
  • Codive/Features/LookBook/Domain/Entities/LookBookEntity.swift
    • LookBookEntity, SpecificLookBookCodiEntity, BeforeCoordinateDailyEntity의 ID 타입을 Int64로 변경
    • CreateLookBookEntity, DeleteLookBookEntity, CodiLikeEntity, DeleteCodiEntity, EditLookBookEntity 제거
    • CoordinatePreviewEntity, CoordinateDetailEntity, TodayCoordinateClothEntity, ManualCoordinateEntity, AutoDailyCoordinateEntity 추가
    • SelectedCodi 구조체 업데이트 (coordinateId를 Int64로, imageUrl 사용, payloads 추가)
    • CodiTransferData 및 CodiEditData 구조체 추가
  • Codive/Features/LookBook/Domain/Protocols/LookBookRepository.swift
    • LookBookRepository 프로토콜에 새로운 API 메서드 추가 및 기존 목(Mock) 데이터 관련 메서드 제거
  • Codive/Features/LookBook/Domain/UseCases/BeforeCodiUseCase.swift
    • fetchBeforeCoordinateDailyList 메서드를 fetchPastCoordinates로 변경하고 페이지네이션 파라미터 추가
  • Codive/Features/LookBook/Domain/UseCases/CodiUseCase.swift
    • fetchCoordinateDetail, fetchTodayCoordinateClothes, createManualCoordinate, patchUpdateCoordinates, createAutoDailyCoordinate 메서드 추가
    • fetchCoordinatePreview 메서드의 coordinateId 타입을 Int64로 변경
  • Codive/Features/LookBook/Domain/UseCases/LookBookMainUseCase.swift
    • fetchLookBookList 및 createLookBook 메서드를 API 기반으로 변경하고 요청 DTO 및 페이지네이션 파라미터 추가
    • deleteLookBooks 메서드를 deleteLookBook으로 변경 (단일 ID 처리)
  • Codive/Features/LookBook/Domain/UseCases/ProductUseCase.swift
    • fetchProductList 메서드를 execute로 변경하고, 옷 목록 조회 및 JPG 데이터 업로드 기능을 처리하도록 오버로드
  • Codive/Features/LookBook/Domain/UseCases/SpecificLookBookUseCase.swift
    • fetchCodisForLookBook 메서드를 fetchLookBookCoordinateList로 변경하고 페이지네이션 파라미터 추가
    • toggleLike 메서드를 toggleCoordinateLike로 변경
    • deleteCodis 메서드를 deleteCoordinate로 변경
    • editLookBookName 메서드를 updateLookBook으로 변경
  • Codive/Features/LookBook/Presentation/Component/LookBookDialog.swift
    • 프리뷰 코드 제거
  • Codive/Features/LookBook/Presentation/View/AddBeforeCodiView.swift
    • lookbook.id를 Int(lookbook.id)로 캐스팅하여 toggleSelection 호출
  • Codive/Features/LookBook/Presentation/View/AddCodiDetailView.swift
    • isExpanded 상태 및 codiBoardView 계산 속성 추가
    • CustomNavigationBar의 완료 버튼 액션에 이미지 캡처 및 완료 처리 로직 추가
    • 기존 코디 보드 ZStack을 codiBoardView로 대체
    • 하단 시트(bottomSheet)를 확장/축소 제스처를 포함하도록 리팩토링
  • Codive/Features/LookBook/Presentation/View/AddCodiView.swift
    • Kingfisher 임포트 추가
    • capturedImage 및 capturedImageBase64 속성 추가
    • codiPreviewArea를 capturedImage 처리 및 KFImage 사용하도록 리팩토링
    • handleEditCodiTap 메서드 추가 (addCodiDetail로 이동)
  • Codive/Features/LookBook/Presentation/View/CodiDetailView.swift
    • onAppear 시 viewModel.fetchCoordinateDetail() 호출 추가
    • codiDisplayArea를 GeometryReader 및 tagOverlayLayer를 사용하도록 리팩토링
    • selectedClothInfoSection 제거
    • clothItemCell을 KFImage를 사용하고 선택 애니메이션을 포함하도록 리팩토링
  • Codive/Features/LookBook/Presentation/View/EditCodiView.swift
    • navigationBar를 바인딩 가능한 title 및 편집 모드 관련 파라미터를 사용하도록 리팩토링
    • imagePreviewArea를 AsyncImage에 ProgressView를 포함하고 handleOverlayTap을 추가하도록 리팩토링
  • Codive/Features/LookBook/Presentation/View/LookBookView.swift
    • 삭제 버튼 활성화 조건을 selectedLookBookId가 nil이 아닌 경우로 변경
    • toggleSelection 및 confirmDelete 로직을 단일 선택 ID (Int64) 기반으로 변경
    • handleAddLookBook 및 navigateToSpecificLookBook 로직을 API 기반으로 변경
  • Codive/Features/LookBook/Presentation/ViewModel/AddBeforeCodiViewModel.swift
    • fetchBeforeCoordinateDailyList 메서드를 API 기반으로 변경하고 페이지네이션 파라미터 추가
    • toggleSelection 메서드의 ID 타입을 Int로 변경
  • Codive/Features/LookBook/Presentation/ViewModel/AddCodiDetailViewModel.swift
    • DraggableImageViewModelProtocol 채택 제거
    • Combine 프레임워크 사용 및 codiDataUpdated PassthroughSubject 추가
    • capturedImageString 속성 추가
    • codiPayloads 계산 로직에서 좌표 및 각도 정규화 추가
    • init 메서드에서 데이터 구독 설정 및 옷 아이템 로드
    • toggleProductSelection 로직을 images 배열 직접 조작으로 변경
    • captureBoard 메서드 추가 (ImageRenderer 및 productUseCase.execute(jpgData:) 사용)
    • setupEditDataSubscription 및 restoreCodiData 메서드 추가
    • handleComplete 메서드에서 CodiTransferData를 codiDataUpdated를 통해 전송
  • Codive/Features/LookBook/Presentation/ViewModel/AddCodiViewModel.swift
    • Combine 프레임워크 사용
    • capturedImage, capturedImageBase64, receivedPayloads 속성 추가
    • codiUseCase 주입 및 coordinateId 타입을 Int64로 변경
    • editCodiRequested CurrentValueSubject 추가
    • isButtonEnabled 로직 업데이트
    • setupDataSubscription 메서드 추가
    • handleCompleteTap 로직을 CreateManualCoordinateAPIRequestDTO를 사용한 API 호출로 변경
    • handleEditCodiTap 메서드 추가 (CodiEditData를 editCodiRequested를 통해 전송 및 화면 이동)
  • Codive/Features/LookBook/Presentation/ViewModel/CodiDetailViewModel.swift
    • codiId 및 lookbookId를 coordinateId (Int64)로 변경
    • coordinateDetails 및 selectedDetail 속성 추가
    • clothItems를 coordinateDetails에서 매핑하도록 변경
    • fetchCoordinateDetail 메서드 추가
    • selectCloth 로직을 선택 토글 방식으로 변경
    • navigateToEditCodi 로직을 SelectedCodi에 payloads를 포함하도록 변경
    • deleteCodi 로직을 specificLookBookUseCase.deleteCoordinate 호출로 변경하고 에러 메시지 업데이트
  • Codive/Features/LookBook/Presentation/ViewModel/EditCodiViewModel.swift
    • Combine 프레임워크 사용
    • isNavEditingMode, isLayoutChanged, payloads 속성 추가
    • codiUseCase 주입 및 coordinateId (옵셔널 Int64)로 변경
    • hasChanges 계산 속성에 isLayoutChanged 포함
    • init 메서드에서 payloads 처리 및 데이터 구독 설정
    • setupCodiDataSubscription 메서드 추가
    • handleCompleteTap 로직을 EditCoordinateRequestDTO를 사용한 API 호출로 변경
    • handleOverlayTap 메서드 추가 (CodiEditData를 AddCodiViewModel.editCodiRequested를 통해 전송 및 화면 이동)
    • startNavEditing 및 finishNavEditing 메서드 추가
  • Codive/Features/LookBook/Presentation/ViewModel/SpecificLookBookViewModel.swift
    • lookbookId 타입을 Int64로 변경하고 lookbookTitle을 name으로 변경
    • likedCodiIds를 likedCodiId (단일 Int64)로 변경
    • fetchCodis 메서드를 API 기반으로 변경하고 페이지네이션 파라미터 추가
    • toggleLike 로직을 API 호출 및 likedCodiId 관리로 변경
    • toggleSelection 및 toggleEditingMode 로직을 단일 선택 ID (Int64) 기반으로 변경
    • handleCompleteAction 로직을 selectedCodiId 확인으로 변경
    • confirmDelete 로직을 specificLookBookUseCase.deleteCoordinate 호출로 변경
    • 룩북 이름 수정 관련 로직을 name 속성 및 UpdateLookBookAPIRequestDTO를 사용하도록 변경
    • navigateToCodiDetail 메서드의 codiId 파라미터 타입을 Int로 변경
  • Codive/Features/Main/View/MainTabView.swift
    • MainTabViewModel 초기화 시 notificationUsecase 주입
    • TopNavigationBar에 hasUnreadNotification 바인딩
    • onAppear 시 viewModel.loadNotificationExist() 호출 추가
    • navigationRouter.view(for:)에 .recentlySearchResult 케이스 추가
  • Codive/Features/Main/View/TopNavigationBar.swift
    • hasUnreadNotification 속성 추가 및 알림 아이콘 이미지 변경 로직에 반영
  • Codive/Features/Main/ViewModel/MainTabViewModel.swift
    • hasUnreadNotification 속성 추가
    • notificationUsecase 주입
    • loadNotificationExist 메서드 추가 (읽지 않은 알림 존재 여부 확인)
  • Codive/Features/Notification/Data/DTOs/NotificationDTO.swift
    • 알림 목록, 알림 존재 여부, 신고 접수 관련 DTO 정의
  • Codive/Features/Notification/Data/DataSources/NotificationDataSource.swift
    • NotificationAPIServiceProtocol을 사용하도록 리팩토링하고 모든 목(Mock) 데이터 제거
    • 알림 읽음 처리, 전체 읽음 처리, 목록 조회, 알림 존재 여부, 신고 접수 관련 새로운 API 메서드 구현
  • Codive/Features/Notification/Data/Repositories/NotificationRepositoryImpl.swift
    • NotificationDataSource의 새로운 API 메서드에 맞춰 리팩토링하고 DTO를 Entity로 매핑하는 로직 추가
  • Codive/Features/Notification/Data/Services/NotificationAPIService.swift
    • NotificationAPIServiceProtocol 정의 및 NotificationAPIService 구현 (알림 관련 API 호출 로직 포함)
  • Codive/Features/Notification/Domain/Entities/NotificationEntity.swift
    • RedirectType 및 ReadStatus의 rawValue 업데이트
    • NotificationEntity의 notificationId 타입을 Int64로 변경
    • ReportType의 rawValue 업데이트
  • Codive/Features/Notification/Domain/Protocols/NotificationRepository.swift
    • NotificationRepository 프로토콜에 새로운 API 메서드 추가 및 기존 목(Mock) 데이터 관련 메서드 제거
  • Codive/Features/Notification/Domain/UseCases/NotificationUseCase.swift
    • patchEachNotification, patchAllNotification, fetchNotificationList, fetchReportReceived 메서드를 API 기반으로 변경
  • Codive/Features/Notification/Domain/UseCases/TopNavigationNotificaionUsecase.swift
    • 읽지 않은 알림 존재 여부를 확인하는 새로운 UseCase 추가
  • Codive/Features/Notification/Presentation/Component/NotificationRow.swift
    • 프리뷰 코드 제거
  • Codive/Features/Notification/Presentation/Component/ReportSubmissionGuide.swift
    • reportType 케이스를 .feed에서 .HISTORY로, .comment에서 .COMMENT로 변경
    • 프리뷰 코드 제거
  • Codive/Features/Notification/Presentation/ViewModel/NotificationViewModel.swift
    • loadData 메서드를 API 기반으로 변경하고 알림 목록 및 신고 상태를 가져오도록 수정
    • markAsRead 메서드를 API 기반으로 변경하고 notificationId 타입을 Int64로 변경
  • Codive/Features/Profile/MyProfile/Data/ProfileAPIService.swift
    • Member_updateProfile 요청에서 profileBackImageUrl 필드 주석 처리
    • 프리사인드 URL 요청 엔드포인트를 Cloth_getClothUploadPresignedUrl에서 ClothAi_getClothUploadPresignedUrl로 수정
  • Codive/Features/Search/Data/DTOs/SearchDTO.swift
    • 검색 추천, 유저 검색, 기록 검색 관련 DTO 정의
  • Codive/Features/Search/Data/DataSources/SearchDataSource.swift
    • SearchAPIServiceProtocol을 사용하도록 리팩토링하고 모든 목(Mock) 데이터 제거
    • 검색 추천, 유저 검색, 기록 검색, 검색 엔진 동기화/삭제 관련 새로운 API 메서드 구현
  • Codive/Features/Search/Data/Repositories/SearchRepositoryImpl.swift
    • SearchDataSource의 새로운 API 메서드에 맞춰 리팩토링하고 DTO를 Entity로 매핑하는 로직 추가
  • Codive/Features/Search/Data/Services/SearchAPIService.swift
    • SearchAPIServiceProtocol 정의 및 SearchAPIService 구현 (검색 관련 API 호출 로직 포함)
  • Codive/Features/Search/Domain/Entities/SearchEntity.swift
    • SearchRecommendationEntity, SearchMembersEntity, SearchHistoriesEntity 추가
  • Codive/Features/Search/Domain/Protocols/SearchRepository.swift
    • SearchRepository 프로토콜에 새로운 API 메서드 추가 및 기존 목(Mock) 데이터 관련 메서드 제거
  • Codive/Features/Search/Domain/UseCases/SearchUseCase.swift
    • 검색 추천, 유저 검색, 기록 검색, 검색 엔진 동기화/삭제 관련 새로운 API 메서드 추가
  • Codive/Features/Search/Presentation/Component/NewsCard.swift
    • subTitle 속성 추가 및 UI에 표시되도록 업데이트
  • Codive/Features/Search/Presentation/Component/RecentlySearchResultRow.swift
    • 해시태그 및 멤버 검색 결과를 표시하는 새로운 SwiftUI 뷰 추가
  • Codive/Features/Search/Presentation/View/RecentlySearchResultView.swift
    • 최근 검색 결과를 표시하고 삭제 기능을 제공하는 새로운 SwiftUI 뷰 추가
  • Codive/Features/Search/Presentation/View/SearchView.swift
    • '전체 삭제' 버튼을 '전체보기'로 변경하고 RecentlySearchResultView로 이동하도록 액션 수정
    • 최근 검색 태그 표시를 RecentlySearchResultRow를 사용하도록 변경
    • NewsCard에 subTitle 파라미터 추가
    • onAppear 시 viewModel.recentlySearchResultList() 및 viewModel.loadSearchRecommendation() 호출 추가
  • Codive/Features/Search/Presentation/ViewModel/RecentlySearchResultViewModel.swift
    • 최근 검색 아이템 및 삭제 액션을 관리하는 새로운 ViewModel 추가
  • Codive/Features/Search/Presentation/ViewModel/SearchViewModel.swift
    • recommendedNews 타입을 SearchRecommendationEntity 배열로 변경
    • loadData 메서드를 사용자 이름만 로드하도록 변경
    • recentlySearchResultList 및 loadSearchRecommendation 메서드 추가 (API 데이터 로드)
    • handleDeleteAll 메서드를 handleShowAll로 변경하고 RecentlySearchResultView로 이동하도록 수정
  • Codive/Resources/Icons.xcassets/Icon_folder/hashTag.imageset/Contents.json
    • 새로운 이미지 에셋 추가
  • Codive/Router/AppDestination.swift
    • .recentlySearchResult 케이스 추가
    • specificLookbook 케이스에 name 파라미터 추가
    • addCodiDetail 케이스에서 lookbookId 파라미터 제거
    • editCodi 케이스에서 lookbookId 파라미터 제거
    • codiDetail 케이스의 codiId 타입을 Int로 변경하고 lookbookId 파라미터 제거
    • isMainTabDestination에 .recentlySearchResult 포함
  • Codive/Router/ViewFactory/LookBookViewFactory.swift
    • makeSpecificLookBookView에 name 파라미터 전달
    • makeAddCodiDetailView에서 lookbookId 파라미터 제거
    • makeCodiDetailView의 coordinateId 타입을 Int64로 변경
    • makeEditCodiView에서 lookbookId 파라미터 제거
  • Codive/Router/ViewFactory/SearchViewFactory.swift
    • makeRecentlySearchResultView 팩토리 메서드 추가
  • Codive/Shared/DesignSystem/Navigation/CustomNavigationBar.swift
    • body를 ZStack으로 리팩토링하여 레이어링 개선
    • 편집 모드 TextField의 패딩 조정
    • 오른쪽 버튼 처리 로직 리팩토링
  • Project.swift
    • Kingfisher를 외부 의존성으로 추가
  • Tuist/Package.resolved
    • Alamofire 및 CodiveAPI의 리비전/버전 업데이트
    • Kingfisher 의존성 추가
  • Tuist/Package.swift
    • Kingfisher를 externalDependencies 및 dependencies에 추가
Activity
  • Home 모듈의 API 연동이 완료되어 추천 카테고리 의류 조회, 오늘의 기온 전송, 오늘의 코디 생성, 룩북 목록 조회가 가능합니다.
  • LookBook 모듈의 API 연동이 진행 중이며, 이전 코디 불러오기 플로우를 제외한 모든 API 연결이 완료되었습니다.
  • 알림 모듈의 모든 API 적용이 완료되었으나, 알림 조회 redirectType 수정은 보류되었습니다.
  • 검색 탭의 기록 추천 API 적용이 완료되었습니다.
  • 모든 API에 대해 Service, Datasource, Repository, RepositoryImpl, UseCase까지 작성 완료되었으며, View와 ViewModel에 적용만 남은 상태입니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


API 연결, 새 길을 열어, 데이터 흐름, 앱에 생명 불어넣네. 코드의 춤, 기능의 노래.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이번 PR은 목(Mock) 데이터를 실제 API로 전환하는 중요한 작업을 포함하고 있네요. DI 컨테이너 리팩토링, ID 타입 표준화, 새로운 DTO 추가 등 코드 베이스를 크게 개선하는 많은 노력이 엿보입니다. 전반적으로 훌륭한 작업이지만, 몇 가지 잠재적인 문제점과 개선 사항을 발견하여 리뷰 코멘트를 남겼습니다. 특히, 일부 기능이 주석 처리되어 동작하지 않는 부분과 하드코딩된 값, Swift 네이밍 컨벤션 위반 사항들을 확인해주시면 좋겠습니다.

@Funital Funital merged commit 1a2701c into develop Feb 3, 2026
@Funital Funital deleted the feat/#51 branch February 3, 2026 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📃 Feat 사용자를 위한 새로운 기능 추가 또는 개선

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] Home 코디꾸미기 수정 및 api 1차 연결하기

3 participants