Commit Graph

6 Commits

Author SHA1 Message Date
ByungCheol fe48d5c604 feat(admin): 관리자 로그인 소셜 → 아이디/비밀번호 (회원 인증과 분리)
Deploy (dev) / deploy (push) Failing after 11m12s
CI / build (push) Failing after 13m21s
- V9: admin_account(BCrypt) + admin_session 테이블 (회원 users/auth_session 과 분리)
- /api/admin/auth: login(아이디/비번)·me·logout, AdminAuthInterceptor 로 /api/admin/** 보호
- 회원 자격의 관리자 개념 제거: MemberAdmin self-lock 제거, dev-login(DevAuthController) 삭제, 구 AdminInterceptor 삭제
- 관리자는 이제 회원(users)이 아님 → 회원관리 목록에서 미노출
- 시드: admin_account(admin/admin1234)
- BCrypt용 spring-security-crypto (전체 Security 스타터 미사용)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 00:09:28 +09:00
sb 8d3be8493c feat: 스팟 체크인 실시간 저장소 Redis 도입 (24h TTL)
CI / build (push) Failing after 13m37s
체크인 시 PostgreSQL(통계용 영구 기록)과 Redis(실시간 활성 체크인)에 함께 저장.
활성 메이트 조회를 Redis ZSet(member=dogId, score=체크인시각, 24h TTL)에서
최근 24시간·최신순으로 수행. Postgres 는 이벤트마다 누적(통계).

- CheckInRedisStore: ZSet + 24h 키 TTL, 조회 시 만료 정리
- application.yml: spring.data.redis (env 주입, 기본 localhost:6379)
- Redis 미기동 시에도 컨텍스트 로드(Lettuce 지연연결) → CI/테스트 안전

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 13:27:05 +09:00
sb c2fc408fcc feat: 실시간 인앱 채팅 (STOMP over WebSocket)
- 스팟별 채팅방(/topic/spots/{id}), 전송 /app/spots/{id}/chat, 엔드포인트 /ws
- STOMP CONNECT Bearer 토큰 인증(ChannelInterceptor) → 미인증 전송 무시
- ChatRoom/ChatMessage 도메인, 방 없으면 최초 메시지 시 생성, 발신자 닉네임 포함
- GET /api/chat/spots/{id}/messages 히스토리(보호), 전역 WebSocket 브로커(인메모리)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 09:17:25 +09:00
ByungCheol 19b26ebe37 feat: 소셜 로그인(구글/애플)·세션·관리자 회원관리 백엔드
- users: 소셜 전용 전환(password_hash 제거) + role/provider/google_id/apple_id/profile_image (V2 마이그레이션)
- auth_session 테이블: Redis 없이 DB 세션(슬라이딩 만료), Bearer 토큰
- 소셜 로그인: 구글 tokeninfo(aud) · 애플 JWKS(iss/aud/exp) 검증 → 이메일 계정연결/신규가입
- AuthInterceptor(세션)+AdminInterceptor(role=ADMIN) 2단 보호, 관리자 페이지는 웹 전용
- /api/admin/members: 목록·상태·티어·역할·삭제 (본인 잠금방지, 정지/삭제/역할변경 시 세션 무효화)
- 예외는 기존 ApiExceptionHandler로 통합(ApiException 매핑 추가)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 08:10:42 +09:00
sb 115bc13ea1 feat: 스팟/체크인/한줄평 API 및 로컬(H2) 실행 프로파일
- GET /api/spots, POST /{id}/checkins, GET /{id}/mates, GET·POST /{id}/reviews
- Spot/CheckIn/SpotReview 엔티티·서비스 (체크인 2시간 TTL, 만료 비노출)
- CORS 허용(Vite dev, Capacitor iOS/AOS)
- local 프로파일: Postgres 없이 H2로 기동 + 시드 데이터 (연동 검증용)
- V2 마이그레이션: spots 위경도 컬럼 추가, geom NOT NULL 완화

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 08:07:43 +09:00
sb e53e4e12f2 feat: 매칭 쿼터 자정 초기화 스케줄러 및 초기 DB 스키마
- PostgreSQL/PostGIS 초기 스키마(users/dogs/성향태그/스팟/체크인/한줄평/채팅/구독/매칭쿼터)
- 매일 자정(KST) 무료·광고제거 유저 매칭 3회 초기화 스케줄러(벌크 UPDATE, PREMIUM 제외)
- 매칭 소진/차단 서비스 및 통합 테스트(H2) 3건 통과

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