미용 시술 후에는 붓기·통증 관리, 소독, 자극 회피 등 시기별로 지켜야 할 관리 수칙이 다르지만, 대부분 시술 직후 안내받은 종이 한 장이나 기억에만 의존하다 보니 회복 관리를 놓치기 쉽다는 점에서 출발했습니다.
시술을 케어카드로 등록하면 D-day 기준으로 오늘 해야 할 케어를 자동 안내하고, 회복 기록을 남기면 AI가 피드백을 주며, 날씨와 일정을 반영한 오늘의 브리핑을 매일 카카오톡으로 발송하는 회복 관리 서비스를 개발했습니다.
| Domain | User, SocialAccount, CareCard, CareCardTreatment, CareRecord, CareRecordPhoto, CareRecordTag, AiFeedback, CareChecklist, CareJudgement, BriefingCache, ChecklistGenerationContext, TodayCareMessage, Schedule, GoogleCalendarConnection, KakaoNotification, Treatment, Weather 등 |
| Controller | Auth, CareCard, CareCardDetail, CareRecord, AiFeedback, Today, Briefing, Schedule, GoogleCalendar(Event/Status/Disconnect), Notification, Mypage, Treatment, Environment |
| Service | 도메인별 서비스 + KakaoMessageScheduler(정기 알림 발송), TreatmentSeedLoader(CSV 시드 데이터 적재) |
| Security | 카카오·구글 OAuth2, JWT (SecurityConfig, CustomOAuth2UserService) |
| 배포 | Docker + Docker Compose, GitHub Actions → EC2 SSH 배포, Caddy 리버스 프록시 |
Docker와 Docker Compose로 컨테이너화하고, GitHub Actions(deploy.yml)로 main 브랜치에 push되면 EC2에 SSH로 접속해 자동 재배포되는 CI/CD 파이프라인을 구성했습니다. application.yaml 없이도 환경변수만으로 컨테이너가 구동되도록 Spring의 relaxed binding을 활용해 설계했습니다.
TodayChecklistService는 OpenAI 기반으로 오늘의 체크리스트를 생성하도록 설계했고, 프롬프트를 구체화하거나 refresh 파라미터를 추가하고 노출 개수를 3개로 제한하는 등 여러 차례 반복 개선했습니다.
CareCardService와 CareRecordService로 케어카드 생성·상세 조회, 회복 기록 작성(사진 첨부, 멀티 이미지), 카드별 시술 이력 조회 API를 구현했습니다.
Treatment, TreatmentSeedLoader로 매장 위치·회복 기간·오늘의 케어 문구가 담긴 CSV 기반 시술 카탈로그 초기 데이터를 적재하고, 시술명 필터 검색을 추가했습니다.
SecurityConfig 기반으로 카카오·구글 소셜 로그인을 구성하고, 배포 도메인의 CORS 허용 목록을 관리했습니다.
프로필·위치 정보 수정 API와, 회원탈퇴 시 브리핑 캐시·체크리스트 컨텍스트 등 연관 데이터를 정리하는 로직을 구현했습니다.
카카오·구글 로그인 완료 후 프론트엔드로 돌아오는 과정에서 원래 요청했던 경로가 사라졌습니다.
기본 AuthorizationRequestRepository가 세션 기반이라, 인증 흐름 중 세션이 유지되지 않으면 저장해둔 요청 정보가 유실됐습니다.
CookieOAuth2AuthorizationRequestRepository를 직접 구현해 인증 요청을 쿠키에 저장하도록 전환하고, OAuth2AuthenticationFailureHandler와 연동했습니다.
로컬에서는 정상 동작하던 카카오·구글 로그인이 배포 후 CORS 에러로 실패했습니다.
SecurityConfig의 Origin 허용 목록에 localhost:3000만 등록되어 있고, 배포 서버 주소와 OAuth2 콜백 경로가 누락되어 있었습니다.
배포 서버 도메인과 카카오·구글 콜백 URL을 Origin 허용 목록에 추가했습니다.