Skip to content

Release/1.1.0#111

Merged
tristanjung1006 merged 29 commits intomasterfrom
release/1.1.0
Apr 8, 2025
Merged

Release/1.1.0#111
tristanjung1006 merged 29 commits intomasterfrom
release/1.1.0

Conversation

@tristanjung1006
Copy link
Contributor

@tristanjung1006 tristanjung1006 commented Apr 7, 2025

📝작업 내용

v1.1.0 출시 PR입니다.

💬리뷰 요구사항(선택)

CI/CD를 구축하고 나서 첫 PR입니다.

  • 이제부터 PR을 생성하기만 해도 github action으로 firebase에 QA 테스터로 지정된 사람들에게 테스터용 apk 파일이 추출되고 메일로 자동 전송됩니다.
  • 또한, 브랜치명으로부터 버전 이름을 자동으로 추출해서 release tag까지 자동 생성해줍니다.
  • 그리고 QA팀의 승인이 끝나고 해당 PR을 master 브랜치에 merge하면 다시 한 번 최종 완성본을 확인 절차상 apk 파일을 메일로 보내게 되고 플레이스토어 등록만 하면 됩니다.
  • 플레이스토어 프로덕션 트랙 자동 배포는 테스트를 거친 후에 조만간 적용할 예정입니다.

Summary by CodeRabbit

  • New Features

    • 어제 카드 응답 데이터를 위한 새로운 데이터 모델과 API가 추가되었습니다.
    • 어제 카드 관련 질문, 옵션 및 응답 처리를 위한 UI 요소와 레이아웃이 도입되었습니다.
    • 어제 카드 데이터를 가져오는 새로운 기능이 추가되었습니다.
    • 새로운 스타일과 레이아웃을 가진 UI 구성 요소가 추가되었습니다.
    • UI 메시지가 개선되어 사용자에게 더 구체적인 정보를 제공합니다.
  • Refactor

    • 기존 사용자 데이터 관리 기능 및 관련 컴포넌트가 제거되고, ViewModel과 Repository 기능이 개선되었습니다.
  • Style

    • UI 메시지, 텍스트 스타일 및 레이아웃이 개선되어 사용자 경험이 향상되었습니다.
  • Chores

    • 빌드 설정, 버전 업데이트(1.0.10 → 1.1.0) 및 CI/CD 워크플로우가 수정되었습니다.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot reviewed 7 out of 27 changed files in this pull request and generated no comments.

Files not reviewed (20)
  • app/build.gradle.kts: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/data/UserDao.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/data/UserDatabase.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/data/UserEntity.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/data/home/dto/response/YesterdayCardResponse.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/data/home/service/HomeService.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/domain/home/repository/HomeRepository.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/model/YesterdayType.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeViewModel.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetAdapter.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetCardDetailAdapter.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SplashFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/record/friend/FriendCardDetailFragment.kt: Language not supported
  • app/src/main/java/com/toyou/toyouandroid/presentation/viewmodel/HomeViewModelFactory.kt: Language not supported
  • app/src/main/res/layout/fragment_home.xml: Language not supported

@coderabbitai
Copy link

coderabbitai bot commented Apr 7, 2025

Walkthrough

이번 pull request는 Gradle 빌드 파일의 서명 구성과 버전명이 업데이트되었으며, 기존의 사용자 데이터 관련 DAO, 데이터베이스, 엔티티가 제거되었습니다. 대신 "YesterdayCard" 관련 새 데이터 클래스, 상수, API 메서드 및 Repository가 추가되어 해당 기능에 대한 데이터 흐름이 도입되었습니다. 또한 ViewModel, Fragment, Adapter 등이 새 데이터 모델을 반영하도록 수정되었으며, 레이아웃 파일 및 스타일, 문자열, CI/CD 워크플로우도 업데이트되었습니다.

Changes

파일 경로 변경 요약
app/build.gradle.kts signingConfigs가 create("release")에서 getByName("debug")로 변경, versionName "1.0.10"에서 "1.1.0"으로 업데이트, 서명 관련 프로퍼티 추가
app/src/main/java/com/toyou/toyouandroid/data/{UserDao.kt, UserDatabase.kt, UserEntity.kt} 사용자 데이터 관리를 위한 DAO, 데이터베이스, 엔티티 삭제
app/src/main/java/com/toyou/toyouandroid/data/home/dto/response/YesterdayCardResponse.kt
app/src/main/java/com/toyou/toyouandroid/model/YesterdayType.kt
새 데이터 클래스(YesterdayCardResponse, YesterdayCard, YesterdayCardContent, YesterdayCardQuestion) 및 상수(Ytype1~Ytype4) 추가
app/src/main/java/com/toyou/toyouandroid/data/home/service/HomeService.kt
app/src/main/java/com/toyou/toyouandroid/domain/home/repository/HomeRepository.kt
HomeService에 새 API 메서드 getCardYesterday() 추가, Repository에 getYesterdayCard() 메서드 및 관련 import 추가
app/src/main/java/com/toyou/toyouandroid/presentation/{fragment/home/HomeFragment.kt, fragment/emotionstamp/HomeOptionFragment.kt, fragment/mypage/{MypageFragment.kt, ProfileFragment.kt}, fragment/onboarding/{SignupNicknameFragment.kt, SplashFragment.kt}} ViewModelFactory에 HomeRepository 주입, HomeFragment에서 DiaryCard 대신 YesterdayCard 사용, SplashFragment에서 DB 관련 코드 제거, 로그 태그 수정
app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/{HomeBottomSheetAdapter.kt, HomeBottomSheetCardDetailAdapter.kt} 어댑터의 파라미터 및 메서드 수정: DiaryCard → YesterdayCard, UI binding 로직 및 추가 스타일 처리 함수 도입
app/src/main/res/layout/{fragment_home.xml, fragment_notice.xml, item_home_bottom_sheet.xml, item_yesterday_option_three.xml, item_yesterday_option_two.xml, item_yesterday_qa.xml}
app/src/main/res/values/{font_styles.xml, strings.xml}
레이아웃 요소, 마진, 크기, 텍스트 내용(특히 친구 일기카드 미작성 메시지) 수정; 새 레이아웃 파일 및 폰트 스타일 추가; 버전 문자열 업데이트
.github/workflows/android_cd.yml 브랜치 트리거를 release/1.1.0으로 변경, 환경변수 LOCAL_PROPERTIES_CONTENTS 추가, checkout 및 local.properties 설정 개선, Firebase 배포 그룹 변경

Sequence Diagram(s)

