2026-06-26 PinPoint 작업일지입니다. 오늘은 2건의 작업을 진행했습니다.

전역 `layout`, 로그인, 세션 타임아웃

현상/기능

  • 로그인 중 초기화면으로 이동, 재로그인 시 대시보드만 표시(사이드바/헤더 없음), 새로고침하면 정상

작업

  • 파일
  • 원인: `RootLayout`이 서버 `x-pathname`으로 레이아웃을 분기 — Next.js App Router는 클라이언트 네비 시 루트 레이아웃이 재실행되지 않아 `/login`에서 진입한 standalone 트리가 `/dashboard`에도 유지됨. `SessionTimeoutHandler`가 로그인 중 세션 refetch 시 authenticated→unauthenticated로 `/` 리다이렉트
  • `src/components/layout/` — `usePathname` 기반 클라이언트 레이아웃 분기 (신규)
  • `src/app/` — 단일 HTML 트리 + `AppShell` 위임
  • `src/components/` — 로그인 성공 시 `window.location.href="/dashboard"`
  • `src/components/` — loading·인증 페이지에서 홈 리다이렉트 제외

`landing-portfolio-management`, R2 연동 API 전반

현상/기능

  • 서버 배포 후 `/api/landing/portfolio/admin` 500, `FetchError`, `/avatars/01.png` 404

작업

  • 파일
  • 원인: `src/lib/`의 `@aws-sdk/client-s3` 정적 import가 standalone 빌드에서 라우트 모듈 로드 실패 → Next.js plain text 500 (공개 `/api/landing/portfolio`는 r2 미사용으로 정상)
  • `src/lib/` — S3 SDK를 호출 시점 dynamic import로 변경 ( 패턴)
  • `src/components/` — 존재하지 않는 `/avatars/01.png` 제거, 이니셜 AvatarFallback만 사용
  • 배포 필요: `npm run build` 후 PM2 재시작, 서버에 `@aws-sdk/client-s3`·`@aws-sdk/s3-request-presigner` 설치 확인 (`npm ci --omit=dev`)