fix(space): 배경 asset fallback 경로와 scene alias 해석 보강

맥락:
- /space 에서 forest 배경이 remote manifest asset 대신 기본 이미지로 조용히 fallback 될 수 있었다.
- scene key alias 와 manifest 실패 상태가 코드상 드러나지 않아 원인 추적이 어려웠다.

변경사항:
- media scene asset key 를 alias-aware 하게 정규화하고 asset source(fallback|remote) 메타를 추가했다.
- useMediaCatalog 가 remote manifest 실패와 fallback 사용 여부를 노출하도록 보강했다.
- SpaceWorkspaceWidget 에서 manifest 실패와 scene fallback 사용을 진단 로그/상태 메시지로 남기도록 정리했다.
- docs/work.md, docs/90_current_state.md, docs/session_brief.md 를 이번 작업 기준으로 갱신했다.

검증:
- npx tsc --noEmit

세션-상태: /space 배경 asset lookup 과 manifest fallback 진단을 보강했다.
세션-다음: forest/green-forest manifest 변형을 실제 브라우저에서 QA 한다.
세션-리스크: alias 목록 밖의 legacy scene id 는 추가 정규화가 필요할 수 있다.
This commit is contained in:
2026-03-11 13:35:44 +09:00
parent 9811134d8a
commit 4717bb3a1a
7 changed files with 163 additions and 123 deletions

View File

@@ -1,9 +1,13 @@
# 90. Current State
Last Updated: 2026-03-05
Last Updated: 2026-03-11
## DONE
- `/space` 배경 asset 해석 안정화:
- media manifest scene key를 scene alias까지 정규화해 `green-forest``forest`를 동일 asset으로 해석
- scene/sound asset에 `source(fallback|remote)` 메타를 추가해 실제 fallback 사용 여부를 구분 가능하게 정리
- remote manifest load 실패 시 error 상태를 노출하고, `/space`에서 manifest 실패/scene fallback 사용을 진단 로그로 남기도록 보강
- Focus 피드백 채널 단일화:
- HUD 내부 status line을 제거하고 상단 중앙 고정 토스트로 통합
- Notes 저장/Undo, Goal 전환, 잠금 안내 피드백이 동일 위치에서 노출
@@ -153,12 +157,14 @@ Last Updated: 2026-03-05
## NEXT
1. Goal Complete Sheet 플로우(완료 → 다음 한 조각) 전환 감도/카피 마감
2. Notes(쓰기) / Inbox(읽기·정리) 복귀 흐름과 30초 숨고르기 톤 정리
1. `/space`에서 `forest` / `green-forest` manifest 변형을 실제 브라우저 기준으로 QA
2. Goal Complete Sheet 플로우(완료 → 다음 한 조각) 전환 감도/카피 마감
3. Stage 가독성/모션/레이어 폴리시 최종 통일
## RISKS
- remote manifest 실패 시 원인 진단은 가능해졌지만, 사용자용 복구 액션 UI는 아직 없다
- alias 목록에 없는 legacy scene id가 추가되면 같은 fallback 문제가 재발할 수 있다
- `npm run build`는 네트워크 제한 시 Google Font fetch 실패 가능
- localStorage 포맷 변경 시 이전 세션 저장값과의 호환성 이슈 가능
- Scene 추천값과 실제 사용자 선호가 어긋나면 자동 적용 체감 품질이 낮아질 수 있음
@@ -182,6 +188,14 @@ Last Updated: 2026-03-05
## CHANGED FILES
- (이번 세션)
- `src/entities/media/model/types.ts`
- `src/entities/media/model/resolveMediaAsset.ts`
- `src/entities/media/model/useMediaCatalog.ts`
- `src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx`
- `docs/work.md`
- `docs/90_current_state.md`
- `docs/session_brief.md`
- (최근 workflow 반영)
- `src/widgets/space-workspace/ui/FocusTopToast.tsx`
- `src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx`