feat: AtchaV2 Phase 13 — 알람 이후 세션 수명 완결 (departed + stopIntent + 클라 자체 만료) - #351
Merged
Conversation
- docs/planning/atcha-v2-post12-roadmap.md: 전수 갭 분석 정본, Phase 13~18 로드맵, 서버 트랙 S1~S4(질문 리스트 포함), 미확정 입력 원장 현재 상태 + #11·#12 신설, 제품 결정 트랙(보류·반대 판정), 신뢰 UX 원칙, 수용 리스크 - docs/prompts/atcha-v2-session-lifecycle-prompt.md: Phase 13(알람 이후 세션 수명 완결 — stopIntent·departed·자동 소멸·클라 만료·배너 3단계·isStale) + Phase 14(재실행 정합성 — 스냅샷 영속화·고아 LA 재부착·카드 복원·도보 시간 클라 반영·정합성 일괄) 구현 프롬프트 - docs/prompts/atcha-v2-auto-verification.md: 자동 검수 규약 — 사람 검수를 computer use로 대체(에이전트 직접 수행·스크린샷 증적), 실기기 잔여만 이관. 실측 제약(AXPress·ScreenIsLocked·simctl push 거부) 내장 - CLAUDE.md: 미완 상태 절 정정(base URL 실주소·plist 번들 ID 불일치·LA 구축 완료), 아키텍처 다이어그램에 CoreAlarm·CoreLiveActivity·AtchaWidget 반영, 새 문서 포인터 추가 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…체 만료)
- Domain: LastTrainSessionPhase.departed 신설, AlarmTiming 만료 유예(출발+60초)·isSessionExpired 순수 함수
- CoreLiveActivity: LastTrainSessionStatus.departed (wire 안전 — 동일 바이너리 배포·방어값 정책)
- CoreAlarm: stop 버튼("확인")에 LiveActivityIntent 주입 지점 확장 — 주입 실패 시 인텐트 없이 재시도 폴백
- App: AlarmAcknowledgeIntent(발화 확인 훅) + AlarmSessionLifecycleService.alarmAcknowledged()
→ LA departed 전환 + 출발+10분 자동 소멸 예약(.after) — 앱이 깨지 않아도 잠금화면에서 소멸
- AlarmSyncService: sync 진입 시 expireLocallyIfNeeded — 유예 경과 세션은 refresh 결과와 무관하게
로컬 sessionEnded 처리, 단 미래 출발 시각 반환 시 서버 우선(만료 취소), 만료 기록으로 2차 방어
- 홈 배너 3단계 전이: 카운트다운 → "지금 출발하세요"(0분 문구 제거) → 유예 경과 시 배너 제거 +
"지난 막차" 카드(비활성 톤, DSRouteCard muted tone 신설) + 알람 버튼 숨김
- 위젯: departed 렌더("지금 출발하세요", imminent 척도) + isStale 최신성 경고("시간이 지났어요")
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 tasks
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.
요약
LastTrainSessionPhase.departed신설,AlarmTiming만료 유예(출발+60초)·isSessionExpired순수 함수AlarmAcknowledgeIntent(발화 확인 훅) → LA departed 전환 + 출발+10분 자동 소멸 예약(앱이 깨지 않아도 잠금화면에서 소멸)AlarmSyncService: sync 진입 시expireLocallyIfNeeded— 유예 경과 세션은 refresh 결과와 무관하게 로컬 sessionEnded 처리(미래 출발 시각 반환 시 서버 우선)검증
docs/prompts/atcha-v2-session-lifecycle-prompt.md검수 절)🤖 Generated with Claude Code