Skip to content

fix: 반복 일정의 종료 알람이 시작 알람에 지워지지 않게 한다 (163) - #164

Merged
OnlyReadOneBook merged 2 commits into
mainfrom
feat/163
Sep 6, 2026
Merged

OnlyReadOneBook merged 2 commits into
mainfrom
feat/163

Conversation

@OnlyReadOneBook

Copy link
Copy Markdown
Owner

📌 Issues

Closes #163

📎 Work Description

반복 일정에 종료 시각을 넣으면 그 종료 알람이 한 번도 울리지 않았습니다. 시작 알람이 울리는 순간 그날 종료 알람이 지워집니다.

사슬은 이렇습니다. 09:00 시작 알람이 울리면 AlarmReceiver 가 다음 회차를 걸라고 시킵니다. 그때 계산된 「다음」 은 내일 09:00 이고, 알람을 다시 거는 일은 첫 줄이 cancelAlarm 이라 그 일정의 자리를 먼저 비웁니다. 자리는 scheduleId 로만 찾으므로 아직 안 울린 오늘 10:00 종료 알람까지 함께 지워집니다.

자리가 일정마다 시작 하나·종료 하나뿐이라, 회차를 앞당겨 걸면 진행 중인 회차의 남은 알람이 밀려납니다.

장부가 「지금 걸린 것이 어느 회차인가」 를 알게 했습니다. ScheduledAlarm.bookedStartMillis 를 더하고, 걸어 둔 회차에 아직 울릴 것이 남아 있으면 그 회차를 그대로 지킵니다. 되풀이하는 일정은 종료 알람까지 울린 뒤에야 다음 회차로 넘어갑니다.

  • 시작만 울리고 종료가 남았다 → 그 회차를 지킨다(아무것도 하지 않는다)
  • 종료까지 울렸다 → 다음 회차의 시작·종료를 함께 건다
  • 종료가 없는 반복 일정 → 시작이 울리면 바로 다음 회차로 넘어간다

거는 자리를 하나로 모았습니다. 예약(schedule)·다음 회차(scheduleNextOccurrence)·복원(restoreAll)이 모두 book(record, now) 를 지납니다. 「어느 회차가 걸려 있나」 를 아는 곳이 하나뿐이라, 다음에 이 자리를 고치는 사람이 세 곳을 맞출 필요가 없습니다.

복원은 걸어 둔 회차를 지우고 다시 셉니다. 재부팅으로 걸린 것이 전부 사라졌으므로 지키던 회차라도 다시 걸어야 합니다.

📷 Screenshot

화면 변경 없습니다.

💬 To Reviewers

  • 로컬 검증: ktlintFormat · testDebugUnitTest(전 모듈 116개 통과) · :app:lintDebug 초록입니다. ScheduledAlarmTest 에 회차 판정 테스트 6개를 더했습니다.
  • 옛 기록 호환을 테스트로 못 박았습니다. bookedStartMillis 가 없던 판의 JSON 을 읽어도 알람이 사라지지 않습니다.
  • nextTriggerAfter 를 occurrenceToBook 으로 갈음했습니다. 「다음에 울릴 시각」 이 아니라 「지금 걸어야 할 회차」 가 이 값이 답해야 할 질문입니다.
  • 자질구레한 후속 하나를 여기 적어 둡니다. 릴리스 노트 생성기가 PR 본문의 코드 블록 줄까지 항목으로 만들어, 테스터가 받는 노트에 ``` 같은 줄이 섞입니다(이번 배포 1.0-dist.67 에서 실제로 보입니다). 읽는 데 지장은 없어 별도로 다룹니다.

@OnlyReadOneBook
OnlyReadOneBook merged commit 3d9dc1d into main Sep 6, 2026
11 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the feat/163 branch September 6, 2026 05:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: 반복 일정의 종료 알람이 한 번도 울리지 않는다

1 participant