Conversation
- /api/delete-account Route Handler 추가 (Service Role Key로 auth 유저 완전 삭제) - useAuthStore에 deleteAccount 액션 추가 - UserProfileModal 하단에 회원 탈퇴 UI 추가 - '탈퇴' 직접 입력 후 버튼 활성화되는 이중 확인 방식 - 탈퇴 완료 후 자동 로그아웃 및 메인 페이지 이동
- userId를 body로 받던 방식 제거 (타인 계정 삭제 취약점) - Authorization 헤더의 액세스 토큰으로 실제 유저 검증 후 삭제 - 클라이언트에서 supabase.auth.getSession()으로 토큰을 헤더에 포함하여 전송
…ld-time failure Next.js evaluates module-level code at build time, causing "supabaseKey is required" error when SUPABASE_SERVICE_ROLE_KEY is not available during the build phase. Moving createClient() inside the DELETE handler ensures it runs only at request time.
…O and user engagement
…improved user experience
- GachaPostDetail: 상단 메인 이미지 배경색 bg-black → bg-gray-50 (페이지 배경과 통일) - GachaPostEditor: Supabase 세션 비동기 로드 완료 전 관리자 체크로 인한 무한 업로드/저장 상태 버그 수정 (authLoading 완료 후 판단하도록 변경)
- adminChecked ref 추가로 관리자 체크를 최초 1회만 수행하도록 변경 - 다른 창으로 이동 후 복귀 시 onAuthStateChange가 재발생해 profile이 순간 null이 되어 관리자 체크 useEffect가 재실행되던 문제 수정 - 렌더 단의 is_admin 체크도 adminChecked 이후에만 적용되도록 가드 추가
- ISR 캐싱 적용: 메인 페이지(5분), 가챠보드(1분) - 카카오맵 스크립트를 afterInteractive로 변경해 초기 렌더 차단 제거 - GachaPostEditor를 dynamic import로 분리해 어드민 번들 지연 로드 - GachaPostDetail 첫 번째 이미지 중복 렌더링 제거 - 리뷰 쿼리에 limit(10) 추가 - supabase.ts, Map.tsx의 debug console.log 제거 - useAuthStore: 동일 유저+프로필 로드 완료 시 SIGNED_IN 재처리 생략으로 페이지 이동 시 불필요한 로딩 제거 - Header: 모바일 로고 폰트 축소, 사이드바 네비게이션으로 개편
- Vitest + jsdom + @testing-library/react 설치 및 설정 - vitest.config.ts 추가 (@경로 alias 포함) - src/lib/formatters.ts: formatDate, formatPrice 유틸 함수 분리 - GachaBoardPage, GachaPostDetail에서 인라인 함수 제거 후 공유 유틸 사용 - 테스트 파일 3개 추가 (총 21개 테스트): - wsrvLoader.test.ts: URL 변환, 파라미터, 특수문자 인코딩 - formatters.test.ts: 날짜 형식, 가격 표시 (일본/한국/미정) - useAuthStore.test.ts: 상태 전환, 프로필 로드 성공/실패 - package.json에 test, test:watch 스크립트 추가
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
as any 대신 User 타입 및 vi.mocked() 사용으로 빌드 에러 해결
github-script uses Issues API for PR comments — requires issues: write
github-script fails silently on rerun — gh CLI is more reliable and works correctly regardless of event context
PR #6 — test: Vitest 테스트 자동화 도입3rdflr/gacha_map ·
|
PR #6 — test: Vitest 테스트 자동화 도입3rdflr/gacha_map ·
|
요약
vitest.config.ts설정GachaBoardPage,GachaPostDetail에 각각 인라인으로 존재하던formatDate,formatPrice함수를src/lib/formatters.ts로 추출 — 중복 제거 및 테스트 가능 구조로 개선wsrvLoader.test.tsformatters.test.tsuseAuthStore.test.tsnpm test— 전체 테스트 1회 실행npm run test:watch— 파일 변경 감지 자동 재실행테스트 체크리스트
npm test실행 시 21개 테스트 전부 통과 확인formatDate,formatPrice기존 동작 유지 확인🤖 Generated with Claude Code