feat(space): 종료 결과 모달과 current session thought 복원 추가

This commit is contained in:
2026-03-16 20:08:50 +09:00
parent 6194c19f3b
commit 1d2ce85cfd
10 changed files with 401 additions and 79 deletions

View File

@@ -77,6 +77,15 @@ Last Updated: 2026-03-16
- timer가 `00:00`에 도달하면 same-session modal이 자동으로 열리고, `완료하고 종료하기 / 10분 더` 두 경로만 제안한다
- `10분 더`를 누르면 현재 focus phase에 10분이 추가되어 바로 running으로 돌아가고, 다시 시간이 끝나면 같은 modal이 다시 열린다
- server와 web 모두 `extend-phase` 계약 기준으로 동작한다
- `10분 더`는 남은 시간만이 아니라 `focusDurationSeconds`도 함께 늘려 이후 결과 모달과 review의 집중 시간이 맞도록 정리됐다
- `/space` completion result modal 추가:
- `timer-complete -> 완료하고 종료하기``End Session -> 여기서 마무리하기`는 즉시 `/app`으로 가지 않고 중앙 결과 모달을 먼저 연다
- 결과 모달에는 `집중한 시간`, `완료한 목표`, `이번 세션 thought capsule`이 표시된다
- 결과 모달이 떠 있는 동안 `/space` 자동 `/app` redirect는 막히고, `확인하고 돌아가기`에서만 `/app`으로 이동한다
- current-session thought capsule 서버 복원:
- `/space` thought는 public `focusSessionId` 없이 auth 기반으로 현재 세션에 서버가 내부 연결한다
- `/space` 진입 시 `GET /api/v1/focus-sessions/current/thoughts`로 현재 세션 thought 목록을 복원한다
- 브라우저를 껐다 켜도 current session이 살아 있으면 같은 thought 목록을 다시 읽을 수 있다
- `/space` intent HUD collapsed / expanded 재설계:
- 상시 큰 goal 카드 대신 idle에서는 goal 1줄만 남는 collapsed glass rail 구조로 변경
- hover / focus / rail tap에서만 expanded card로 열리며, 이때만 microStep과 `이번 목표 완료` 액션이 노출됨

View File

@@ -14,10 +14,10 @@ Last Updated: 2026-03-16
## 현재 우선순위
1. `/space` current-session-only cleanup
2. `Core Loop Alignment` browser audit
3. `Weekly Review` carry-forward 고도화
4. `Premium Ambience` polish
1. `/space` completion result modal browser QA
2. `/space` current-session-only cleanup
3. `Core Loop Alignment` browser audit
4. `Weekly Review` carry-forward 고도화
## 최근 세션 상태
@@ -87,6 +87,14 @@ Last Updated: 2026-03-16
- `00:00`이 되면 `완료하고 종료하기 / 10분 더` 모달이 자동으로 열린다.
- `10분 더`는 server `extend-phase` 계약을 타고 현재 focus phase를 10분 연장한 뒤 다시 running으로 이어진다.
- 그래서 사용자는 recovery 상태에서도 `계속 / 다시 잡기 / 마무리` 중 하나를 바로 고를 수 있다.
- `/space` 종료 결과 모달이 추가됐다.
- `완료하고 종료하기``여기서 마무리하기`는 바로 `/app`으로 가지 않고 중앙 결과 모달을 먼저 띄운다.
- 결과 모달에는 `집중한 시간`, `완료한 목표`, `이번 세션 thought capsule`이 들어간다.
- 닫기 전까지 `/space`는 결과 모달 상태로 유지되고, `확인하고 돌아가기`에서만 `/app`으로 이동한다.
- thought capsule은 서버가 현재 세션에 내부 귀속한다.
- 클라이언트는 `focusSessionId`를 보내지 않는다.
- `/space`는 current session이 살아 있으면 server `current thoughts` API로 same-session thought 목록을 복원한다.
- 그래서 브라우저 재시작 후에도 같은 세션이라면 결과 모달에 같은 thought들이 포함된다.
- `/space` 목표 카드를 collapsed / expanded 구조로 재설계했다.
- idle에서는 goal 1줄만 남는 얇은 glass rail로 줄였다.
- microStep과 `이번 목표 완료`는 expanded 상태에서만 드러난다.

View File

@@ -18,6 +18,31 @@
## 작업 1
- 제목: `/space` completion result modal browser QA
- 목적:
- 세션 완전 종료 직후 결과 모달이 자연스럽게 뜨는지 확인한다.
- timer-complete, End Session finish, 10분 더 이후 재종료, thought 복원 흐름을 실제 브라우저에서 검증한다.
- 변경 범위:
- `/space` timer-complete finish
- `/space` End Session finish
- current-session thoughts restore
- 결과 모달 -> `/app`
- 제외 범위:
- 새로운 stats/weekly review 기능 추가 금지
- 완료 조건:
- 종료 직후 중앙 결과 모달이 보인다
- 결과 모달에 집중 시간/목표/thought가 맞게 보인다
- 결과 모달 확인 후에만 `/app`으로 이동한다
- 브라우저 재실행 뒤 current session이 살아 있으면 thought capture가 유지된다
- 진행 상태:
- 다음 작업
- 검증:
- manual browser QA
- 커밋 힌트:
- docs(qa): completion result modal browser audit 기록
## 작업 2
- 제목: `/app` Atmosphere Entry Shell
- 목적:
- `docs/screens/app/current/19_app_atmosphere_entry_spec.md` 기준으로 `/app` no-session 상태를 `goal + duration + atmosphere` 중심의 premium entry screen으로 재설계한다.
@@ -44,7 +69,7 @@
- 커밋 힌트:
- feat(app): atmosphere entry shell 1차 구현
## 작업 2
## 작업 3
- 제목: `Custom Duration Contract`
- 목적:
@@ -61,13 +86,13 @@
- `70분` 같은 값이 실제 focus duration으로 반영된다
- break duration이 정책 기준으로 계산된다
- 진행 상태:
- 다음 작업
- 구현 완료
- 검증:
- start -> `/space` -> timer duration 확인
- 커밋 힌트:
- feat(flow): custom duration contract 연결
## 작업 3
## 작업 4
- 제목: `Weekly Review Dock Reposition`
- 목적:
@@ -89,7 +114,7 @@
- 커밋 힌트:
- fix(app): review dock 위치 재정렬
## 작업 4
## 작업 5
- 제목: `Core Loop Alignment Audit` browser slice
- 목적: