Skip to content

홈 화면 QA 반영#152

Merged
HamBeomJoon merged 4 commits into
developfrom
fix/#150-home-QA
Jul 1, 2026
Merged

홈 화면 QA 반영#152
HamBeomJoon merged 4 commits into
developfrom
fix/#150-home-QA

Conversation

@HamBeomJoon

@HamBeomJoon HamBeomJoon commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

📌 작업 내용

홈 화면

  • 연습녹음 0회시 "지금부터 연습해보세요" 텍스트 노출
  • "발표 분석하기" 텍스트와 ">" 아이콘 Row만 터치되도록 수정

셀프 피드백 작성화면

  • 입력값이 없을 때 힌트메세지가 3개 중 랜덤 노출되도록 변경
  • 8줄 넘어갈때 200자 counting텍스트 잘림 현상 수정
  • 200자 내에서 마지막 줄 말고 다른 줄로 이동해 작성하면 마지막 줄 텍스트가 지워지는 방식으로 계속 입력 가능 > 수정

🧩 관련 이슈


📸 스크린샷

  • 연습녹음 0회시 "지금부터 연습해보세요" 텍스트 노출
Screenshot_1782893539
  • 셀프 피드백 화면 200자 카운팅텍스트 잘림현상 수정
셀프 피드백 화면 변경 전
셀프 피드백 화면 변경 후
셀프 피드백 화면 변경 전 셀프 피드백 화면 변경 후

📢 논의하고 싶은 내용

  • 홈 화면 선택한 탭에 맞게 참고자료가 표시되어야하는 것은 참고자료 api완료 후 추가예정입니다.

Summary by CodeRabbit

  • New Features

    • 텍스트 입력창이 커서/선택 상태를 더 자연스럽게 유지하도록 개선됐습니다.
    • 피드백 입력 화면의 안내 문구가 세션마다 다양하게 표시됩니다.
    • 홈 화면의 일부 카드 문구가 상황에 맞게 달라집니다.
  • Bug Fixes

    • 입력 제한이 초과되면 일부만 잘리는 대신, 이전 입력값을 유지하도록 바뀌었습니다.
    • 텍스트 입력창의 안내 문구와 글자 수 표시가 현재 입력값 기준으로 더 정확하게 동작합니다.
    • 카드 터치 범위가 더 직관적으로 조정되었습니다.

- `presentation.practiceCount`가 0인 경우 빈 상태 전용 타이틀 문자열 적용
- 연습 기록 존재 여부에 따라 타이틀 텍스트를 다르게 표시하도록 분기 처리
- `PracticeActionCard`에서 카드 전체 대신 하단 액션 영역만 클릭 가능하도록 구조 변경
- `PrezelTouchArea` 적용 범위를 `Column` 전체에서 `Row` 내부로 이동
- 터치 영역의 `shape` 설정을 `PrezelTheme.shapes.V8`에서 `V4`로 변경
- `strings.xml`에 다양한 피드백 유도 문구를 포함하는 `feature_feedback_impl_placeholders` 문자열 배열 추가
- `FeedbackScreen`에서 `stringArrayResource`를 사용하여 랜덤한 플레이스홀더를 선택하도록 로직 개선
- `remember`를 활용하여 플레이스홀더 선택 상태를 유지하고 불필요한 재계산 방지
- 기존의 단일 플레이스홀더 리소스(`feature_feedback_impl_placeholder`) 제거
- `PrezelTextField`와 `PrezelTextArea`의 내부 상태를 `String`에서 `TextFieldValue`로 전환하여 커서 위치 및 선택 영역 관리 개선
- `applyPrezelTextInputPolicy`를 `TextFieldValue` 기반으로 변경하고 최대 길이 초과 시 입력을 제한하도록 로직 수정
- 외부에서 전달되는 `value` 변경 시 내부 상태를 동기화하기 위한 `LaunchedEffect` 추가
- `PrezelTextArea`의 글자 수 카운터 위치를 우측 하단으로 조정하고 관련 레이아웃 구조 개선
- 불필요한 줄바꿈 제거 로직 삭제 및 에러 메시지 한글화
@HamBeomJoon HamBeomJoon self-assigned this Jul 1, 2026
@HamBeomJoon HamBeomJoon requested a review from moondev03 as a code owner July 1, 2026 08:20
@HamBeomJoon HamBeomJoon added the 🔧 fix 정상 동작해야 하는 기능의 결함 수정 label Jul 1, 2026
@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Prezel 디자인시스템의 PrezelTextArea/PrezelTextField/PrezelTextFieldState가 String 기반 입력 처리에서 TextFieldValue 기반 상태 관리로 전환되었다. 피드백 화면의 placeholder가 랜덤 노출로 변경되었고, 홈 화면 연습 카드의 타이틀 조건 및 터치 영역이 수정되었다.

