- contentInset: always→never — CSS safe-area(env inset)와 겹쳐 상하단 여백이
이중으로 잡히던 문제 해결
- AdBanner 를 q-footer 안(탭바 위)으로 이동 — 콘텐츠가 광고에 가리지 않고
레이아웃이 footer 높이를 정상 예약. 유료 티어는 배너 숨김으로 공간 회수.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 매칭 버튼: 신청 후 "진행중" 표시, 무료 소진(429) 안내
- 헤더 알림 벨: 받은 매칭 신청 목록 + 수락/거절
- 실시간 알림: STOMP /topic/users/{id} 구독(신청/수락/거절/만료 토스트)
- 수락 시 1:1 매칭 채팅(MatchChatDialog, /topic/matches/{id})
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
마커가 겹쳐도 선택되도록 지도 클릭 지점에서 가장 가까운 스팟을 선택.
현재위치(Geolocation) 버튼은 스팟 선택 간섭 소지로 현 단계에서 비활성.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
체크인 성공 시 /api/spots/{id}/ai-mates 를 호출해 사이좋게 지낼 만한
강아지를 궁합점수·이유와 함께 표시. 로딩 스피너·빈 상태 처리 포함.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
홈 지도를 Kakao Maps JS SDK 로 교체. ZoomControl(확대/축소)과
현재위치 버튼(@capacitor/geolocation → 파란 점 표시) 추가.
naverMap.ts / NaverMap.vue 는 미사용으로 보존.
시뮬레이터에서 렌더·현재위치 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
LoginPage 가 MainLayout(QLayout) 밖 독립 라우트라 QPage 조상이 없어
"QPage needs to be a deep child of QLayout" 로 빈 화면이 됐다.
자체 QLayout/QPageContainer 로 감싼다. (관리자 로그인은 이미 래핑됨)
시뮬레이터 실행으로 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 대시보드(/admin/dashboard, 기본 랜딩): 요약 카드(총회원·금일 신규/탈퇴·DAU/WAU/MAU),
접속자 추이(일/주/월 토글), 티어별 회원수, 시군구 지역 분포 — 모두 체크인 기반
- 회원 상세(/admin/members/:id): 프로필 + 강아지/체크인/매칭/구독 이력, 목록에서 상세 버튼
- adminStats API 모듈, 좌측 메뉴에 대시보드 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- navermap_authFailure 전역 콜백 등록 → 잘못된 키/미등록 도메인 시 지도 폴백에 원인 표시
- 키만 넣으면 실좌표 마커가 렌더되도록 정비
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- ChatDialog: 히스토리 로드 + 실시간 송수신, 내 메시지 우측 정렬, 연결상태 표시
- lib/chatSocket: STOMP 클라이언트(브로커 ws, Bearer 인증, 자동 재연결)
- api/chat 히스토리, HomePage 스팟 채팅 버튼
- @stomp/stompjs 의존성 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- dogs 스토어: 내 강아지 로드/등록/수정/삭제, 대표견(currentDog)
- ProfilePage: 강아지 등록/선택/삭제, 성향 태그 편집·저장, 회원 티어 표시
- HomePage 체크인/매칭 주체를 대표견으로 전환(미등록 시 안내)
- http 클라이언트 put/del 추가, 임시 session 스토어 제거
- 로그아웃 시 강아지 상태 리셋, Dialog 플러그인 등록
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 로그인 화면: 구글(GIS) 버튼 + 애플 버튼 + 개발용 로그인(local)
- 인증 스토어(Pinia): 토큰 복구/로그인/로그아웃, 회원 티어를 광고·매칭 제어에 반영
- HTTP 클라이언트: Authorization Bearer 자동 첨부, 401 시 토큰 폐기 후 로그인 이동
- 라우터 가드: 미로그인 시 보호 경로 → /login (소셜 로그인 전용 앱)
- 헤더 회원 메뉴/로그아웃, 체크인 주체를 로그인 회원으로 전환
- 토큰 localStorage 저장(웹/Capacitor 공용)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 네이버 지도 JS SDK 동적 로더(싱글턴) + @types/navermaps 타입
- NaverMap 컴포넌트: 스팟 실좌표 마커, 클릭 시 스팟 선택/정보창, 선택 시 중심 이동
- HomePage 지도 자리를 네이버 지도로 교체, 마커 선택 → 해당 스팟 한줄평/메이트 로드
- 키(VITE_NAVER_MAP_CLIENT_ID) 미설정 시 폴백 처리
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- VITE_API_BASE_URL 기반 fetch 클라이언트 및 ApiError 처리
- api/spots, api/matches 타입드 모듈
- HomePage: 스팟/한줄평/메이트 실제 로드, 체크인·매칭 신청 API 연동
- 임시 세션 스토어(인증 도입 전, userId/dogId)
- 로딩/에러/빈 상태 처리
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 하늘색 파스텔 브랜드 테마(quasar-variables)
- 스팟 지도/체크인/한줄평/메이트 홈 화면
- 강아지 프로필 + 댕비티아이 성향 태그 화면
- 구독 티어 스토어(Pinia) 및 FREE 티어 배너 광고(v-if 제어)
- Capacitor(iOS/AOS) 설정, 빌드/타입체크 통과
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>