Skip to content

Refactor: v1.3.0 추가 QA 피드백 반영 - #178

Merged
dogmania merged 9 commits into
developfrom
feat/#175-schedule-alarm-manager
Apr 12, 2026
Merged

Refactor: v1.3.0 추가 QA 피드백 반영#178
dogmania merged 9 commits into
developfrom
feat/#175-schedule-alarm-manager

Conversation

@dogmania

@dogmania dogmania commented Apr 12, 2026

Copy link
Copy Markdown
Member

작업내용

  • 과거 기록이 아닌 반복 일정 삭제 시 다이얼로그 렌더링
  • 칩 최대 개수 5개, 점 최대 개수 3개로 변경
  • 과거 기록이 아닌 데이터도 스와이프 삭제

Summary by CodeRabbit

  • 새로운 기능

    • 반복 일정 삭제 시 확인 대화상자 추가(확인 시 삭제 진행).
    • 일정 표시 개수 및 표시기(도트) 확대, 화면 높이에 따른 표시 개수 조정.
  • 버그 수정

    • 일정 삭제 후 목록 갱신 로직 개선으로 상태 일관성 향상.
    • 오늘 날짜 배경 우선 적용 및 칩 높이 고정으로 UI 안정성 개선.
  • Chores

    • 버전 코드 업데이트 (빌드 34)

@dogmania dogmania self-assigned this Apr 12, 2026
@dogmania dogmania added the REFACTOR 코드 개선 label Apr 12, 2026
@coderabbitai

coderabbitai Bot commented Apr 12, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f36ffa90-6c32-4339-9dc5-3f4655a4fab3

📥 Commits

Reviewing files that changed from the base of the PR and between 226ba33 and 436023a.

📒 Files selected for processing (3)
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/contract/CalendarViewModel.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/CalendarDay.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/ScheduleChip.kt

Walkthrough

반복 일정 삭제 확인 다이얼로그와 관련 문자열을 추가하고, CalendarIntent의 삭제 액션명을 DeleteScheduleItem으로 변경했습니다. ViewModel의 삭제 처리에서 낙관적 로컬 마커 롤백 로직을 제거하고 삭제 성공 후 마커를 재조회하도록 변경했으며, 화면과 바텀시트에 삭제 확인 흐름을 연결했습니다.

Changes

Cohort / File(s) Summary
Design System Strings
core/design-system/src/commonMain/kotlin/com/ondot/designsystem/theme/String.kt
반복 일정 삭제 확인용 문자열 상수 2개 추가: DELETE_REPEAT_SCHEDULE_TITLE, DELETE_REPEAT_SCHEDULE_CONTENT
Calendar Intent Contract
feature/calendar/src/commonMain/kotlin/com/ondot/calendar/contract/CalendarIntent.kt
Intent 액션명 DeleteHistoryDeleteScheduleItem으로 재명명(페이로드 동일)
Calendar ViewModel Logic
feature/calendar/src/commonMain/kotlin/com/ondot/calendar/contract/CalendarViewModel.kt
Intent 핸들링을 DeleteScheduleItem으로 갱신; getScheduleMarkersInRange(clearOnError: Boolean = true) 파라미터 추가; deleteSchedule에서 낙관적 로컬 마커 수정/롤백 제거 및 삭제 성공 시 getScheduleMarkersInRange(selectedDate, false)로 재조회 호출
Calendar Screen UI
feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/CalendarScreen.kt
scheduleIdPendingDelete 상태 추가, 바텀시트로부터 삭제 다이얼로그 요청 수신 처리 및 OnDotDialog 조건부 렌더링(취소/확인 동작 연결)
Calendar Bottom Sheet
feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/CalendarBottomSheet.kt
파라미터 onShowScheduleDeleteDialog: (Long) -> Unit = {} 추가; 미과거 반복일인 경우 삭제를 다이얼로그 콜백으로 위임하도록 분기 변경(이전의 enabled = item.isPast 제거)
Calendar Day / Schedule Chip UI
feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/CalendarDay.kt, .../ScheduleChip.kt
CalendarDay: today 배경 우선순위 변경, 표시 가능한 마커 수를 높이 기반으로 동적 계산(표시 개수 증가 및 도트 인디케이터 증가). ScheduleChip: 고정 높이(14.dp) 추가
Version & iOS Project
gradle.properties, iosApp/iosApp.xcodeproj/project.pbxproj
버전 코드 3334로 업데이트(빌드 설정에 반영)

