Skip to content

Conversation

@uson1004
Copy link
Member

κ°œμš”

λ„€νŠΈμ›Œν¬ λͺ¨λ“ˆμ„ ν”Œλž˜μ΄λ²„λ‘œ λΆ„λ¦¬ν•˜μ˜€μ„ λ•Œ λ°œμƒν•œ μž‘μ—…μ„ μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

μž‘μ—…μ‚¬ν•­

μΆ”κ°€ 둜 ν•  말

@uson1004 uson1004 requested a review from a team December 24, 2025 10:20
@uson1004 uson1004 self-assigned this Dec 24, 2025
@uson1004 uson1004 added performance μ„±λŠ₯을 κ°œμ„  ν•  경우 refactor μ½”λ“œ λ¦¬νŒ©ν† λ§ ν•  경우 labels Dec 24, 2025
@coderabbitai
Copy link

coderabbitai bot commented Dec 24, 2025

Important

Review skipped

Too many files!

150 files out of 300 files are above the max files limit of 150.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refactor/812-λ„€νŠΈμ›Œν¬-λͺ¨λΈ-ν”Œλ ˆμ΄λ²„-뢄리

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

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

이 PR은 λ„€νŠΈμ›Œν¬ 및 데이터 λͺ¨λ“ˆμ— λΉŒλ“œ ν”Œλ ˆμ΄λ²„λ₯Ό λ„μž…ν•˜μ—¬ 개발 및 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ„ λͺ…ν™•ν•˜κ²Œ λΆ„λ¦¬ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ κ΄‘λ²”μœ„ν•œ 파일 μž¬κ΅¬μ‘°ν™”, ν”Œλ ˆμ΄λ²„λ³„ μ†ŒμŠ€ μ„ΈνŠΈ 생성, 그리고 UI μ»΄ν¬λ„ŒνŠΈ 및 λ·°λͺ¨λΈ 둜직의 κ΄€λ ¨ μ—…λ°μ΄νŠΈκ°€ ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ „λ°˜μ μœΌλ‘œ μ½”λ“œλ² μ΄μŠ€μ˜ λͺ¨λ“ˆμ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

Highlights

  • λΉŒλ“œ ν”Œλ ˆμ΄λ²„ 뢄리: λ„€νŠΈμ›Œν¬ 및 데이터 λͺ¨λ“ˆμ— dev 및 prod λΉŒλ“œ ν”Œλ ˆμ΄λ²„λ₯Ό λ„μž…ν•˜μ—¬ 개발 및 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ„ λΆ„λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” build.gradle.kts νŒŒμΌμ— flavorDimensions 및 productFlavors 섀정을 μΆ”κ°€ν•˜μ—¬ μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.
  • 파일 ꡬ쑰 μž¬νŽΈμ„±: ν”Œλ ˆμ΄λ²„ 뢄리에 따라 data/src/main/java 및 network/src/main/java μ•„λž˜μ˜ λ§Žμ€ νŒŒμΌλ“€μ΄ data/src/dev/kotlin, data/src/prod/kotlin 및 network/src/dev/kotlinκ³Ό 같은 ν”Œλ ˆμ΄λ²„λ³„ λ””λ ‰ν† λ¦¬λ‘œ 이동 및 이름이 λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • UI μœ ν‹Έλ¦¬ν‹° λͺ¨λ“ˆν™”: UI κ΄€λ ¨ μœ ν‹Έλ¦¬ν‹° 및 MVI μ•„ν‚€ν…μ²˜ μž„ν¬νŠΈ(ui.Banner, ui.mvi.BaseMviViewModel λ“±)κ°€ team.aliens.dms.android.core.ui νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ—…λ°μ΄νŠΈλ˜μ–΄ UI κ΄€λ ¨ μ½”λ“œκ°€ μ „μš© μ½”μ–΄ UI λͺ¨λ“ˆλ‘œ λ¦¬νŒ©ν† λ§λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • μŠ€λ‚΅λ°” UI κ°œμ„ : DmsApp.ktμ—μ„œ SnackbarHost의 정렬이 Alignment.Centerμ—μ„œ Alignment.TopCenter둜 λ³€κ²½λ˜μ—ˆμœΌλ©°, λΆˆν•„μš”ν•œ fillMaxWidth 및 systemBarsPadding μž„ν¬νŠΈκ°€ μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • λ·°λͺ¨λΈ 둜직 κ°„μ†Œν™”: HomeViewModel, MealViewModel, SignInViewModelμ—μ„œ 리포지토리 호좜 μ£Όλ³€μ˜ runCatching 블둝이 μ œκ±°λ˜μ–΄, 리포지토리 λ©”μ„œλ“œκ°€ 직접 Result<T>λ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜ λ‚΄λΆ€μ μœΌλ‘œ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜λ„λ‘ λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • MyPage 데이터 λͺ¨λΈ μ—…λ°μ΄νŠΈ: MyPageScreen.ktμ—μ„œ UserInformation μ»΄ν¬λ„ŒνŠΈμ˜ gradeClassNumber 및 studentName νŒŒλΌλ―Έν„°κ°€ uiState.myPage?.gcn 및 uiState.myPage?.name을 μ‚¬μš©ν•˜λ„λ‘ μ—…λ°μ΄νŠΈλ˜μ–΄ MyPage 데이터 λͺ¨λΈμ˜ λ³€κ²½ 사항을 λ°˜μ˜ν–ˆμŠ΅λ‹ˆλ‹€.

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

Using Gemini Code Assist

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

Invoking Gemini

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

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

Customization

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

Limitations & Feedback

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

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

Footnotes

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

Copy link

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

Choose a reason for hiding this comment

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

Code Review

This pull request introduces product flavors (dev/prod) across several core and data modules, including core/jwt, core/network, core/school, data, and network, to support environment-specific configurations. It also refactors package structures by moving UI-related utilities from core.designsystem to core.ui and reorganizing widget-related classes in core/widget. A significant portion of the changes involves adding new data layer components: abstract repository interfaces, their concrete implementations, data models, mappers for network responses, and custom exception classes for various features like authentication, meal, notification, point, and student management. Dependency injection modules using Hilt are also added to bind these new repository implementations. In the app module, the DmsApp.kt file sees UI adjustments, including wrapping the Scaffold in a Box and changing SnackbarHost alignment, along with updating HomeRoute to handle snackbar events. ViewModel logic in HomeViewModel, MealViewModel, and SignInViewModel is streamlined by directly calling repository methods without an explicit runCatching block, as the repository methods already return Result. Review comments highlight two main issues: the AuthRepositoryImpl's incomplete token handling when autoSignIn is false, where tokens are discarded instead of being maintained in memory for the app session, and the NotificationRepositoryImpl having TODO implementations for registerDeviceNotificationToken and cancelDeviceTokenRegistration, indicating missing core push notification functionality.

Comment on lines +44 to +50
// FIXME: λ§Œμ•½ μžλ™ λ‘œκ·ΈμΈμ„ ν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ 토큰 μž¬λ°œκΈ‰μ€ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•˜λŠ”κ°€?
if (autoSignIn) {
val tokens = signInResponse.extractTokens()
val features = signInResponse.extractFeatures()
jwtProvider.updateTokens(tokens)
schoolProvider.updateFeatures(features)
}

Choose a reason for hiding this comment

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

medium

FIXME μ£Όμ„μ—μ„œ μ§€μ λœ 바와 같이, autoSignIn이 false일 경우의 토큰 처리 둜직이 λΆˆμ™„μ „ν•©λ‹ˆλ‹€. ν˜„μž¬ μ½”λ“œλŠ” autoSignIn이 true일 λ•Œλ§Œ 토큰을 μ €μž₯ν•˜κ³  있으며, false일 κ²½μš°μ—λŠ” 둜그인 μ‹œ λ°œκΈ‰λœ 토큰을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  버리고 μžˆμŠ΅λ‹ˆλ‹€. μžλ™ λ‘œκ·ΈμΈμ„ μ‚¬μš©ν•˜μ§€ μ•Šλ”λΌλ„ μ•± μ„Έμ…˜ λ™μ•ˆμ—λŠ” 토큰을 λ©”λͺ¨λ¦¬μ— μœ μ§€ν•˜μ—¬ API ν˜ΈμΆœμ— μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 뢀뢄을 λͺ…ν™•νžˆ κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Comment on lines +19 to +25
override suspend fun registerDeviceNotificationToken(deviceToken: String): Result<Unit> = runCatching {
TODO("Not yet implemented")
}

override suspend fun cancelDeviceTokenRegistration(deviceToken: String): Result<Unit> = runCatching {
TODO("Not yet implemented")
}

Choose a reason for hiding this comment

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

medium

registerDeviceNotificationToken 및 cancelDeviceTokenRegistration ν•¨μˆ˜κ°€ TODO둜만 κ΅¬ν˜„λ˜μ–΄ μžˆμ–΄ μ‹€μ œ κΈ°λŠ₯이 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν‘Έμ‹œ μ•Œλ¦Ό κΈ°λŠ₯의 핡심 λΆ€λΆ„μ΄λ―€λ‘œ μ‘°μ†νžˆ κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€.

@uson1004 uson1004 merged commit d4d7915 into develop Dec 24, 2025
1 of 2 checks passed
@uson1004 uson1004 deleted the refactor/812-λ„€νŠΈμ›Œν¬-λͺ¨λΈ-ν”Œλ ˆμ΄λ²„-뢄리 branch December 24, 2025 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance μ„±λŠ₯을 κ°œμ„  ν•  경우 refactor μ½”λ“œ λ¦¬νŒ©ν† λ§ ν•  경우

Projects

None yet

Development

Successfully merging this pull request may close these issues.

λ„€νŠΈμ›Œν¬ λͺ¨λΈ ν”Œλ ˆμ΄λ²„ 뢄리

2 participants