Skip to content

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 ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

jeong724 and others added 16 commits March 4, 2025 11:46
Feat/#106 ๋ฐ”ํ…€์‹œํŠธ ๊ตฌํ˜„
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

  • Setting/#107 relase, debug ์•ฑ ๋ถ„๋ฆฌย #108: Gradle ํŒŒ์ผ์˜ ์„œ๋ช… ๊ตฌ์„ฑ ๋ฐ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ ์œ ์‚ฌํ•œ ๋นŒ๋“œ ์„ค์ • ๋ณ€๊ฒฝ์ด ํฌํ•จ๋œ PR.

๐Ÿชง 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์˜ ์˜์กด์„ฑ ์ฃผ์ž… ์—…๋ฐ์ดํŠธ๊ฐ€ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.

HomeViewModel์— HomeRepository๋ฅผ ์ฃผ์ž…ํ•˜๊ธฐ ์œ„ํ•œ ํŒฉํ† ๋ฆฌ ํด๋ž˜์Šค ์ˆ˜์ •์ด ์ž˜ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, 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 ๋ฉ”์„œ๋“œ ์ค‘๋ณต ๊ฐ€๋Šฅ์„ฑ]
mapQuestionType์ด getItemViewType๊ณผ ์œ ์‚ฌํ•œ ๋กœ์ง์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ, ์ค‘๋ณต๋œ ๋ถ„๊ธฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ ๋˜๋Š” 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.Color์™€ R ๋ฆฌ์†Œ์Šค๋Š” ๊ฐ์ • ์ƒํƒœ์— ๋”ฐ๋ฅธ UI ์ƒ‰์ƒ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Also applies to: 8-8


10-10: ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ณ€๊ฒฝ

DiaryCard์—์„œ YesterdayCard๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•ฑ ์ „์ฒด์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ์ ์ ˆํ•œ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค.


14-14: ์–ด๋Œ‘ํ„ฐ ์ƒ์„ฑ์ž ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ

MutableList<DiaryCard>์—์„œ MutableList<YesterdayCard>๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.


35-35: ๋ฐ”์ธ๋”ฉ ๋ฉ”์†Œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ

bind ๋ฉ”์†Œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์ด DiaryCard์—์„œ YesterdayCard๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


38-38: ์–ด๋Œ‘ํ„ฐ ๋ฐ์ดํ„ฐ ์„ค์ • ๋ณ€๊ฒฝ

HomeBottomSheetCardDetailAdapter์— YesterdayCard ์•„์ดํ…œ์„ ์ „๋‹ฌํ•˜๋„๋ก ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


43-43: ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋ฐ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ˆ˜์ •

item์„ ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ํด๋ฆญ ์ด๋ฒคํŠธ์—์„œ cardId๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ „๋‹ฌํ•˜๋„๋ก ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ์— ๋งž๊ฒŒ ์ ์ ˆํžˆ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Also applies to: 48-49


51-56: UI ์š”์†Œ ํ…์ŠคํŠธ ์„ค์ • ์ถ”๊ฐ€

YesterdayCard์˜ cardContent ์†์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ 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_title๊ณผ item_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 ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€๊ฒฝ

HomeViewModelFactory์— homeRepository๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ทฐ๋ชจ๋ธ ์ƒ์„ฑ์ž ๋ณ€๊ฒฝ์— ๋งž์ถ˜ ํ•„์š”ํ•œ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค.


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 ๊ด€๋ จ ์ถ”๊ฐ€]
YesterdayCard์™€ YesterdayCardQuestion์„ 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๋ฅผ ์–ป๊ณ , questionToCardMap์™€ emotionMap์„ ํ†ตํ•ด ์นด๋“œ๋ณ„ ๊ฐ์ •์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ตฌ์กฐ๊ฐ€ ์ž˜ ์žกํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ •์ด ์—†์„ ๊ฒฝ์šฐ "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 ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€]
MultiViewHolderPreview3์˜ bind ํ•จ์ˆ˜์—์„œ ๊ฐ์ •์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ์ ์ด ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๊ตฌ์กฐ์— ๋ฌธ์ œ ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค.


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)
  • ํ˜„์žฌ push ๋ฐ pull_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์„ ํ†ตํ•ด ์ „๋‹ฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋œ ๋ฉ”์‹œ์ง€ ํ˜•์‹์ด ์ตœ์‹  ๋ฒ„์ „ ์ถ”์ถœ ๋กœ์ง๊ณผ ์ผ์น˜ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

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