Sequence Diagram

sequenceDiagram
    participant User
    participant CalendarBottomSheet
    participant CalendarScreen
    participant Dialog
    participant ViewModel
    participant Repository

    User->>CalendarBottomSheet: 반복 일정 삭제 제스처
    CalendarBottomSheet->>CalendarScreen: onShowScheduleDeleteDialog(scheduleId)
    CalendarScreen->>CalendarScreen: scheduleIdPendingDelete = scheduleId
    CalendarScreen->>Dialog: 삭제 확인 다이얼로그 표시

    User->>Dialog: 확인(삭제) 클릭
    Dialog->>CalendarScreen: onDelete(scheduleId, isPast=false)
    CalendarScreen->>ViewModel: dispatch DeleteScheduleItem(scheduleId, isPast=false)
    ViewModel->>Repository: deleteSchedule(scheduleId)
    Repository-->>ViewModel: AppResult.Success
    ViewModel->>Repository: getScheduleMarkersInRange(selectedDate, clearOnError=false)
    Repository-->>ViewModel: 마커 데이터 반환
    ViewModel->>CalendarScreen: 상태 업데이트
    CalendarScreen->>User: UI 갱신 (삭제 반영)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive PR 제목이 QA 피드백 반영이라는 일반적인 표현으로, 변경사항의 구체적인 주요 내용(반복 일정 삭제 다이얼로그, UI 제한 조정 등)을 명확히 전달하지 못함. 제목을 구체적으로 개선하세요. 예: 'feat: 반복 일정 삭제 다이얼로그 추가 및 UI 개선' 또는 '반복 일정 삭제 UX 개선 및 칩/점 개수 조정' 같은 변경의 핵심을 명확히 드러내는 표현을 사용하세요.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#175-schedule-alarm-manager

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@feature/calendar/src/commonMain/kotlin/com/ondot/calendar/contract/CalendarViewModel.kt`:
- Around line 423-424: 재조회 실패 시 기존 월 마커가 비워지는 문제는 삭제 성공 후 호출하는
getScheduleMarkersInRange(selectedDate)가 실패 경로에서 schedulesByDate = emptyMap()를
적용하기 때문입니다; 삭제 흐름에서 재조회는 기존 schedulesByDate를 보존해야 하므로 getScheduleMarkersInRange
호출을 변경하여 실패 시 기존 상태를 유지하도록 처리하세요 — 예를 들어 getScheduleMarkersInRange에
preserveOnError: Boolean 매개변수를 추가하거나(기본 false) 삭제 성공 코드에서 try/catch로 래핑해 예외 발생 시
schedulesByDate를 변경하지 않도록 하며, 관련 상태 갱신 로직(특히 schedulesByDate를 설정하는 코드)을 조건부로만
실행하도록 수정하세요.

In
`@feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/CalendarDay.kt`:
- Line 109: The hardcoded cell.markers.take(5) in CalendarDay can overflow the
fixed-height grid from CalendarMonthGrid (which computes rowHeight from
bodyHeight/numberOfWeeks); wrap the marker rendering in BoxWithConstraints (in
CalendarDay) and compute availableHeight from constraints.maxHeight (or use the
rowHeight passed/derived) then compute maxMarkers = floor(availableHeight /
singleMarkerHeight) (ensure >=0) and replace take(5) with take(maxMarkers);
ensure you account for vertical paddings/margins when computing availableHeight
so markers fit without overlap.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 99e1efa1-f290-4f42-a5f5-ef67d7ea2604

📥 Commits

Reviewing files that changed from the base of the PR and between b2cf4ef and 226ba33.

📒 Files selected for processing (8)
  • core/design-system/src/commonMain/kotlin/com/ondot/designsystem/theme/String.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/contract/CalendarIntent.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/contract/CalendarViewModel.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/CalendarScreen.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/CalendarBottomSheet.kt
  • feature/calendar/src/commonMain/kotlin/com/ondot/calendar/ui/component/CalendarDay.kt
  • gradle.properties
  • iosApp/iosApp.xcodeproj/project.pbxproj

@dogmania
dogmania merged commit b925015 into develop Apr 12, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

REFACTOR 코드 개선

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant