# Issue #434 트러블슈팅 기록: 대시보드 세션 시작 시간이 `Unknown`으로 표시됨 ## 기준 시점 - 2026-03-24 KST - 대상 화면: UserFront 대시보드 상단 세션 정보 칩 ## 증상 - 로그인 후 대시보드의 세션 시작 시간이 `Unknown` 또는 `알 수 없음`으로 표시됨 - 특히 동일 브라우저의 cookie session 승격 경로에서 재현됨 ## 원인 1. 기존 대시보드는 저장된 로컬 토큰만 파싱해 `iat` 또는 `auth_time`을 읽었습니다. 2. cookie mode에서는 `AuthTokenStore.setCookieMode()`가 로컬 토큰을 제거하고 cookie 플래그만 유지합니다. 3. 그 결과 대시보드는 파싱할 JWT가 없어 항상 fallback 문구로 떨어졌습니다. ## 수정 방향 1. Backend `/api/v1/user/me` 응답에 Kratos `sessions/whoami`의 `authenticated_at` 값을 `sessionAuthenticatedAt`으로 포함합니다. 2. UserFront 대시보드는 세션 시각 계산 시 다음 우선순위를 사용합니다. - JWT의 `iat` 또는 `auth_time` - profile의 `sessionAuthenticatedAt` 3. 두 값이 모두 없을 때만 `ui.userfront.session.unknown` fallback을 사용합니다. ## 반영 파일 - `backend/internal/domain/auth_models.go` - `backend/internal/handler/auth_handler.go` - `backend/docs/openapi.yaml` - `userfront/lib/features/profile/data/models/user_profile_model.dart` - `userfront/lib/features/dashboard/domain/session_time_resolver.dart` - `userfront/lib/features/dashboard/presentation/dashboard_screen.dart` ## 회귀 테스트 - Backend - `backend/internal/handler/auth_handler_session_profile_test.go` - UserFront - `userfront/test/dashboard_session_time_resolver_test.dart` - `userfront/test/dashboard_screen_smoke_test.dart` ## 검증 명령 - `GOCACHE=/tmp/go-build go test ./internal/handler -run 'TestGetMe_IncludesSessionAuthenticatedAt' -count=1` - `flutter test test/dashboard_session_time_resolver_test.dart` - `flutter test test/dashboard_screen_smoke_test.dart` ## 남은 참고사항 - Hydra introspection fallback만 사용되는 토큰 경로에서는 `sessionAuthenticatedAt`이 비어 있을 수 있습니다. - 이 경우에도 JWT claim이 없으면 기존 fallback 문구를 유지합니다.