sequenceDiagram
    participant UI as UI/Fragment
    participant VM as HomeViewModel
    participant Repo as HomeRepository
    participant Service as HomeService
    participant API as Server/API

    UI->>VM: getYesterdayCard() 호출
    VM->>Repo: getYesterdayCard() 호출
    Repo->>Service: getCardYesterday() 호출
    Service->>API: HTTP GET /diarycards/yesterday
    API-->>Service: BaseResponse<YesterdayCardResponse> 전달
    Service-->>Repo: 응답 전달
    Repo-->>VM: YesterdayCard 데이터 반환
    VM-->>UI: LiveData 업데이트 (yesterdayCards)
Loading

Possibly related PRs


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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: 1

🧹 Nitpick comments (13)
app/src/main/res/layout/item_yesterday_qa.xml (1)

1-42: 어제의 카드 Q&A 아이템 레이아웃 추가

질문과 답변을 보여주는 새로운 레이아웃 파일이 추가되었습니다. ConstraintLayout을 사용하여 효율적인 UI 구조를 구현했습니다. 질문(question)과 답변(answer) TextView가 잘 정의되어 있으며, 답변은 LinearLayout 컨테이너 내에 배치되어 있습니다.

레이아웃의 구조가 명확하고, 스타일링이 일관되게 적용되었습니다. 질문과 답변이 시각적으로 구분되며, 적절한 여백(padding, margin)이 설정되어 있습니다.

개선 제안: 접근성 고려

접근성 향상을 위해 TextViews에 contentDescription 속성을 추가하는 것을 고려해 보세요.

 <TextView
     android:id="@+id/question"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="요즘 어떻게 지내?"
     style="@style/gangwon8"
     android:textColor="@color/black"
+    android:contentDescription="질문"
     android:layout_marginTop="10dp"/>
     
 <TextView
     android:id="@+id/answer"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="그냥 저냥.. 일하고 사랑하고 짜증도 내고.."
     style="@style/gangwon8"
     android:textColor="@color/black"
+    android:contentDescription="답변"
     />
app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt (1)

78-78: HomeRepository 인스턴스 생성 방식 검토 필요.

HomeRepository 인스턴스가 파라미터 없이 직접 생성되고 있습니다. 이 접근 방식은 의존성 주입 패턴을 완전히 따르지 않아 단위 테스트가 어려울 수 있습니다.

의존성 주입 프레임워크(예: Dagger/Hilt)를 사용하거나, 팩토리 패턴을 통해 HomeRepository를 제공하는 것이 더 좋은 접근 방식일 수 있습니다.

app/src/main/res/layout/item_yesterday_option_three.xml (2)

13-13: 하드코딩된 텍스트 리소스 사용.

"요즘 어떻게 지내?"라는 텍스트가 하드코딩되어 있습니다. 다국어 지원과 유지보수를 위해 strings.xml 리소스 파일로 이동하는 것이 좋습니다.

-        android:text="요즘 어떻게 지내?"
+        android:text="@string/yesterday_question_sample"

28-42: 반복되는 TextView 속성들.

세 개의 TextView가 많은 속성을 공유하고 있습니다. 이를 스타일로 추출하여 코드 중복을 줄이는 것이 좋습니다.

styles.xml에 다음과 같은 스타일을 추가하고 각 TextView에 적용하는 것을 고려해보세요:

<style name="OptionTextView" parent="gangwon8">
    <item name="android:background">@drawable/search_container</item>
    <item name="android:gravity">center</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:ellipsize">none</item>
    <item name="android:singleLine">false</item>
    <item name="android:paddingVertical">8dp</item>
    <item name="android:maxLines">999</item>
</style>

그리고 각 TextView에서:

-            style="@style/gangwon8"
-            android:background="@drawable/search_container"
-            android:gravity="center"
-            android:textColor="@color/black"
-            android:ellipsize="none"
-            android:singleLine="false"
-            android:paddingVertical="8dp"
-            android:maxLines="999"
+            style="@style/OptionTextView"

Also applies to: 44-59, 61-76

app/src/main/res/layout/item_yesterday_option_two.xml (4)

13-13: 하드코딩된 텍스트 리소스 사용.

"요즘 어떻게 지내?"라는 텍스트가 하드코딩되어 있습니다. 다국어 지원과 유지보수를 위해 strings.xml 리소스 파일로 이동하는 것이 좋습니다.

-        android:text="요즘 어떻게 지내?"
+        android:text="@string/yesterday_question_sample"

54-54: android:layout_marginLeft 대신 android:layout_marginStart 사용 권장.

RTL(오른쪽에서 왼쪽) 언어 지원을 위해 marginLeft 대신 marginStart를 사용하는 것이 좋습니다.

-            android:layout_marginLeft="20dp"
+            android:layout_marginStart="20dp"

20-20: 일관성 없는 ID 네이밍.

item_yesterday_option_three.xml과 동일한 레이아웃 구조를 가지고 있지만, 여기서는 LinearLayout의 ID가 "choose_three_linear"로 되어 있습니다. 두 개의 옵션을 가진 레이아웃이므로 "choose_two_linear"로 변경하는 것이 더 일관성 있을 것입니다.

-        android:id="@+id/choose_three_linear"
+        android:id="@+id/choose_two_linear"

32-32: 일관성 없는 ID 네이밍 (TextView).

TextView의 ID도 동일한 문제가 있습니다. "choose_three_first_tv"와 "choose_three_second_tv"로 되어 있지만, 두 개의 옵션을 가진 레이아웃이므로 "choose_two_first_tv"와 "choose_two_second_tv"로 변경하는 것이 더 일관성 있을 것입니다.

-            android:id="@+id/choose_three_first_tv"
+            android:id="@+id/choose_two_first_tv"

-            android:id="@+id/choose_three_second_tv"
+            android:id="@+id/choose_two_second_tv"

Also applies to: 49-49

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt (1)

61-61: HomeRepository 인스턴스 생성 방식 검토 필요.

HomeRepository 인스턴스가 파라미터 없이 직접 생성되고 있습니다. 이 접근 방식은 의존성 주입 패턴을 완전히 따르지 않아 단위 테스트가 어려울 수 있습니다.

의존성 주입 프레임워크(예: Dagger/Hilt)를 사용하거나, 팩토리 패턴을 통해 HomeRepository를 제공하는 것이 더 좋은 접근 방식일 수 있습니다.

app/src/main/java/com/toyou/toyouandroid/presentation/viewmodel/HomeViewModelFactory.kt (1)

5-5: HomeViewModelFactory의 의존성 주입 업데이트가 적절합니다.

HomeViewModelHomeRepository를 주입하기 위한 팩토리 클래스 수정이 잘 구현되었습니다. 다만, HomeOptionViewModel과 같이 repository를 사용하지 않는 ViewModel도 있어 보이는데, 장기적으로는 모든 ViewModel 클래스가 일관된 의존성 패턴을 가지도록 리팩토링을 고려해 볼 수 있을 것 같습니다.

