fix: 모바일 알림 실행·정확 시각 예약 및 로컬 데이터 복구 안정화 - #585
Merged
Merged
Conversation
16 tasks
12 tasks
jjoonleo
marked this pull request as ready for review
September 25, 2026 09:58
|
Visit the preview URL for this PR (updated for commit ee6c1f8): https://on-time-front-widgetbook--pr-585-lx6437p2.web.app (expires Mon, 28 Sep 2026 10:04:07 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: e53128a376fed0209d449279de9c0d94c83cdd8b |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
현재 PR 범위 — 2026-09-25 갱신
예약 알림·모바일 백업·사용자 설정 보존·준비 시작·일정 저장·초기화 복구의 선행 수정입니다. 현재 head는
ee6c1f8b41fedbafee493791514026eaf669dcb5, 대상은 main입니다.A08 변경으로 이 PR의 DB 스키마는 버전 3입니다. 아래 과거 본문의 “DB schema를 변경하지 않는다” 및 “A07 미구현” 표기는 과거 단계의 설명이며 현재 범위를 설명하지 않습니다. ignored Dart 생성 파일은 커밋하지 않았습니다.
현재 head의 CI
Flutter Testing와 Android Notification Contract가 성공했습니다. Widgetbook PR 배포는 조건상 skipped입니다. CI 통과는 실제 Android/iOS 알림 전달·파일 provider·접근성 검증 완료를 의미하지 않습니다.
후속 PR과 남은 조건
후속 PR #631은 현재 PR의 head에서 시작합니다. 암호화 staging, 정상·손상 DB 복원, migration v4, 시간대 보정, 최근 일정 조회, 이력 삭제, 상세 알림 상태 및 실패 회귀를 포함합니다. #585 병합 후 #631의 base를 main으로 변경하고 그 기준의 CI를 다시 확인해야 합니다.
이 PR 단독으로는 C01/A08의 A09·D02 전체 복원 통합과 U08 전체 화면 조합이 완료되지 않습니다. 실제 기기 수용조건과 전체 iOS 빌드/네이티브 검증도 별도로 남아 있습니다. 미완료 이슈 자동 종료와 스토어 출시는 수행하지 않습니다.
이전 구현 단계의 상세 기록 — 현재 범위와 CI는 위 갱신 내용을 우선합니다
문제와 결과
예약 알림 전달 누락, 백업 파일 저장·복원 실패, 사용자 설정 덮어쓰기와 로컬 데이터 초기화 후 남는 알림을 수정합니다. Android/iOS local-only 제품 경계를 유지하며 알림의 실제 취소 확인과 재시작 복구를 연결했습니다.
변경 내용
DB schema/backup version을 변경하지 않습니다. ignored Dart 생성 산출물은 커밋하지 않았고, tracked localization 출력은 ARB와 함께 갱신했습니다. 전체 감사64개 중26개는 전담 grill 문답을 포함한 상세 이슈가 게시됐으며, 이 PR이64개 모두를 구현했다는 뜻은 아닙니다.
검증
A06 구현
d06474d4c645794644075173f76afb9ff4445047의 최종 전체929개, 신규 경계47개, coverage88.74%(13092/14753), analyze·generated/local-only·Python11·manifest를 통과했습니다. 수정 전 실제 타이머 회귀 실패를 확인했고, 수정 후 실제 timer→서비스→plugin MethodChannel 제출까지 검증했습니다.7개 커밋blob이 검증 freeze와 일치합니다. A06 근거. 실기기 표시 증거는 별도입니다.D03 구현
5f3adf11aaaa3e36d6e4e25c41be6c06e4105480에서 전체872개와 손상 복구 집중71개 테스트가 통과했습니다. coverage87.99%(12253/13926), analyzer, generated/local-only 정책 및 manifest/Python11개 검사 통과.579파일 고정 목록을 재해시했고 제품/test 소스는 동일합니다. QA probe의 대역 설정만 명시적unknown으로 정정한 뒤 analyzer와 host 검증을 재실행했습니다.별도 호스트 프로세스 SIGKILL 후 새 프로세스 복구11지점이 통과했습니다.6개 완료-write 지점과5개 손상 bytes fixture/격리 복구 지점을 검사했으며 provider/deletion adapter는 대역입니다. 모바일 OS kill, write syscall 중단, 전원손실의 증거는 아닙니다. 실제 iOS26.5 SDK Swift typecheck와 Android36/Flutter Kotlin compile도 통과했습니다.
증거: 최종 검증 manifest, 검증 로그. 직전 A15 원격HEAD818e99c9는 Flutter795/87.66% 및 Android release APK CI 통과. 최신 main
c7184b2aFigma 화면을 통합한074d5fd6의 원격 Flutter run35944442338은882개/88.50%(13015/14706)/analyze 통과했습니다. 같은 HEAD Android run35944442335도release APK/manifest를 통과했고 artifact10786008849의실제 APK digest를 D03 CI 검증에 기록했습니다. A06의 원격 CI는 새 HEAD에서 별도로 확인합니다.KO/EN 실제 widget·번들 글꼴·200% text 캡처는 직접 확인했습니다. synthetic receipt이며 기기 OS 화면이 아닙니다.
남은 수용조건
실제 Android/iOS 예약 전달·권한 변경·프로세스 중단 복구·backup exclusion과 picker/provider 교차 플랫폼 복원은 기기 검증이 남았습니다. 일반 손상 DB 복구(D01/D02), 전체 복원 runtime(A09), 준비 시작 원자성(A07) 등 미구현 항목은 연결 이슈에서 계속합니다. 자동검증 통과와 병합·store 업로드·출시는 구별하며 이슈를 자동 종료하지 않습니다.