Skip to content

Conversation

@Hrepay
Copy link
Collaborator

@Hrepay Hrepay commented Jan 18, 2026

🔗 연결된 이슈

Resolved #39

✨ 주요 작업사항

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

1. 인증 (Auth)

  • 카카오 로그인: OIDC 방식 적용 및 웹뷰 딥링크 처리를 통한 로그인 구현 완료
  • 자동 로그인: 토큰 유효성 검사 및 재발급(Reissue) 로직 구현, SplashViewModel을 통한 앱 진입 분기 처리
  • 약관 동의: 로그인 후 약관 동의 API 연결 및 화면 흐름 처리 (뒤로가기 방지 등)
  • 리팩토링: AuthAPIService의 리턴 타입을 async throws로 통일하고 불필요한 Result 타입 제거

2. 옷장 (Closet)

  • 옷 추가:
    • API 1, 2차 구현 및 스플래시 뷰 연결
    • Season 필드 타입 변경: 단일 값 -> 배열([Season])로 변경하여 다중 선택 지원 (최신 작업)
  • 옷 조회: 썸네일 목록(전체보기) 및 상세 조회 API 구현
  • 옷 수정/삭제: 편집, 삭제 API 연동 및 이미지 URL 누락 버그 수정
  • 리팩토링:
    • ClothDataSource 중복 코드 제거 및 mapToCloth 헬퍼 메서드 분리
    • 카테고리 로직(CategoryConstants)을 Repository 레이어로 이동하여 의존성 분리

3. 기록 (Record)

  • 기록 생성: 기록 생성 API 구현
  • 태그 통일: HistoryClothTagRecordClothTag로 통일하여 데이터 구조 단순화

4. 공통 및 유틸리티 (Common/Utils)

  • 네트워크: CodiveAPI 패키지 세팅 및 오류 수정, 최신 버전 업데이트
  • JSON 파싱: JSONDecoderFactory를 분리하여 날짜 파싱 등 디코더 설정 공통화 (중복 코드 제거)
  • 동시성 처리: NavigationRouter 등에서 MainActor.run 제거 및 Task.sleep 활용 등 Swift Concurrency 패턴 개선
  • 보안: 릴리즈 시 JWT 토큰 로그 출력 제거

🔍 상세 커밋 내역

  • 옷 추가 API 요청에 season 필드 배열로 변경
  • 자동 로그인 임시 해제 (테스트용)
  • 약관 동의 뷰 뒤로가기 버튼 제거
  • HistoryClothTag를 RecordClothTag로 통일
  • NavigationRouter DispatchQueue를 Task.sleep으로 변경
  • ViewModel 코드 정리 (@MainActor 활용)
  • ClothDataSource 리팩토링 (중복 제거)
  • 보안: JWT 토큰 콘솔 출력 제거
  • SplashViewModel 분리 및 TokenConfig 상수화
  • Auth API Result 타입을 async throws로 통일
  • JSONDecoder 공통 유틸로 분리
  • 옷 편집 이미지 url이 누락되던 버그 수정 완료
  • 옷 추가, 목록, 상세, 수정, 삭제 API 구현 및 연결
  • 카카오 로그인 및 자동 로그인 구현

🔍 리뷰어에게 (선택)

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

  • 계절 관련 API 수정이 필요합니다. 서버에서 작업이 끝나면 진행하겠습니다.
  • 그 외 기능들은 계속해서 연결해 나갈 예정입니다.
  • 직접 테스트해보면 좋겠습니다. 그래서 영상/사진 안넣었어요.
  • 노션 문서에서 시크릿키 꼭 갈아끼운다음에 테스트해주세요

- 카테고리 하드코딩으로 임시 구현 완료
- JSONDecoderFactory 생성하여 날짜 파싱 로직 공통화
- 4개 API Service에서 중복 제거
- AuthStatusResult enum 제거
- checkAuthStatus, reissueTokens 등 async throws로 변경
- SplashViewModel을 별도 파일로 분리
- TokenConfig enum 추가하여 expirationBuffer 상수화
- mapToCloth 헬퍼 메서드 추출
- CategoryConstants 로직을 Repository로 이동
- @mainactor 클래스 내 불필요한 MainActor.run 제거
- 에러 처리 TODO 주석 추가
@Hrepay Hrepay requested review from Funital and taebin2 January 18, 2026 07:38
@Hrepay Hrepay self-assigned this Jan 18, 2026
@Hrepay Hrepay added 📃 Feat 사용자를 위한 새로운 기능 추가 또는 개선 🪄 Refactor 사용자에게 보이는 동작 변경 없이 코드의 내부 구조를 개선하는 작업 labels Jan 18, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @Hrepay, 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

  • 인증 (Auth) API 연동 및 개선: 카카오 로그인에 OIDC 방식과 웹뷰 딥링크 처리를 적용하고, 자동 로그인 시 토큰 유효성 검사 및 재발급 로직을 구현했습니다. 앱 진입 시 SplashViewModel을 통해 인증 상태를 분기 처리하며, 로그인 후 약관 동의 API 연동 및 화면 흐름을 처리하도록 개선했습니다. AuthAPIService의 리턴 타입을 async throws로 통일하고 불필요한 Result 타입을 제거하여 코드 일관성을 높였습니다.
  • 옷장 (Closet) API 연동 및 리팩토링: 옷 추가, 조회 (썸네일 및 상세), 수정, 삭제 API를 연동했습니다. 특히 옷 추가 시 Season 필드를 단일 값에서 배열([Season])로 변경하여 다중 선택을 지원하도록 업데이트했습니다. ClothDataSource의 중복 코드를 제거하고 mapToCloth 헬퍼 메서드를 분리했으며, 카테고리 로직(CategoryConstants)을 Repository 레이어로 이동하여 의존성을 분리했습니다.
  • 기록 (Record) API 연동 및 데이터 구조 통일: 기록 생성 API를 구현하고, HistoryClothTagRecordClothTag로 통일하여 데이터 구조를 단순화했습니다.
  • 공통 및 유틸리티 개선: CodiveAPI 패키지 세팅 및 오류를 수정하고 최신 버전으로 업데이트했습니다. JSONDecoderFactory를 분리하여 날짜 파싱 등 디코더 설정을 공통화하여 중복 코드를 제거했습니다. NavigationRouter 등에서 MainActor.run을 제거하고 Task.sleep을 활용하는 등 Swift Concurrency 패턴을 개선했습니다. 또한, 릴리즈 시 JWT 토큰 로그 출력을 제거하여 보안을 강화했습니다.

🧠 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.

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

전반적으로 API 연동을 위한 대규모 리팩토링 및 기능 구현이 잘 이루어졌습니다. 특히 인증, 옷장, 기록 등 핵심 기능들의 API 연동과 OIDC를 통한 카카오 로그인 구현, async/throws를 활용한 비동기 코드 개선 등 많은 부분이 인상적입니다. 몇 가지 위험성이 있는 부분(강제 언래핑, 에러 처리)과 보안 및 성능 개선점에 대한 피드백을 추가했습니다. 이 부분들을 보완하면 더욱 안정적인 코드가 될 것 같습니다. 수고 많으셨습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📃 Feat 사용자를 위한 새로운 기능 추가 또는 개선 🪄 Refactor 사용자에게 보이는 동작 변경 없이 코드의 내부 구조를 개선하는 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 네트워크 연결

2 participants