의존성 주입 패턴을 일관되게 유지하기 위해, 나중에는 HomeOptionViewModel에도 repository 매개변수를 추가하거나, 각 ViewModel에 맞는 별도의 Factory를 만드는 것을 고려해 보세요.

Also applies to: 12-13, 21-21

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetCardDetailAdapter.kt (3)

12-12: [사용되지 않는 import 가능성]
Ytype1 클래스가 코드 내에서 사용되지 않는다면 제거를 고려해 주세요. 불필요한 import는 코드를 복잡하게 만들 수 있습니다.


38-43: [getItemViewType 문자열 분기 사용]
질문 타입에 따른 뷰 타입 분기가 명확하나, 문자열 리터럴 대신 enum/상수화 등을 고려하면 유지보수에 유리할 수 있습니다.


159-165: [mapQuestionType 메서드 중복 가능성]
mapQuestionTypegetItemViewType과 유사한 로직을 공유하므로, 중복된 분기를 하나의 메서드 또는 enum으로 합쳐 관리해 볼 수 있습니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 125513e and b76d17b.

📒 Files selected for processing (27)
  • app/build.gradle.kts (1 hunks)
  • app/src/main/java/com/toyou/toyouandroid/data/UserDao.kt (0 hunks)
  • app/src/main/java/com/toyou/toyouandroid/data/UserDatabase.kt (0 hunks)
  • app/src/main/java/com/toyou/toyouandroid/data/UserEntity.kt (0 hunks)
  • app/src/main/java/com/toyou/toyouandroid/data/home/dto/response/YesterdayCardResponse.kt (1 hunks)
  • app/src/main/java/com/toyou/toyouandroid/data/home/service/HomeService.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/domain/home/repository/HomeRepository.kt (1 hunks)
  • app/src/main/java/com/toyou/toyouandroid/model/YesterdayType.kt (1 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeFragment.kt (6 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeViewModel.kt (3 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetAdapter.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetCardDetailAdapter.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt (2 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SplashFragment.kt (0 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/record/friend/FriendCardDetailFragment.kt (1 hunks)
  • app/src/main/java/com/toyou/toyouandroid/presentation/viewmodel/HomeViewModelFactory.kt (1 hunks)
  • app/src/main/res/layout/fragment_home.xml (1 hunks)
  • app/src/main/res/layout/fragment_notice.xml (2 hunks)
  • app/src/main/res/layout/item_home_bottom_sheet.xml (7 hunks)
  • app/src/main/res/layout/item_yesterday_option_three.xml (1 hunks)
  • app/src/main/res/layout/item_yesterday_option_two.xml (1 hunks)
  • app/src/main/res/layout/item_yesterday_qa.xml (1 hunks)
  • app/src/main/res/values/font_styles.xml (1 hunks)
  • app/src/main/res/values/strings.xml (1 hunks)
💤 Files with no reviewable changes (4)
  • app/src/main/java/com/toyou/toyouandroid/data/UserDao.kt
  • app/src/main/java/com/toyou/toyouandroid/data/UserDatabase.kt
  • app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SplashFragment.kt
  • app/src/main/java/com/toyou/toyouandroid/data/UserEntity.kt
🧰 Additional context used
🧬 Code Definitions (1)
app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeViewModel.kt (1)
app/src/main/java/com/toyou/toyouandroid/domain/home/repository/HomeRepository.kt (1)
  • getYesterdayCard (13-13)
🪛 detekt (1.23.7)
app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeViewModel.kt

[warning] 86-86: The caught exception is swallowed. The original exception could be lost.

(detekt.exceptions.SwallowedException)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Continuous Deployment
🔇 Additional comments (70)
app/src/main/java/com/toyou/toyouandroid/presentation/fragment/record/friend/FriendCardDetailFragment.kt (1)

82-82: 로깅 태그 수정이 적절합니다.

Timber 로깅 태그를 클래스 이름과 일치하도록 변경한 것은 좋은 실천입니다. 이렇게 하면 로그를 필터링하고 식별하기가 더 쉬워져 디버깅 경험이 향상됩니다.

app/src/main/res/values/font_styles.xml (1)

3-9: 새 스타일 gangwon8 추가 검토
새로운 스타일인 gangwon8가 문제없이 추가되었습니다. 폰트 스타일, 폰트 패밀리, 폰트 무게, 텍스트 크기가 기존 스타일과 일관되게 작성되어 있으며, 추가 후 UI에 제대로 적용될 것으로 예상됩니다.

app/src/main/res/values/strings.xml (1)

108-108: 앱 버전 문자열 업데이트 검토
mypage_version_name 문자열이 "1.0.10"에서 "1.1.0"으로 변경되어, 앱의 새로운 릴리스 버전을 올바르게 반영하고 있습니다.

app/src/main/java/com/toyou/toyouandroid/model/YesterdayType.kt (1)

1-6: 새 상수 파일 YesterdayType.kt 검토
해당 파일에서 네 개의 상수가 올바르게 선언되었습니다. 상수명과 값이 명확하며, 이후 "Yesterday Card" 관련 API 응답 처리에 문제없이 사용될 것으로 보입니다.

app/build.gradle.kts (1)

29-31: 버전 이름 업데이트 확인
defaultConfig 블록 내에서 versionName이 "1.1.0"으로 변경되어, 새로운 릴리스 버전이 올바르게 반영되었습니다. 다른 빌드 설정과도 일관되게 구성되어 있습니다.

app/src/main/res/layout/fragment_notice.xml (2)

57-59: 친구 요청 제목 텍스트 스타일 변경 검토
tv_title_friend_request의 스타일이 @style/sc_r15로 변경되었습니다. 이번 변경은 텍스트의 시각적 강조를 개선할 것으로 보이며, 기존 UI 디자인과 잘 어우러집니다.


92-98: 전체 알림 제목 텍스트 스타일 변경 검토
tv_title_entire_notice의 스타일도 @style/sc_r15로 변경되어, UI 전체의 디자인 일관성을 유지하는 데 기여하고 있습니다.

app/src/main/java/com/toyou/toyouandroid/data/home/service/HomeService.kt (2)

3-4: YesterdayCardResponse 모델 임포트 추가

새로운 데이터 모델 YesterdayCardResponse를 임포트하여 어제의 카드 기능을 위한 응답 타입을 정의했습니다. 기존 코드 구조와 일관성 있게 작성되었습니다.


17-19: 어제의 카드 API 엔드포인트 추가

어제 작성된 카드를 조회하는 새로운 API 엔드포인트를 추가했습니다. suspend 함수로 정의되어 코루틴과 함께 비동기적으로 사용할 수 있습니다. 기존 API 패턴과 일치하는 구현입니다.

app/src/main/res/layout/fragment_home.xml (1)

205-205: 사용자 메시지 업데이트

"아직 준비중인 기능이에요"에서 "아직 친구들이 일기카드를\n작성하지 않았어요"로 텍스트를 변경했습니다. 이는 어제의 카드 기능 추가와 일관성 있게 사용자에게 더 구체적인 메시지를 제공합니다. 개행 문자(\n)를 추가하여 가독성을 높였습니다.

app/src/main/java/com/toyou/toyouandroid/domain/home/repository/HomeRepository.kt (3)

3-3: YesterdayCardResponse 임포트 추가

새로운 어제의 카드 기능을 위한 응답 모델 임포트를 추가했습니다.


6-6: BaseResponse 임포트 추가

네트워크 응답 래퍼 클래스인 BaseResponse 임포트를 추가했습니다.


13-13: 어제의 카드 조회 메소드 추가

HomeService의 getCardYesterday() API를 호출하는 getYesterdayCard() 메소드를 추가했습니다. 기존 코드 스타일과 일관되게 작성되었으며, 구현이 간결합니다.

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/MypageFragment.kt (2)

24-24: HomeRepository 의존성 추가.

HomeViewModel에 HomeRepository를 주입하기 위한 import가 추가되었습니다. 이는 아키텍처 변경의 일부로 적절합니다.


82-82: HomeViewModelFactory 생성자 파라미터 업데이트.

HomeViewModelFactory 생성자에 homeRepository가 추가되었습니다. 이 변경은 AI 요약에서 언급된 데이터 모델과 API 변경에 맞춰 적절하게 수정되었습니다.

app/src/main/res/layout/item_yesterday_option_three.xml (1)

1-81: 새로운 레이아웃 파일이 잘 구성되었습니다.

"어제의 카드" 기능을 위한 세 가지 선택지를 표시하는 레이아웃이 잘 구현되었습니다. 레이아웃 구조와 스타일링이 일관되게 적용되었습니다.

app/src/main/res/layout/item_yesterday_option_two.xml (1)

1-65: 새로운 레이아웃 파일이 잘 구성되었습니다.

"어제의 카드" 기능을 위한 두 가지 선택지를 표시하는 레이아웃이 잘 구현되었습니다. 레이아웃 구조와 스타일링이 일관되게 적용되었습니다.

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/emotionstamp/HomeOptionFragment.kt (2)

22-22: HomeRepository 의존성 추가.

HomeViewModel에 HomeRepository를 주입하기 위한 import가 추가되었습니다. 이는 아키텍처 변경의 일부로 적절합니다.


66-67: HomeViewModelFactory 생성자 파라미터 업데이트.

HomeViewModelFactory 생성자에 homeRepository가 추가되었습니다. 이 변경은 AI 요약에서 언급된 데이터 모델과 API 변경에 맞춰 적절하게 수정되었습니다.

Also applies to: 73-74

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/mypage/ProfileFragment.kt (1)

23-23: HomeRepository 의존성 추가 구현이 적절합니다.

HomeRepository를 가져와 ViewModelFactory에 전달하는 방식이 일관적으로 구현되었습니다. 이는 다른 프래그먼트들과의 일관성을 유지하는 좋은 패턴입니다.

Also applies to: 67-67, 73-73

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/onboarding/SignupNicknameFragment.kt (1)

19-19: SignupNicknameFragment에 HomeRepository 주입이 적절하게 구현되었습니다.

회원가입 화면에서 HomeRepository를 사용하는 것이 처음에는 의문스러울 수 있지만, HomeViewModel이 여러 프래그먼트에서 공유되는 구조상 일관된 의존성 주입 패턴을 따르고 있어 적절합니다.

Also applies to: 51-51, 55-55

app/src/main/java/com/toyou/toyouandroid/data/home/dto/response/YesterdayCardResponse.kt (1)

1-29: YesterdayCard 관련 데이터 모델이 잘 구현되었습니다.

전날 카드 기능을 위한 데이터 클래스들이 명확하게 정의되어 있으며, JSON 직렬화를 위한 @SerializedName 어노테이션이 적절히 사용되었습니다. 데이터 구조가 계층적으로 잘 설계되어 있습니다.

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetAdapter.kt (8)

3-3: 패키지 및 리소스 임포트 변경

기존 임포트에 추가된 android.graphics.ColorR 리소스는 감정 상태에 따른 UI 색상 처리를 위해 추가되었습니다.

Also applies to: 8-8


10-10: 데이터 모델 변경

DiaryCard에서 YesterdayCard로 변경되었습니다. 이는 앱 전체의 데이터 모델 변경에 따른 적절한 수정입니다.


14-14: 어댑터 생성자 파라미터 타입 변경

MutableList<DiaryCard>에서 MutableList<YesterdayCard>로 변경되어 새로운 데이터 모델과 일관성을 유지합니다.


35-35: 바인딩 메소드 파라미터 타입 변경

bind 메소드의 파라미터 타입이 DiaryCard에서 YesterdayCard로 변경되었습니다.


38-38: 어댑터 데이터 설정 변경

HomeBottomSheetCardDetailAdapterYesterdayCard 아이템을 전달하도록 수정되었습니다.


43-43: 데이터 바인딩 및 클릭 이벤트 처리 수정

item을 바인딩하고 클릭 이벤트에서 cardId를 정수로 변환하여 전달하도록 수정되었습니다. 데이터 타입 변경에 맞게 적절히 수정되었습니다.

Also applies to: 48-49


51-56: UI 요소 텍스트 설정 추가

YesterdayCardcardContent 속성을 활용하여 UI 요소의 텍스트 값을 설정하는 코드가 추가되었습니다. 이는 사용자에게 더 자세한 정보를 제공하기 위한 적절한 개선입니다.


57-82:

Details

✅ Verification successful

감정 상태에 따른 UI 처리 추가

감정 상태(emotion)에 따라 이미지 리소스와 배경색을 다르게 설정하는 코드가 추가되었습니다. 사용자 경험을 향상시키는 좋은 개선점입니다.

주석에 "임의로 감정이 null일때..일수는 없지만"이라고 명시되어 있는데, 실제로 null 값이 전달되지 않도록 상위 로직에서 확인하는 것이 좋습니다.


🏁 Script executed:

#!/bin/bash
# YesterdayCard에서 emotion이 null인 경우를 처리하는 코드가 있는지 확인
rg -A 2 $'emotion[^a-zA-Z0-9].*null' --glob "*.kt"

Length of output: 1931


업데이트된 감정 처리 로직 확인 – 상위 로직의 null 처리 검증

  • 현재 HomeBottomSheetAdapter에서는 감정 상태에 따라 이미지와 배경색을 다르게 적용하며, else 분기를 통해 예상치 못한 입력(예: null)을 안전하게 처리하고 있습니다.
  • 검증 결과, 상위 로직(HomeFragment, NoticeFragment, HomeOptionFragment 등)에서 이미 감정 값이 null이 전달되지 않도록 확인하는 코드가 구현되어 있음을 확인했습니다.
  • 다만, null 값이 전혀 발생하지 않도록 상위 로직에서의 검증이 확실하게 이루어지고 있는지 다시 한 번 확인해주시기 바랍니다.
app/src/main/res/layout/item_home_bottom_sheet.xml (7)

10-10: 데이터 바인딩 변수 타입 변경

item_home_bottom_sheet 변수의 타입이 DiaryCard에서 YesterdayCard로 변경되었습니다. 이는 앱 전체의 데이터 모델 변경에 따른 필요한 수정입니다.


22-22: 카드뷰 레이아웃 높이 변경

CardView의 높이가 match_parent에서 고정 값 260dp로 변경되었습니다. 이는 일관된 UI 레이아웃을 제공하기 위한 변경으로 보입니다.


34-35: RelativeLayout 마진 수정

RelativeLayout의 상단 마진이 감소되고 시작 및 끝 마진이 제거되었습니다. 이는 컨텐츠의 간격을 최적화하기 위한 UI 조정입니다.


39-43: 이미지뷰 크기 및 마진 변경

ImageView의 크기가 크게 감소하고 마진 값이 변경되었습니다. 이는 전체적인 디자인 개선 작업의 일부로 보입니다.


51-52: 텍스트뷰 마진 조정

item_titleitem_detail 텍스트뷰의 시작 마진이 미세 조정되었습니다. 레이아웃의 일관성을 높이기 위한 변경입니다.

Also applies to: 63-64


74-77: RecyclerView 마진 조정

RecyclerView의 마진 값이 조정되었습니다. 이는 내부 요소들의 배치를 최적화하기 위한 변경으로 보입니다.


103-103: 친구 닉네임 텍스트 속성 및 제약 변경

friend_nickname 텍스트뷰에 기본 텍스트 "닉네임"이 추가되었고, 제약 참조가 변경되었습니다. 이는 UI의 기본 상태를 개선하고 제약 조건을 명확히 하기 위한 변경입니다.

Also applies to: 106-106

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeViewModel.kt (3)

6-7: 필요 패키지 임포트 추가

viewModelScope, YesterdayCard, HomeRepository, 코루틴 관련 임포트가 추가되었습니다. 이는 새로운 비동기 데이터 처리 방식을 위한 필수 요소입니다.

Also applies to: 12-14, 16-16, 21-21


23-24: 생성자 매개변수 변경

HomeRepository가 생성자 매개변수로 추가되었습니다. 이는 의존성 주입 패턴을 따르며, 데이터 접근 계층과 뷰모델 계층을 분리하는 좋은 아키텍처 접근 방식입니다.


47-48: 어제의 카드 데이터를 위한 LiveData 추가

_yesterdayCards MutableLiveData와 해당 접근자가 추가되었습니다. 이는 UI 계층에서 데이터 변경을 관찰할 수 있도록 하는 좋은 패턴입니다.

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/HomeFragment.kt (6)

22-23: 데이터 모델 및 리포지토리 임포트 변경

DiaryCard에서 YesterdayCard로 변경되고 HomeRepository 임포트가 추가되었습니다. 이는 앱 전체의 데이터 모델 변경과 리포지토리 패턴 적용에 따른 필요한 수정입니다.

Also applies to: 30-31


81-81: HomeRepository 인스턴스 생성

HomeRepository 인스턴스가 초기화되었습니다. 이는 뷰모델에 데이터 액세스 레이어를 제공하기 위한 적절한 추가입니다.


91-91: HomeViewModelFactory 파라미터 변경

HomeViewModelFactoryhomeRepository가 추가되었습니다. 이는 뷰모델 생성자 변경에 맞춘 필요한 수정입니다.


142-144: 어제의 카드 데이터 로딩 메소드 호출

viewModel.getYesterdayCard()를 호출하여 어제의 카드 데이터를 로드합니다. 코드 주석으로 정확한 목적을 명시한 것은 좋은 관행입니다.


203-211: LiveData 옵저버 변경

diaryCards 대신 yesterdayCards를 관찰하고, 데이터 존재 여부에 따라 UI 가시성을 조정합니다. 이는 데이터 모델 변경에 따른 필요한 수정입니다.


319-319: RecyclerView 설정 메소드 파라미터 타입 변경

setupRecyclerView 메소드의 파라미터 타입이 List<DiaryCard>에서 List<YesterdayCard>로 변경되었습니다. 이는 데이터 모델 변경에 맞춘 필요한 수정입니다.

app/src/main/java/com/toyou/toyouandroid/presentation/fragment/home/adapter/HomeBottomSheetCardDetailAdapter.kt (24)

9-10: [Import 관련 추가]
YesterdayCardYesterdayCardQuestion을 import하여 새로운 DTO에 대응하기 위한 변경입니다. 별다른 문제는 없어 보이며, 어댑터 내 로직과 잘 연동됩니다.


19-21: [어댑터 상태 변수 추가]
questionList, emotionMap, questionToCardMap를 통해 카드-질문-감정 정보를 분리해 두어 가독성이 향상되었습니다. 별다른 문제 없이 유용하게 보입니다.


23-35: [setCards 메서드 구현 점검]
newCards에서 질문 목록, 감정, 카드-질문 매핑을 각각 추출하고 notifyDataSetChanged()로 갱신하는 로직이 적절해 보입니다. 다만, 데이터 규모가 커질 경우 전체 갱신 대신 부분 갱신을 고려해볼 수 있습니다.


46-46: [onCreateViewHolder 오버라이드 확인]
onCreateViewHolder 메서드가 정상적으로 정의되어 있습니다. 현재 방식에는 별다른 문제점이 없어 보입니다.


49-49: [viewType=1,2 분기 처리]
LONG_ANSWER, SHORT_ANSWER 타입에 대응하는 레이아웃을 정상적으로 inflate하고 있습니다.


51-51: [새 레이아웃 리소스 적용 (item_yesterday_qa)]
R.layout.item_yesterday_qa로 변경된 점 잘 확인했습니다. 문제 없어 보입니다.


55-55: [viewType=3 분기 처리]
OPTIONAL 타입에 대한 뷰홀더 분기 처리가 간결하게 구성되어 있습니다.


57-57: [새 레이아웃 리소스 적용 (item_yesterday_option_two)]
두 개의 선택지를 가진 옵션 레이아웃으로 보입니다. 문제 없어 보입니다.


63-63: [새 레이아웃 리소스 적용 (item_yesterday_option_three)]
세 개의 선택지를 가진 옵션 레이아웃으로 보입니다. 문제 없어 보입니다.


71-78: [onBindViewHolder 내 cardId 및 emotion 연동 확인]
questionList[position]에서 질문 ID를 얻고, questionToCardMapemotionMap을 통해 카드별 감정을 가져오는 구조가 잘 잡혀 있습니다. 감정이 없을 경우 "ANGRY"로 처리하는 기본값 또한 합리적으로 보입니다.


79-82: [item.options!!의 NPE 가능성 확인 요청 (LONG/SHORT ANSWER)]
옵션 배열을 강제로 언래핑(!!)하고 있어, item.options가 null인 경우 런타임 오류가 발생할 수 있습니다. 호출부 혹은 데이터 로더에서 null이 발생하지 않도록 보장하는지 확인해 주세요.


84-88: [item.options!!의 NPE 가능성 확인 요청 (OPTIONAL 2개 옵션)]
두 개 옵션을 사용하는 OPTIONAL 유형에서도 동일하게 강제 언래핑이 이루어지고 있습니다. 데이터가 항상 null이 아님을 보장하거나, 안전한 처리로 방어 로직을 강화해 주세요.


91-94: [item.options!!의 NPE 가능성 확인 요청 (기타 ELSE 분기)]
3개 이상의 유형(ELSE)에서도 item.options!!를 사용하는 동일한 로직이 존재합니다. 예외 발생 가능성을 고려해야 하며, 데이터가 누락되지 않는지 재확인 부탁드립니다.


99-100: [getItemCount 구현]
questionList.size를 반환하는 간단한 메서드로, 별다른 문제는 없어 보입니다.


101-101: [MultiViewHolderPreview1 내부 클래스 선언]
텍스트 형태의 질문/답변을 단순 바인딩하는 뷰홀더로 보이며, 현재 변경 사항에서 이상은 없어 보입니다.


111-111: [MultiViewHolderPreview3 내부 클래스 선언]
두 옵션을 처리하는 뷰홀더를 추가한 것으로 보입니다. 별다른 문제 없이 잘 구성되어 있습니다.


116-116: [bind 메서드에 emotion 파라미터 추가]
MultiViewHolderPreview3bind 함수에서 감정을 활용할 수 있게 된 점이 자연스럽습니다. 구현 구조에 문제 없어 보입니다.


121-122: [applyEmotionStyle 호출 시 NPE 가능성]
item.options[0], item.options[1] 강제 언래핑 사용은 NPE가 발생할 여지를 남길 수 있습니다. 데이터가 항상 유효함을 보장하는지 점검해 보세요.


126-126: [MultiViewHolderPreview4 내부 클래스 선언]
세 개의 옵션을 표시하는 뷰홀더 구조이며, 변경 사항 상 특별한 이슈는 없어 보입니다.


132-132: [bind 메서드에 emotion 파라미터 추가 (MultiViewHolderPreview4)]
OPTIONAL 유형이 3개 옵션을 가질 때 감정을 반영할 수 있게 되어 있습니다. 문제 없어 보입니다.


138-141: [applyEmotionStyle 호출 시 NPE 가능성 (3개 옵션)]
item.options!!에서 여러 인덱스를 참조하므로, 데이터 불일치 시 런타임 예외 위험이 있습니다. 데이터 수를 사전에 검증하거나 예외 처리를 권장드립니다.


144-152: [applyEmotionStyle - 감정별 배경 처리 로직]
감정 코드에 따라 다른 배경 리소스를 적용하는 부분은 가독성이 좋습니다. 정의된 감정 외 문자열이 들어올 때의 처리(search_container)도 설정되어 있어 문제 없어 보입니다.


154-155: [applyEmotionStyle - 선택되지 않은 경우 처리]
옵션이 선택되지 않았을 시 search_container로 설정하는 처리 방식은 명확합니다.


167-167: [마무리 중괄호 라인]
파일 종료 시점의 중괄호 변경 사항입니다. 특별한 이슈는 없어 보입니다.

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: 0

🧹 Nitpick comments (1)
.github/workflows/android_cd.yml (1)

68-69: 디버그 단계 주의
Debug Local Properties 단계에서 local.properties 파일의 내용을 출력하도록 변경되었습니다. 해당 파일에 민감 정보가 포함될 수 있으므로, QA 검증 후에는 이 단계의 실행을 제한하거나 제거하는 방안을 고려해 주세요.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1bbd5d6 and 34f136b.

📒 Files selected for processing (1)
  • .github/workflows/android_cd.yml (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Continuous Deployment
🔇 Additional comments (5)
.github/workflows/android_cd.yml (5)

6-6: 브랜치 트리거 업데이트 확인
push 이벤트의 브랜치가 release/1.1.0로 변경되어, 해당 CI/CD 파이프라인이 새로운 릴리즈 조건에 맞게 동작하도록 수정되었습니다.


18-18: 새로운 환경변수 추가 확인
LOCAL_PROPERTIES_CONTENTS 환경변수가 추가되어, local.properties 파일 생성 시 필요한 설정값을 제공하고 있습니다.


24-25: Checkout 단계 개선
with 절에 ref: ${{ github.head_ref }}가 추가되어 PR이 열릴 때 올바른 브랜치의 코드를 체크아웃할 수 있게 되었습니다.


64-65: 로컬 프로퍼티 설정 방식 개선
$LOCAL_PROPERTIES_CONTENTS를 사용하여 local.properties 파일을 생성하고, SIGNED_STORE_FILE=keystore.jks를 추가하는 방식이 의도한 대로 동작할 것으로 보입니다.


95-95: Firebase 앱 배포 그룹 업데이트
배포 단계의 groups 값이 seungwon으로 변경되어, 올바른 QA 그룹에 APK가 배포되도록 설정되었습니다.

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: 0

🧹 Nitpick comments (1)
.github/workflows/android_cd.yml (1)

67-70: 디버그 단계 도입 주의
"Debug Local Properties" 단계가 추가되어 local.properties 파일의 내용이 출력됩니다. 이는 디버깅에는 유용하지만, 만약 파일 내에 민감한 정보가 있다면 CI 로그를 통해 노출될 위험이 있으므로, 필요시 해당 단계의 사용 여부 및 출력 내용을 재검토하시기 바랍니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 34f136b and ffc9998.

📒 Files selected for processing (1)
  • .github/workflows/android_cd.yml (4 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Continuous Deployment
🔇 Additional comments (6)
.github/workflows/android_cd.yml (6)

4-7: 브랜치 트리거 업데이트 확인
푸시 이벤트에 대해 이제 "release/1.1.0" 브랜치에서만 워크플로우가 실행되도록 변경되었습니다. 이는 새 릴리즈 정책 및 CI/CD 파이프라인 자동화를 위해 적절해 보입니다.


16-19: 환경 변수 추가 검토
새로운 환경 변수 LOCAL_PROPERTIES_CONTENTS가 추가되어 CI/CD 과정 중 동적으로 로컬 프로퍼티 파일을 구성할 수 있게 되었습니다. 이 변수에 민감한 정보가 포함된다면, 접근 제한 및 로그 노출 관리에 유의해 주세요.


22-26: PR 브랜치 체크아웃 개선
"Checkout code" 단계에 with: ref: ${{ github.head_ref }}가 추가되어 PR이 생성된 브랜치가 정확하게 체크아웃됩니다. 이는 올바른 빌드 환경을 보장하는데 도움이 됩니다.


52-54: 키스토어 파일명 수정 검토
"Decode And Save Keystore Base64" 단계에서 출력 파일 이름이 key.jks로 변경되었습니다. 빌드 설정 및 관련 문서에서 이 변경사항이 반영되었는지 확인 바랍니다.


61-66: 로컬 프로퍼티 설정 업데이트
"Add Local Properties" 단계에서 $LOCAL_PROPERTIES_CONTENTS를 이용하여 local.properties 파일을 생성하고, SIGNED_STORE_FILE=key.jks 항목을 추가하는 방식으로 수정되었습니다. 이 방식은 키스토어 파일 정보를 빌드 시 참조할 수 있도록 해주어 적절해 보입니다.


89-97: Firebase App Distribution 그룹 변경 확인
"Upload to Firebase App Distribution" 단계에서 테스트 그룹이 seungwon으로 설정되었습니다. 이 수정이 의도한 QA 그룹과 일치하는지, 실제 배포 대상이 정확한지 최종 확인 바랍니다.

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: 0

🧹 Nitpick comments (1)
.github/workflows/android_cd.yml (1)

68-69: 디버그 스텝 주의
local.properties 파일의 내용을 출력하는 디버그 스텝이 추가되었습니다. 이 파일에 민감한 정보가 포함될 수 있으므로, QA나 내부 디버깅이 완료된 후에는 해당 스텝을 제거하거나 접근 제한 설정을 검토하는 것이 좋겠습니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ffc9998 and d2a2dde.

📒 Files selected for processing (1)
  • .github/workflows/android_cd.yml (4 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Continuous Deployment
🔇 Additional comments (8)
.github/workflows/android_cd.yml (8)

6-6: 브랜치 트리거 변경 확인
push 이벤트의 브랜치가 이제 release/1.1.0으로 설정되었습니다. 이 변경이 릴리스 전략과 정확히 일치하는지 검토 바랍니다.


17-18: 새 환경 변수 추가 확인
LOCAL_PROPERTIES_CONTENTS 환경 변수가 추가되어, 이후 로컬 프로퍼티 파일 생성에 사용됩니다. 시크릿 값이 올바르게 설정 및 관리되고 있는지 확인해 주세요.


24-25: 체크아웃 단계 개선
actions/checkout 스텝에 with: ref: ${{ github.head_ref }}를 추가하여 PR 브랜치를 정확하게 체크아웃합니다. 해당 변경사항은 올바르게 적용되었습니다.


52-53: 키 저장소 파일 이름 업데이트
Keystore Base64 디코딩 결과가 app/key.jks로 저장되도록 변경되었습니다. 이 수정이 app/build.gradle.kts 파일의 서명 구성 설정과 일치하는지 재확인해 주세요.


63-65: 로컬 프로퍼티 구성 변경
LOCAL_PROPERTIES_CONTENTS를 사용하여 local.properties 파일이 생성되고, SIGNED_STORE_FILE=key.jks가 추가되었습니다. 이 방식으로 서명 관련 설정을 통합 관리할 수 있어 좋습니다.


75-80: AAB 아티팩트 업로드 경로 확인
AAB 파일이 app/build/outputs/bundle/debug/app-debug.aab 경로에서 업로드됩니다. 파일 경로와 이름이 정확히 생성되는지 최종 확인 바랍니다.


82-87: APK 아티팩트 업로드 단계 점검
APK 파일이 app/build/outputs/apk/debug/app-debug.apk 경로에서 업로드되도록 설정되어 있습니다. 설정이 요구사항에 맞게 반영되었는지 확인해 주세요.


89-97: Firebase App Distribution 설정 업데이트
Firebase 배포 단계에서 groups 파라미터가 seungwon으로 변경되었으며, 업로드할 APK 파일 경로가 지정되었습니다. 이 설정이 QA 및 최종 배포 절차와 일치하는지 검토 바랍니다.

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: 0

🧹 Nitpick comments (1)
.github/workflows/android_cd.yml (1)

67-70: 디버그 단계 주의
디버깅을 위해 local.properties 파일의 내용을 출력하는 스텝이 추가되었습니다. 이 과정에서 민감한 정보가 로그에 노출될 가능성이 있으므로, 실제 배포 시에는 해당 스텝을 제거하거나 조건부로 실행하도록 조치하는 것을 권장합니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d2a2dde and 691bc05.

📒 Files selected for processing (1)
  • .github/workflows/android_cd.yml (4 hunks)
🔇 Additional comments (9)
.github/workflows/android_cd.yml (9)

3-10: 브랜치 트리거 업데이트 확인
푸시 이벤트의 브랜치가 이제 release/1.1.0으로 변경되었습니다. 이는 새로운 버전 관리 정책 및 CI/CD 파이프라인과 일치하므로 적절해 보입니다.


16-19: 새로운 환경 변수 추가 확인
env 섹션에 LOCAL_PROPERTIES_CONTENTS 환경 변수가 추가되었습니다. 서명 파일 등의 추가 설정에 필요한 정보가 올바르게 전달되고 있는지 확인해주세요.


22-26: Checkout 코드 단계 업데이트
actions/checkout 스텝에 with 블록을 통해 ref: ${{ github.head_ref }}를 지정함으로써 PR 생성 시 해당 브랜치로 체크아웃 되도록 처리한 점이 적절합니다.


51-54: 키스토어 파일 이름 수정 확인
Base64 디코딩 결과를 app/key.jks에 저장하도록 변경되었습니다. 이는 빌드 스크립트의 서명 관련 수정과 일치하며, 의도한 대로 동작할 것으로 보입니다.


62-66: Local Properties 설정 업데이트
Local properties 파일을 생성할 때, 환경 변수 LOCAL_PROPERTIES_CONTENTS의 내용을 기록한 후 SIGNED_STORE_FILE=key.jks를 추가하도록 수정되었습니다. 서명 관련 구성과 일치하며, 문제 없어 보입니다.


71-74: 릴리즈 APK 빌드 단계 검토
릴리즈 APK를 빌드하는 단계가 정상적으로 구성되어 있습니다. 추가적인 변경 없이 기존 빌드 프로세스를 그대로 유지하는 것으로 보입니다.


75-81: AAB 아티팩트 업로드 단계 확인
AAB 파일 업로드 스텝이 잘 구성되어 있으며, 경로 및 이름 지정도 올바르게 처리되고 있습니다.


82-88: APK 아티팩트 업로드 단계 확인
APK 파일 업로드 스텝 역시 정상적으로 설정되어 있습니다. 이 단계에서 별도의 이슈는 보이지 않습니다.


89-97: Firebase 배포 대상 그룹 업데이트 확인
Firebase App Distribution 스텝에서 groups 파라미터가 seungwon으로 변경되었습니다. 이는 배포 대상 그룹을 올바르게 반영하는 것으로 보이며, QA 팀의 확인 후 최종 배포 준비에 적합해 보입니다.

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: 0

🔭 Outside diff range comments (1)
.github/workflows/android_cd.yml (1)

112-117: ⚠️ Potential issue

Discord 알림 스텝 중복 URL 전달 문제

Notify Discord 스텝에서 curl 명령어에 $DISCORD_WEBHOOK_URL이 중복으로 전달되고 있습니다. URL은 한 번만 인자로 넘겨야 하므로 중복된 부분을 제거해 주세요.
예시 diff:

-                  $DISCORD_WEBHOOK_URL
-                  $DISCORD_WEBHOOK_URL
+                  $DISCORD_WEBHOOK_URL
🧹 Nitpick comments (2)
.github/workflows/android_cd.yml (2)

68-69: 디버그 스텝 주의

Debug Local Properties 스텝에서 cat local.properties 명령어로 파일 내용을 출력하도록 한 점은 디버깅에 유용하지만, CI/CD 로그에 민감한 정보가 노출될 수 있으므로 프로덕션 환경에서는 조건부 실행하거나 제거하는 것을 고려해 주세요.


106-106: 불필요한 공백 제거 필요

라인 106에 불필요한 공백이 있는 것 같습니다. YAML 파일의 가독성을 위해 해당 공백을 제거해 주세요.

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 106-106: trailing spaces

(trailing-spaces)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 691bc05 and 0b29db9.

📒 Files selected for processing (1)
  • .github/workflows/android_cd.yml (3 hunks)
🧰 Additional context used
🪛 YAMLlint (1.35.1)
.github/workflows/android_cd.yml

[error] 106-106: trailing spaces

(trailing-spaces)

🔇 Additional comments (7)
.github/workflows/android_cd.yml (7)

16-18: 환경변수 'LOCAL_PROPERTIES_CONTENTS' 추가 확인

새롭게 추가된 LOCAL_PROPERTIES_CONTENTS 변수는 로컬 프로퍼티 파일 작성에 사용됩니다. 환경 설정이 올바르게 이루어졌는지 확인 부탁드립니다.


24-25: Checkout 코드 업데이트

actions/checkout 스텝에서 with 블록을 사용하여 ref: ${{ github.head_ref }}로 PR이 열린 브랜치를 체크아웃하도록 변경한 점은 좋습니다. 해당 설정이 의도한 브랜치를 정확히 가리키는지 추가 확인 부탁드립니다.


53-53: Keystore 파일명 업데이트 검토

Decode And Save Keystore Base64 스텝에서 출력 파일명을 기존의 keystore.jks 대신 app/key.jks로 변경한 점은 일관성 유지 측면에서 좋습니다. 다만, 이후 스텝(예, SIGNED_STORE_FILE 설정)에서도 이 변경 사항이 올바르게 반영되고 있는지 확인해 주세요.


64-65: local.properties 업데이트

Add Local Properties 스텝에서 $LOCAL_PROPERTIES_CONTENTS를 이용해 local.properties 파일을 생성하고, 이어서 SIGNED_STORE_FILE=key.jks를 추가한 변경 사항은 적절해 보입니다. 모든 환경에서 올바르게 작동하는지 한 번 더 검증해 주시기 바랍니다.


90-96: 앱 버전 추출 스크립트 검토

Get App Version 스텝에서 grep 명령어를 사용해 app/build.gradle 파일에서 versionName을 추출하도록 구현했습니다. 만약 프로젝트가 Kotlin DSL을 사용하여 app/build.gradle.kts 파일을 운영한다면, 파일 경로를 업데이트할 필요가 있으니 이 부분을 확인해 주세요.


97-107: Firebase App Distribution 업로드 스텝 수정

Firebase App Distribution 스텝에서 groups 값이 seungwon으로, 그리고 릴리즈 노트에 v${{ env.VERSION }}가 포함되도록 업데이트한 점은 긍정적입니다. 변경 사항이 의도한 대로 동작하는지 최종 검증 부탁드립니다.

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 106-106: trailing spaces

(trailing-spaces)


4-9:

Details

❓ Verification inconclusive

브랜치 트리거 업데이트 검토

현재 push 및 pull_request 이벤트 트리거가 master 브랜치로 설정되어 있습니다. PR 목표에 따라 브랜치 이름을 release/1.1.0으로 업데이트할 필요가 있는지 검토해 주세요.
예시 diff:

-            - master
+            - release/1.1.0

주요 검토: 이벤트 트리거 브랜치 업데이트 여부 확인

  • 파일: .github/workflows/android_cd.yml (라인 4-9)
  • 현재 pushpull_request 이벤트가 master 브랜치로 설정되어 있습니다.
  • 배포 전략이나 PR 타깃에 따라, 해당 브랜치가 최신 정책을 반영하는지 검토 후, 필요하다면 아래와 같이 업데이트하는 것을 고려해 주세요:
-            - master
+            - release/1.1.0

업데이트 여부는 프로젝트의 브랜치 정책과 배포 전략에 따라 달라질 수 있으므로, 관련 내용을 다시 한 번 확인해 주시길 바랍니다.

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: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b29db9 and 086c080.

📒 Files selected for processing (1)
  • .github/workflows/android_cd.yml (3 hunks)
🧰 Additional context used
🪛 actionlint (1.7.4)
.github/workflows/android_cd.yml

72-72: "github.event.pull_request.title" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Continuous Deployment
🔇 Additional comments (2)
.github/workflows/android_cd.yml (2)

101-101: 일관성 확인: releaseNotes 업데이트
releaseNotes 필드가 이전의 환경 변수 대신 이제 steps.extract_version.outputs.version을 참조하도록 올바르게 변경되었습니다. 이로써 버전 정보가 메시지에 일관되게 반영됩니다.


108-111: 일관성 확인: Discord 알림 메시지 업데이트
Discord 알림 메시지에서도 버전 정보가 steps.extract_version.outputs.version을 통해 전달되고 있습니다. 업데이트된 메시지 형식이 최신 버전 추출 로직과 일치하여 올바르게 동작할 것으로 예상됩니다.

@tristanjung1006 tristanjung1006 merged commit 781a01a into master Apr 8, 2025
3 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Sep 15, 2025
@tristanjung1006 tristanjung1006 deleted the release/1.1.0 branch December 28, 2025 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🚀 release QA 점검

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants