Commit Graph

18 Commits

Author SHA1 Message Date
sb 35d26e3563 fix(ios): 상단 이중 인셋 제거(contentInset never) + 광고 배너를 footer 안으로
CI / build (push) Failing after 13m33s
- contentInset: always→never — CSS safe-area(env inset)와 겹쳐 상하단 여백이
  이중으로 잡히던 문제 해결
- AdBanner 를 q-footer 안(탭바 위)으로 이동 — 콘텐츠가 광고에 가리지 않고
  레이아웃이 footer 높이를 정상 예약. 유료 티어는 배너 숨김으로 공간 회수.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 15:37:08 +09:00
sb 16d7cf4332 chore: 체크인 옆 스팟 채팅 버튼 제거 (매칭 1:1 채팅만 유지)
CI / build (push) Failing after 11m53s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 15:08:50 +09:00
sb cc3a0fa836 feat: 매칭 플로우 프론트 (진행중·알림·수락/거절·1:1 채팅)
CI / build (push) Failing after 14m12s
- 매칭 버튼: 신청 후 "진행중" 표시, 무료 소진(429) 안내
- 헤더 알림 벨: 받은 매칭 신청 목록 + 수락/거절
- 실시간 알림: STOMP /topic/users/{id} 구독(신청/수락/거절/만료 토스트)
- 수락 시 1:1 매칭 채팅(MatchChatDialog, /topic/matches/{id})

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 15:04:21 +09:00
sb 12dd26c47f feat: 지도 클릭 시 최근접 스팟 선택 + 현재위치 기능 제거
CI / build (push) Failing after 13m37s
마커가 겹쳐도 선택되도록 지도 클릭 지점에서 가장 가까운 스팟을 선택.
현재위치(Geolocation) 버튼은 스팟 선택 간섭 소지로 현 단계에서 비활성.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 14:04:56 +09:00
sb 0f77f71869 feat: 산책 메이트에서 본인 강아지 제외 (mates 에 userId 전달)
CI / build (push) Failing after 15m8s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 13:58:30 +09:00
sb 56255c0ae6 feat: 체크인 후 AI 궁합 추천 표시
CI / build (push) Failing after 13m34s
체크인 성공 시 /api/spots/{id}/ai-mates 를 호출해 사이좋게 지낼 만한
강아지를 궁합점수·이유와 함께 표시. 로딩 스피너·빈 상태 처리 포함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 13:44:46 +09:00
sb 0e69218710 feat: 지도 카카오로 전환 + 확대/축소·현재위치 (네이버 코드 유지)
CI / build (push) Failing after 11m24s
홈 지도를 Kakao Maps JS SDK 로 교체. ZoomControl(확대/축소)과
현재위치 버튼(@capacitor/geolocation → 파란 점 표시) 추가.
naverMap.ts / NaverMap.vue 는 미사용으로 보존.
시뮬레이터에서 렌더·현재위치 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 13:26:42 +09:00
sb b5f394a7bc fix: 로그인 화면 QLayout 래핑 (QPage 렌더 오류 → 빈 화면 수정)
CI / build (push) Failing after 11m27s
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>
2026-07-11 11:59:16 +09:00
ByungCheol 5f849c552e feat(admin): 관리자 대시보드 + 회원 상세 화면
CI / build (push) Failing after 11m12s
- 대시보드(/admin/dashboard, 기본 랜딩): 요약 카드(총회원·금일 신규/탈퇴·DAU/WAU/MAU),
  접속자 추이(일/주/월 토글), 티어별 회원수, 시군구 지역 분포 — 모두 체크인 기반
