docs(product): app atmosphere entry spec 추가

This commit is contained in:
2026-03-16 11:04:02 +09:00
parent 3c5154178d
commit 56385ec2eb
4 changed files with 518 additions and 71 deletions

View File

@@ -18,111 +18,89 @@
## 작업 1
- 제목: `Paused Session Re-entry` Session Routing Contract
- 제목: `/app` Atmosphere Entry Shell
- 목적:
- `18_paused_session_reentry_spec.md` 기준으로 running / paused / break 상태의 route policy를 코드에 고정한다.
- `/app``/space`가 같은 session state를 두고 서로 다른 해석을 하지 않게 만든다.
- `19_app_atmosphere_entry_spec.md` 기준으로 `/app` no-session 상태를 `goal + duration + atmosphere` 중심의 premium entry screen으로 재설계한다.
- entry에서 scene/sound의 감각 품질을 다시 살리되 planner/dashboard 톤으로 흐르지 않게 만든다.
- 변경 범위:
- current session route gating
- `/app` 진입 정책
- `/space` direct re-entry 정책
- no-session `/app` shell
- atmosphere dummy 12개
- goal input
- duration input
- 4x3 atmosphere grid
- primary CTA
- 제외 범위:
- visual redesign 직접 착수 금지
- takeover flow UI 구현 금지
- weekly review 집계 확장 금지
- paused resume gate 재설계 금지
- weekly review 상세 IA 변경 금지
- server contract 변경 금지
- 완료 조건:
- `running focus -> /space`
- `running break -> /space`
- `paused focus -> /app`
- `no session -> /app`
규칙이 코드와 문서에서 일치한다
- current session이 없을 때만 새 entry shell이 보인다
- goal + duration + selected atmosphere가 start surface 안에서 명확히 읽힌다
- 12개 dummy atmosphere가 4열 그리드로 배치된다
- 진행 상태:
- 완료
- 대기
- 검증:
- source-of-truth 문서 대조
- `/app` no-session browser QA
- 커밋 힌트:
- feat(flow): session routing contract 정리
- feat(app): atmosphere entry shell 1차 구현
## 작업 2
- 제목: `/app` Paused Resume Gate
- 제목: `Custom Duration Contract`
- 목적:
- paused session 사용자가 `/app`에서 현재 상태를 이해하고, 한 번의 결정으로 다시 들어가게 만든다.
- `/app`의 분 단위 duration 입력을 실제 세션 길이로 반영한다.
- 변경 범위:
- paused resume card
- `이어서 몰입하기`
- `한 조각 다시 잡기`
- quiet `주간 review 보기`
- web start payload
- server startSession contract
- break duration 정책
- `/space` timer 연동
- 제외 범위:
- new start takeover flow 금지
- bulk visual redesign 금지
- weekly review recommendation 확장 금지
- atmosphere personalization 금지
- 완료 조건:
- paused 사용자가 2초 안에 다음 행동을 이해할 수 있
- review는 보이지만 resume보다 앞서지 않는
- `70분` 같은 값이 실제 focus duration으로 반영된
- break duration이 정책 기준으로 계산된
- 진행 상태:
- 완료
- 대기
- 검증:
- `/app` paused state browser QA
- start -> `/space` -> timer duration 확인
- 커밋 힌트:
- feat(app): paused resume gate 추가
- feat(flow): custom duration contract 연결
## 작업 3
- 제목: `/space` Auto-Resume Handoff
- 제목: `Weekly Review Dock Reposition`
- 목적:
- `/app`에서 explicit continue를 눌렀다면 `/space`에서 다시 start를 누르지 않게 만든다.
- `/app` entry shell 안에서 weekly review를 start를 방해하지 않는 quiet secondary dock로 재배치한다.
- 변경 범위:
- `/app -> /space` handoff
- resume trigger
- re-entry transition
- `/app` review teaser placement
- desktop/mobile responsive placement
- review return hint placement
- 제외 범위:
- takeover flow 금지
- break semantics 재정의 금지
- `/stats` IA 변경 금지
- paused resume gate 재설계 금지
- 완료 조건:
- `/app -> /space -> start` 이중 클릭이 사라진
- explicit continue 이후에는 `/space`에서 바로 실행 상태로 들어간
- review entry는 항상 발견 가능하지만 start보다 앞서지 않는
- no-session shell과 paused gate에서 위계가 일관된
- 진행 상태:
- 완료
- 대기
- 검증:
- paused -> continue 브라우저 QA
- `/app` no-session / paused browser QA
- 커밋 힌트:
- feat(space): paused auto-resume handoff 연결
- fix(app): review dock 위치 재정렬
## 작업 4
- 제목: `Paused Session Takeover Flow`
- 목적:
- paused session 위에서 새 목표를 시작하고 싶을 때 상태 오염 없이 명시적으로 전환하게 만든다.
- 변경 범위:
- takeover confirm sheet
- close-and-start-new 경로
- silent abandon 방지
- 제외 범위:
- weekly review 확장 금지
- visual redesign 직접 착수 금지
- 완료 조건:
- paused 상태에서 direct new start는 불가능하다
- 사용자는 기존 paused session을 어떻게 처리할지 먼저 고른다
- 진행 상태:
- 완료
- 검증:
- paused -> new start 브라우저 QA
- 커밋 힌트:
- feat(app): paused session takeover flow 추가
## 작업 5
- 제목: `Core Loop Alignment Audit` browser slice
- 목적:
- paused re-entry까지 포함한 핵심 흐름을 브라우저에서 실제로 검증한다.
- `/app` entry shell까지 포함한 핵심 흐름을 브라우저에서 실제로 검증한다.
- 변경 범위:
- `/app` first entry
- `/app` no-session
- `/app` paused resume
- `/app -> /stats -> /app`
- `/space` pause / return / next beat / complete
- `/space` complete -> setup -> weekly review teaser
- 제외 범위:
- bulk visual redesign 금지
- new feature 추가 금지
- 완료 조건:
- browser QA findings가 ledger에 반영된다