Changes

텍스트 입력 컴포넌트 TextFieldValue 전환

Layer / File(s) Summary
입력 정책 TextFieldValue 기반 재작성
PrezelTextFieldState.kt
applyPrezelTextInputPolicy가 String 절삭 방식에서 TextFieldValue 기준 초과 시 이전 값 유지 방식으로 변경됨.
PrezelTextField 내부 상태 동기화 및 프리뷰
PrezelTextField.kt
내부 textFieldValue 상태가 LaunchedEffect로 외부 value와 동기화되고, onValueChange 및 placeholder 조건, 프리뷰 wiring이 TextFieldValue 기준으로 갱신됨.
PrezelTextArea 내부 상태, 카운터/placeholder 레이아웃
PrezelTextArea.kt
내부 textFieldValue 상태 및 동기화가 추가되고, placeholder/카운터 표시 조건이 value.text 기준으로 바뀌며, showCounter 파라미터와 Box 기반 카운터 배치가 도입됨.

피드백/홈 화면 QA 반영

Layer / File(s) Summary
피드백 화면 랜덤 placeholder
FeedbackScreen.kt, feature/feedback/impl/src/main/res/values/strings.xml
placeholder 목록을 string-array로 관리하고 remember로 세션 내 랜덤 값을 선택해 PrezelTextArea에 전달함.
홈 화면 연습 카드 타이틀/터치 영역
PresentationSheet.kt, PracticeActionCard.kt
practiceCount == 0일 때 타이틀이 분기되고, PracticeActionCard의 클릭 영역이 액션 텍스트 행으로 축소되며 shape가 V8에서 V4로 변경됨.

Possibly related PRs

  • Team-Prezel/Prezel-Android#46: PrezelTextField.kt와 PrezelTextFieldState.kt의 동일 컴포넌트에 대한 이전 입력 상태/정책 구현 변경.
  • Team-Prezel/Prezel-Android#73: PrezelTextArea의 초기 구현 및 maxLength/입력 정책 배선을 다루어 본 PR의 TextFieldValue 전환과 직접 연결됨.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 홈 화면 QA 반영으로 핵심 변경 방향을 요약하며, 주요 변경인 홈 화면과 셀프 피드백 QA 수정과 연관됩니다.
Description check ✅ Passed 템플릿의 작업 내용, 관련 이슈, 스크린샷, 논의하고 싶은 내용 섹션을 모두 포함해 거의 완성되었습니다.
Linked Issues check ✅ Passed 연동 이슈 #150의 홈 화면 메시지·터치 영역과 셀프 피드백 랜덤 힌트·카운터·입력 동작 수정이 모두 반영되었습니다.
Out of Scope Changes check ✅ Passed 변경된 파일들은 모두 홈 화면과 셀프 피드백 QA 수정 범위에 속하며 명백한 불필요 변경은 보이지 않습니다.

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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 (1)
Prezel/feature/home/impl/src/main/java/com/team/prezel/feature/home/impl/main/component/title/PracticeActionCard.kt (1)

35-57: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

클릭 영역 축소로 인해 최소 터치 타겟(48dp) 미달 우려.

PrezelTouchArea가 카드 전체가 아닌 액션 텍스트+화살표 Row만 감싸도록 축소되었습니다(QA 요구사항과 일치). 다만 caption1Regular 텍스트와 16dp 아이콘으로 구성된 이 Row의 실제 높이는 Material 접근성 가이드라인이 권장하는 48dp 터치 타겟보다 작을 가능성이 높습니다. PrezelTouchAreaextraTouchPadding 파라미터를 제공하므로, 시각적 레이아웃을 바꾸지 않고 터치 영역만 넓히는 방식으로 보완할 수 있습니다.

♿ 터치 영역 확장 제안
         PrezelTouchArea(
             onClick = onClick,
             shape = PrezelTheme.shapes.V4,
+            extraTouchPadding = PaddingValues(vertical = PrezelTheme.spacing.V8),
         ) {

Based on the Material Design/Android accessibility guidance that Consider making sure these elements have a width and height of at least 48dp, as described in the Material Design Accessibility guidelines, when you implement clickable or touchable elements in a layout, consider using dimensions that meet or exceed the recommended size for touch targets.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@Prezel/feature/home/impl/src/main/java/com/team/prezel/feature/home/impl/main/component/title/PracticeActionCard.kt`
around lines 35 - 57, The clickable area in PracticeActionCard’s PrezelTouchArea
is now only wrapping the action Row, so its touch target may fall below the
recommended 48dp minimum. Keep the visual layout unchanged, but expand the
tappable region by using PrezelTouchArea’s extraTouchPadding on the action row
so the click target meets accessibility guidance. Verify the adjustment in
PracticeActionCard without changing the text/icon arrangement or card padding.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/textfield/PrezelTextFieldState.kt`:
- Around line 226-233: `applyPrezelTextInputPolicy` currently rejects any
`newValue` whose text exceeds `maxLength` by returning `currentValue`, which
causes valid edits and IME updates to be lost once the limit is reached. Update
this function to trim only the excess characters from `newValue.text` instead of
reverting to `currentValue`, and make sure the resulting `TextFieldValue`
preserves or корректly adjusts `selection` and `composition` so cursor position
and ongoing input remain usable.

---

Nitpick comments:
In
`@Prezel/feature/home/impl/src/main/java/com/team/prezel/feature/home/impl/main/component/title/PracticeActionCard.kt`:
- Around line 35-57: The clickable area in PracticeActionCard’s PrezelTouchArea
is now only wrapping the action Row, so its touch target may fall below the
recommended 48dp minimum. Keep the visual layout unchanged, but expand the
tappable region by using PrezelTouchArea’s extraTouchPadding on the action row
so the click target meets accessibility guidance. Verify the adjustment in
PracticeActionCard without changing the text/icon arrangement or card padding.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3ad3243a-bee6-4346-a109-72c0f9afc78a

📥 Commits

Reviewing files that changed from the base of the PR and between 6e79658 and 0cdb337.

📒 Files selected for processing (7)
  • Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/textfield/PrezelTextArea.kt
  • Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/textfield/PrezelTextField.kt
  • Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/textfield/PrezelTextFieldState.kt
  • Prezel/feature/feedback/impl/src/main/java/com/team/prezel/feature/feedback/impl/FeedbackScreen.kt
  • Prezel/feature/feedback/impl/src/main/res/values/strings.xml
  • Prezel/feature/home/impl/src/main/java/com/team/prezel/feature/home/impl/main/component/body/PresentationSheet.kt
  • Prezel/feature/home/impl/src/main/java/com/team/prezel/feature/home/impl/main/component/title/PracticeActionCard.kt

@moondev03 moondev03 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍

@HamBeomJoon HamBeomJoon merged commit ca84f5f into develop Jul 1, 2026
3 checks passed
@HamBeomJoon HamBeomJoon deleted the fix/#150-home-QA branch July 1, 2026 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔧 fix 정상 동작해야 하는 기능의 결함 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

홈 화면 QA 반영

2 participants