- 회원 상세(/admin/members/:id): 프로필 + 강아지/체크인/매칭/구독 이력, 목록에서 상세 버튼
- adminStats API 모듈, 좌측 메뉴에 대시보드 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 11:38:56 +09:00
sb d4fd4a67e2 feat: 애플 로그인 네이티브 연동 (Sign in with Apple)
@capacitor-community/apple-sign-in 으로 identityToken 획득 → /api/auth/apple.
애플 버튼은 네이티브 iOS 에서만 노출, 시트 취소는 무시.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 10:41:29 +09:00
sb acc21b4ac7 feat: 네이버 지도 인증 실패 핸들링
- navermap_authFailure 전역 콜백 등록 → 잘못된 키/미등록 도메인 시 지도 폴백에 원인 표시
- 키만 넣으면 실좌표 마커가 렌더되도록 정비

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 09:22:03 +09:00
sb 9e4d1aa2af feat: 실시간 채팅 UI (STOMP 연동)
- ChatDialog: 히스토리 로드 + 실시간 송수신, 내 메시지 우측 정렬, 연결상태 표시
- lib/chatSocket: STOMP 클라이언트(브로커 ws, Bearer 인증, 자동 재연결)
- api/chat 히스토리, HomePage 스팟 채팅 버튼
- @stomp/stompjs 의존성 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 09:18:23 +09:00
sb d2e5495619 feat: 강아지 관리 화면 (프로필 CRUD + 댕비티아이 편집)
- dogs 스토어: 내 강아지 로드/등록/수정/삭제, 대표견(currentDog)
- ProfilePage: 강아지 등록/선택/삭제, 성향 태그 편집·저장, 회원 티어 표시
- HomePage 체크인/매칭 주체를 대표견으로 전환(미등록 시 안내)
- http 클라이언트 put/del 추가, 임시 session 스토어 제거
- 로그아웃 시 강아지 상태 리셋, Dialog 플러그인 등록

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 09:02:04 +09:00
ByungCheol 85c925008a feat(admin): 관리자 콘솔 — 소셜 로그인 + 회원관리 (사용자 인증과 분리)
- 관리자 전용 store(adminAuth)·API(adminAuth·adminMembers)로 사용자 auth와 분리, 공용 저수준(http·tokenStore)만 재사용
- 관리자 레이아웃(헤더+좌측 사이드메뉴+바디+풋터), 웹 전용
- 구글 로그인(GIS) + 개발자 로그인(dev, admin@dog.com) — /admin/login
- 회원관리 q-table: 검색·상태/구독/권한 인라인 변경·삭제, 본인 행 잠금
- 라우터 /admin 경로 + 별도 관리자 가드, http에 put/del 추가, 401 분기(관리자→admin-login), Dialog 등록

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 08:59:20 +09:00
sb 0c538e0658 feat: 프론트 인증 연동 (소셜 로그인 + Bearer 세션)
- 로그인 화면: 구글(GIS) 버튼 + 애플 버튼 + 개발용 로그인(local)
- 인증 스토어(Pinia): 토큰 복구/로그인/로그아웃, 회원 티어를 광고·매칭 제어에 반영
- HTTP 클라이언트: Authorization Bearer 자동 첨부, 401 시 토큰 폐기 후 로그인 이동
- 라우터 가드: 미로그인 시 보호 경로 → /login (소셜 로그인 전용 앱)
- 헤더 회원 메뉴/로그아웃, 체크인 주체를 로그인 회원으로 전환
- 토큰 localStorage 저장(웹/Capacitor 공용)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 08:35:00 +09:00
sb f089ba2dfe feat: 네이버 지도 연동 (스팟 마커)
- 네이버 지도 JS SDK 동적 로더(싱글턴) + @types/navermaps 타입
- NaverMap 컴포넌트: 스팟 실좌표 마커, 클릭 시 스팟 선택/정보창, 선택 시 중심 이동
- HomePage 지도 자리를 네이버 지도로 교체, 마커 선택 → 해당 스팟 한줄평/메이트 로드
- 키(VITE_NAVER_MAP_CLIENT_ID) 미설정 시 폴백 처리

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 08:20:19 +09:00
sb bbafb3ed4d feat: 백엔드 API 연동 (HTTP 클라이언트 + 홈 화면 실데이터)
- 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>
2026-07-11 08:07:53 +09:00
sb 3130ce3fb7 feat: 프론트엔드 초기 스캐폴딩 (Vue3+TS+Quasar+Capacitor)
- 하늘색 파스텔 브랜드 테마(quasar-variables)
- 스팟 지도/체크인/한줄평/메이트 홈 화면
- 강아지 프로필 + 댕비티아이 성향 태그 화면
- 구독 티어 스토어(Pinia) 및 FREE 티어 배너 광고(v-if 제어)
- Capacitor(iOS/AOS) 설정, 빌드/타입체크 통과

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 07:50:47 +09:00