Skip to content

[feat] #130 Nginx 기반 https 적용 - #131

Merged
chaewoo-kim merged 10 commits into
devfrom
feat/ACC-130-nginx-https
Jul 23, 2026
Merged

chaewoo-kim merged 10 commits into
devfrom
feat/ACC-130-nginx-https

Conversation

@rlatjddms

Copy link
Copy Markdown
Collaborator

🔗 연관된 이슈

📝 작업 내용

  • 서버에 Nginx 컨테이너 추가 및 설정 파일 작성
  • Certbot를 사용한 https 적용
  • 프론트엔드와 백엔드 연동

✅ 테스트 결과

  • 단위 테스트 (JUnit)
  • 통합 테스트

✅ 변경 사항 체크리스트

  • 커밋 메시지 컨벤션을 준수했나요?
  • 불필요한 공백이나 주석을 제거했나요?
  • 코드에 영향이 있는 부분에 대해 테스트를 작성했나요?
  • 모든 테스트가 성공했나요?

@rlatjddms rlatjddms linked an issue Jul 23, 2026 that may be closed by this pull request
3 tasks done
@Project-AccountBook Project-AccountBook locked and limited conversation to collaborators Jul 23, 2026
@Project-AccountBook Project-AccountBook unlocked this conversation Jul 23, 2026
@rlatjddms
rlatjddms marked this pull request as draft July 23, 2026 03:07
@chaewoo-kim
chaewoo-kim marked this pull request as ready for review July 23, 2026 05:27
@chaewoo-kim
chaewoo-kim merged commit a1a5560 into dev Jul 23, 2026
1 check passed
@rlatjddms
rlatjddms deleted the feat/ACC-130-nginx-https branch August 6, 2026 01:59
rlatjddms added a commit that referenced this pull request Sep 8, 2026
* [feat] User 엔티티 및 enum 구현

* [feat] BaseEntity에 deletedAt 추가

* [feat] 회원가입 dto 구현

* [feat] 회원가입 api 구현

* [feat] 로그인 dto 구현

* [feat] RefreshToken 엔티티 구현

* [refactor] SecurityConfig url 경로 인증 설정 최적화

* [feat] JWT 인증 인프라 구축

* [chore] 폴더 이동 및 정리

* [chore] build.gradle에 Redis 관련 설정 추가

* [feat] 로그인 api 구현

* [feat] @Valid 유효성 검사 예외 전역 처리 추가

* [refactor] JwtFilter 파라미터에 @nonnull 어노테이션 추가

* [feat] 토큰 재발급 api 구현

* [feat] BaseEntity createdAt 컬럼 제약 조건 추가

* [refactor] 회원가입 리턴 타입 변경

* [feat] 로그아웃 api 구현

* [chore] 파일명 수정 및 이동

* [test] AuthService 테스트 코드 작성

* [test] 회원가입 테스트 코드 작성

* [feat] #45 공동구매 entity, enum 구현

* [chore] 사용하지 않는 파일 제거

* 공동구매 controller, repository, service구현

* [feat] #48 공동구매 controller, repository, service구현

* [feat] #21 Board CRUD (#50)

* [feat] #21 Board entity 구현

* [docs] #21 SwaggerConfig 수정

* [feat] #21 도메인별 ErrorCode 분리 인프라 구축

* [feat] #21 게시판 CRUD API 구현

* [test] #21 BoardService 테스트 코드 작성

* [chore] JaCoCo 커버리지 게이트 도입

* [feat] #28 관리자 권한 게시물 삭제 기능 구현

검색에 기본값 설정
토큰 발급에 userId 포함되도록 수정
관리자 삭제 기능 구현
관리자 삭제 기능 경로 설정
관리자 삭제 기능 구현
관리자 권한 게시물 삭제 테스트 코드 작성

* [feat] #23 댓글 CRUD 구현 (#52)

comment API 추가
comment CRUD 구현
comment CRUD 테스트 코드 작성
userId 포함되도록 수정
관리자 삭제 기능 구현
관리자 삭제 기능 구현

* [feat] #19 소셜 로그인 연동 기능 구현 (#53)

- 소셜 로그인 및 자동 회원가입 API 구현
- 동일 이메일 가입 시 기존 로컬 계정과의 연동 구현
- 예외 처리 및 테스트 코드 작성

* [feat] #6 공동구매 전체 조회 기능 구현 (#54)

공동구매 전체 조회 기능 구현

* [feat] #32 마이페이지 프로필 관리 및 유저 설정 기능 구현 (#55)

* [feat] #32 UserSetting 엔티티 구현

* [feat] #32 UserNotificationSetting 엔티티 구현

* [feat] #32 회원 정보 조회 및 수정 dto 구현

* [feat] #32 회원 정보 관리 서비스 코드 구현

* [feat] #32 User 엔티티 매핑 및 로직 추가

* [refactor] #32 가입 방식에 따른 회원 저장 로직 분리

* [feat] #32 회원 정보 관리 컨트롤러 구현

* [feat] #32 탈퇴 후 재가입 로직 구현

* [test] #32 회원 정보 관리 테스트 코드 작성

* [chore] #32 UserErrorCode 분리

* [refactor] #32 User 엔티티에 AccessLevel.PROTECTED 추가

* [feat] #8 공동구매 카테고리 기능 구현 (#56)

공동구매 카테고리 기능 구현

* [feat] #10 공동구매 동네 필터링 기능 구현 (#58)

공동구매 동네 필터링 기능 구현

* [feat] #39 자산 계좌 관리 기능 구현 (#59)

* [feat] #39 Account 엔티티 구현

* [feat] #39 Account dto 구현

* [feat] #39 Account 리포지토리 구현

* [feat] #39 계좌 관리 서비스 코드 구현

* [feat] #39 계좌 관리 api 컨트롤러 구현

* [feat] #39 커스텀 에러코드 작성

* [test] #39 AccountService 테스트 코드 작성

* [feat] #39 계좌 단건 조회 api 구현

* [feat] #60 가계부 포트폴리오 entity 및 enum 구현 (#62)

- 가계부 포트폴리오 entity 구현
- 가계부 포트폴리오 enum 구현

* [feat] #26 게시물 검색 (#57)

* [chore] #26 Elasticsearch 의존성 추가 및 docker-compose 환경 구성

* [feat] #26 게시판 검색용 Elasticsearch Document 및 Repository 구현

* [feat] #26 비동기 ES 인덱싱 이벤트 시스템 구현

* [refactor] #26 게시판 검색을 Elasticsearch 기반으로 전환 및 변경 이벤트 발행

* [feat] #26 Swagger Pageable 파라미터 placeholder 노출 문제 개선

* [test] #26 게시판 검색 테스트 보강 및 ES 미가동 환경 대응

* [chore] #26 ES 검색 후속 작업 계획 CLAUDE.md 기록

* [test] #26 BoardIndexEventListener 비동기 인덱싱 테스트 작성

* [test] #26 BoardSearchQueryRepository ES 검색 변환 테스트 작성

* [test] #26 BoardDocument 엔티티 매핑 테스트 작성

* [feat] #8 공동구매 카테고리 기능 구현 (#56)

공동구매 카테고리 기능 구현

---------

Co-authored-by: Ongsaem0 <yeahrim97@naver.com>

* [feat] #27 공동구매 신청(사용자) 기능 구현 (#61)

공동구매 신청(사용자) 기능 구현

* [feat] #30 댓글 관리자 삭제 기능 구현 (#63)

* [chore] #26 Elasticsearch 의존성 추가 및 docker-compose 환경 구성

* [feat] #26 게시판 검색용 Elasticsearch Document 및 Repository 구현

* [feat] #26 비동기 ES 인덱싱 이벤트 시스템 구현

* [refactor] #26 게시판 검색을 Elasticsearch 기반으로 전환 및 변경 이벤트 발행

* [feat] #26 Swagger Pageable 파라미터 placeholder 노출 문제 개선

* [test] #26 게시판 검색 테스트 보강 및 ES 미가동 환경 대응

* [chore] #26 ES 검색 후속 작업 계획 CLAUDE.md 기록

* [test] #26 BoardIndexEventListener 비동기 인덱싱 테스트 작성

* [test] #26 BoardSearchQueryRepository ES 검색 변환 테스트 작성

* [test] #26 BoardDocument 엔티티 매핑 테스트 작성

* [feat] #8 공동구매 카테고리 기능 구현 (#56)

공동구매 카테고리 기능 구현

* [feat] #30 관리자 권한 댓글 삭제 기능 구현

댓글 엔티티에 admin_deleted 필드 추가
관리자 삭제 댓글 응답 메시지 처리
관리자 삭제 기능 구현
관리자 삭제 기능 경로 설정
Swagger 그룹에 Admin Comment API 추가
관리자 권한 댓글 삭제 테스트 코드 작성

---------

Co-authored-by: Ongsaem0 <yeahrim97@naver.com>

* [feat] #36 알림 기능 구현  (#64)

* update README.md

* Update README.md

* Update README.md

* Update README.md

* [feat] User 엔티티 및 enum 구현

* [feat] BaseEntity에 deletedAt 추가

* [feat] 회원가입 dto 구현

* [feat] 회원가입 api 구현

* [feat] 로그인 dto 구현

* [feat] RefreshToken 엔티티 구현

* [refactor] SecurityConfig url 경로 인증 설정 최적화

* [feat] JWT 인증 인프라 구축

* [chore] 폴더 이동 및 정리

* [chore] build.gradle에 Redis 관련 설정 추가

* [feat] 로그인 api 구현

* [feat] @Valid 유효성 검사 예외 전역 처리 추가

* [refactor] JwtFilter 파라미터에 @nonnull 어노테이션 추가

* [feat] 토큰 재발급 api 구현

* [feat] BaseEntity createdAt 컬럼 제약 조건 추가

* [refactor] 회원가입 리턴 타입 변경

* [feat] 로그아웃 api 구현

* [chore] 파일명 수정 및 이동

* [test] AuthService 테스트 코드 작성

* [test] 회원가입 테스트 코드 작성

* [feat] #45 공동구매 entity, enum 구현

* [chore] 사용하지 않는 파일 제거

* 공동구매 controller, repository, service구현

* [feat] #48 공동구매 controller, repository, service구현

* [feat] #21 Board CRUD (#50)

* [feat] #21 Board entity 구현

* [docs] #21 SwaggerConfig 수정

* [feat] #21 도메인별 ErrorCode 분리 인프라 구축

* [feat] #21 게시판 CRUD API 구현

* [test] #21 BoardService 테스트 코드 작성

* [chore] JaCoCo 커버리지 게이트 도입

* [feat] #28 관리자 권한 게시물 삭제 기능 구현

검색에 기본값 설정
토큰 발급에 userId 포함되도록 수정
관리자 삭제 기능 구현
관리자 삭제 기능 경로 설정
관리자 삭제 기능 구현
관리자 권한 게시물 삭제 테스트 코드 작성

* [feat] #23 댓글 CRUD 구현 (#52)

comment API 추가
comment CRUD 구현
comment CRUD 테스트 코드 작성
userId 포함되도록 수정
관리자 삭제 기능 구현
관리자 삭제 기능 구현

* [feat] #19 소셜 로그인 연동 기능 구현 (#53)

- 소셜 로그인 및 자동 회원가입 API 구현
- 동일 이메일 가입 시 기존 로컬 계정과의 연동 구현
- 예외 처리 및 테스트 코드 작성

* [feat] #6 공동구매 전체 조회 기능 구현 (#54)

공동구매 전체 조회 기능 구현

* [feat] #32 마이페이지 프로필 관리 및 유저 설정 기능 구현 (#55)

* [feat] #32 UserSetting 엔티티 구현

* [feat] #32 UserNotificationSetting 엔티티 구현

* [feat] #32 회원 정보 조회 및 수정 dto 구현

* [feat] #32 회원 정보 관리 서비스 코드 구현

* [feat] #32 User 엔티티 매핑 및 로직 추가

* [refactor] #32 가입 방식에 따른 회원 저장 로직 분리

* [feat] #32 회원 정보 관리 컨트롤러 구현

* [feat] #32 탈퇴 후 재가입 로직 구현

* [test] #32 회원 정보 관리 테스트 코드 작성

* [chore] #32 UserErrorCode 분리

* [refactor] #32 User 엔티티에 AccessLevel.PROTECTED 추가

* [feat] #8 공동구매 카테고리 기능 구현 (#56)

공동구매 카테고리 기능 구현

* [feat] #10 공동구매 동네 필터링 기능 구현 (#58)

공동구매 동네 필터링 기능 구현

* [feat] #36 Notification 엔티티 구현

* [feat] #36 NotificationType enum 구현

* [feat] #36 알림 dto 구현

* [feat] #36 알림 생성 및 관리 서비스 로직 구현

* [feat] #36 알림 커스텀 에러코드 구현

* [feat] #36 알림 관리 api 컨트롤러 구현

* [chore] #36 알림 타입 이름 변경

* [chore] #36 파일 이동

* [feat] #36 fcm json 파일 추가 및 FirebaseConfig 생성

* [feat] #36 FcmService 구현

* [feat] #36 알림 이벤트 코드 구현 및 회원가입 이벤트 추가

* [feat] #36 메인 어플리케이션에 @EnableAsync 추가

* [feat] #36 fcm 기기 토큰을 저장할 UserDevice 엔티티 구현

* [feat] #36 fcm 토큰 등록 및 수정 api 구현

* [feat] #36 알림 생성에 fcm 발송 로직 추가

* [chore] #36 파일 이동에 따른 import문 수정

* [test] #36 Notification 도메인 테스트 코드 작성

* [chore] #36 fcm 비밀 키 파일 제거

* [chore] #36 파일 이동

---------

Co-authored-by: Ongsaem0 <yeahrim97@naver.com>
Co-authored-by: Ongsaem0 <tkdwnsghqkr1@gmail.com>
Co-authored-by: chaewookim <60053929+chaewoo-kim@users.noreply.github.com>

* [feat] #40 맞춤형 카테고리 관리 기능 구현 (#65)

* [feat] #40 카테고리 dto 구현

* [feat] #40 카테고리 관리 서비스 코드 구현

* [feat] #40 카테고리 커스텀 에러 코드 추가

* [feat] #40 카테고리 관리 api 컨트롤러 구현

* [chore] #40 SwaggerConfig 그룹 추가

* [test] #40 CategoryService 테스트 코드 구현

* [feat] 공동구매 어드민 상품 CRUD 

 공동구매 어드민 상품 CRUD

* [feat] #41 고정 수입/지출 내역 관리 구현 (#67)

- 고정 수입/지출 내역 조회/생성/수정/삭제 API 구현
- 예외 처리 및 테스트 코드 작성

* [feat] #16 Redis GEO 기반 사용자 위치 등록/조회 기능 구현

* [feat] #35 공동구매 어드민 카테고리 CRUD 

공동구매 어드민 카테고리 관리

* [feat] #37 어드민 공동구매 신고 확인 및 처리 기능구현 (#71)

어드민 공동구매 신고 확인 및 처리 기능구현

* [feat] #1 예산 비교 (#72)

* [feat] #1 예산 비교 기능 구현

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #1 선택 사용자와 예산 세부 조회 및 비교 기능 구현

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* Feat/acc #31 어드민 실시간 현황 요약 기능구현 

* [feat] #31 어드민 실시간 현황 요약 기능구현

* [feat] #42 수입/지출 내역 및 잔고 연동 기능 구현 (#75)

* [refactor] #42 공통 검증 로직 분리

* [chore] #42 컨트롤러에 api 설명 추가

* [feat] #42 거래 내역 dto 구현

* [feat] #42 거래 내역 관리 서비스 코드 구현

* [feat] #42 거래 내역 커스텀 에러 코드 추가

* [feat] #42 거래 내역 관리 api 컨트롤러 구현

* [feat] #42 Transaction 엔티티에 인덱스 적용

* [refactor] #42 계좌 잔액 동시성 제어를 위한 락 추가

* [test] #42 TransactionService 테스트 코드 작성

* [refactor] #42 거래 목록 조회에 페이징 적용

* [feat] #33 어드민 전체 목록 실시간 모니터링 (#77)

- 어드민 전체 목록 모니터링 기능구현

* [feat] #3 지출/수입 비교 기능 구현 

예산 비교 패턴을 따라 지출/수입 비교 도메인을 추가. 고정(FixedTransaction)과
변동(Transaction)을 분리해 합계/카테고리별로 함께 노출하며, 공개 설정 사용자만
비교 대상에 포함.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #69 고정 거래 자동 생성 및 스케줄링 기능 구현 (#79)

* [feat] #69 고정 거래 스케줄러 구현

* [test] #69 FixedTransactionScheduler 테스트 코드 작성

* [feat] #9 포트폴리오 비교 (#80)

* [feat] #9 포트폴리오(수입/지출/예산) 통합 비교 기능 구현

- 본인 월별 포트폴리오 조회 (총/카테고리별 수입·지출·예산 + 잔액)
- 공개 사용자 다중 목록 (연/월 및 수입·지출·예산 각각의 금액 구간 필터)
- 그룹 평균과 본인 비교 (AGE/AMOUNT/CATEGORY 탭별 수입·지출·예산 묶음)
- 선택 사용자와 포트폴리오 세부 및 탭별 비교

* [chore] #9 docker-compose에 mysql/redis 추가

elasticsearch와 함께 로컬 개발용 mysql, redis 컨테이너를 한 번에 실행할 수 있도록 구성. 각 서비스 헬스체크와 데이터 영속용 named volume 포함.

* [docs] #9 이후 DB 최적화 전략 추가

* [feat] #24 공동구매 찜하기 기능구현 (#81)

공동구매 찜하기 기능구현

* [feat] #22 공동구매 댓글/문의 기능구현 (#82)

* [perf] #34 비교 API 조회 성능 최적화 (인덱스 + 쿼리 통합 + Redis 캐싱) (#84)

* [perf] #34 비교 API 조회 성능 최적화 (인덱스 + 쿼리 통합 + Redis 캐싱)

- DB 인덱스 추가
  - Budget: idx_budget_user_year_month (user_id, year_month)
  - Board: idx_board_created_at, idx_board_type
  - FixedTransaction: idx_fixed_transaction_user (user_id)

- PortfolioService.getPublicPortfolios 쿼리 통합 (5쿼리 → 1쿼리)
  - PortfolioAggregationRepository 신설, Native UNION ALL + 외부 GROUP BY
  - 금액 구간 필터/정렬을 Java stream → DB HAVING/ORDER BY 이동

- Compare 응답 Redis 캐싱 (의사결정 #6 정합화 Phase 1)
  - RedisCacheManager 빈 (TTL 5분, Jackson + polymorphic typing)
  - Budget/Expense/Income compareWithGroup 에 @Cacheable
  - Transaction/FixedTransaction mutation 경로에 @CacheEvict(allEntries=true)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* [docs] #34 이슈 탬플릿에 perf label 추가

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #83 위치 기반 비교 (#87)

* [feat] #83 위치 기반 비교 기능 구현 (예산/지출/수입/포트폴리오)

- CompareType enum 4종에 LOCATION 값 추가
- CompareRequest DTO 4종에 radiusKm 필드 추가
- UserLocationService.findNearbyUserIds: 반경 내 userId 집합 반환
  (본인 제외, 위치 미등록 시 LOCATION_NOT_REGISTERED)
- Repository 3종에 IN :userIds + isPortfolioPublic 그룹 합계 쿼리 추가
  (Budget.sumMonthlyTotalsByUserIds, Transaction/FixedTransaction.sumPublicByUserIds)
- Budget/Expense/Income CompareService 에 compareByLocation 구현
  + 캐시 key 에 radiusKm 포함
- PortfolioService.compareWithGroup LOCATION 위임 + radiusKm 전파
- compareWithUser(1:1 비교) 는 LOCATION 미지원 — LOCATION_PAIR_NOT_SUPPORTED 명시
- BudgetCompareServiceTest 에 LOCATION 4 케이스, UserLocationServiceTest 에 findNearbyUserIds 3 케이스 추가

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #83 위치 비교 radiusKm 범위 가드 (0.1km ~ 50km)

- 4 Request DTO 에 @DecimalMin(0.1) / @DecimalMax(50.0) (controller-layer 검증)
- Budget/Expense/Income ErrorCode 에 INVALID_RADIUS 추가
- 3 compareByLocation 에 service-side 범위 체크 + 상수화
  (PortfolioService 가 내부에서 새 Request DTO 를 생성해 우회 가능하므로 service-side 가드 필요)
- BudgetCompareServiceTest 에 하한/상한 위반 케이스 추가

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* [perf] Compare 캐싱 Phase 2 — 그룹 평균 캐시 분리 (cross-user hit)

Phase 1 의 user 단위 응답 캐시 (cross-user hit 0%) → 그룹 단위 캐시로 분해.
같은 demographic 사용자들이 캐시 공유, mutation 시 그룹 캐시 영향 없음 (TTL 만 의존).

- Budget/Expense/Income 도메인에 GroupCacheService 신설
  Repository 위의 @Cacheable wrapper, userId 제외한 키로 캐싱
  excludeUserId=-1L 로 "본인 포함 모든 공개 사용자" 결과 캐시
- RedisConfig 에 그룹 캐시 이름 상수 9개 추가
  (Expense/Income 은 fixed/variable 별도)
- 3 CompareService 의 compareWithGroup @Cacheable 제거
  compareByAge/Amount/Category 가 GroupCacheService 사용
  self exclusion 을 service 코드로 이동 (Map.remove(userId) / CategoryAggregation 본인 contribution 차감)
- TransactionService/FixedTransactionService 의 @CacheEvict(allEntries=true) 제거
  그룹 캐시는 TTL 5분 만으로 충분 (단일 사용자 mutation → 그룹 평균 영향 미미)
- BudgetCompareServiceTest stub 을 BudgetGroupCacheService 로 교체
- CLAUDE.md TODO 정리: Phase 2 본체 완료, @scheduled warm-up 만 follow-up

LOCATION 은 캐시 미적용 (사용자별 반경 결과가 달라 cross-user hit 기대 0%).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #15 공동구매 상세정보 보기 기능구현 (#88)

공동구매 상세정보 보기 기능구현

* [feat] #44 월별 예산 관리 및 소비 현황 분석 구현 (#89)

* [feat] #44 예산 관리 dto 구현

* [feat] #44 예산 관리 서비스 코드 구현

* [feat] #44 예산 커스텀 에러 코드 추가

* [feat] #44 예산 관리 api 컨트롤러 구현

* [feat] #44 예산 사용률에 따른 알림 로직 구현

* [test] #44 BudgetService 테스트 코드 작성

* [feat] #25 이메일 인증 및 계정/비밀번호 재설정 구현 (#90)

* [chore] #25 이메일 전송을 위한 implementation 추가

* [feat] #25 이메일 인증 dto 구현

* [feat] #25 EmailVerificationService 구현

* [feat] #25 회원가입 시 이메일 인증 구현

* [feat] #25 비밀번호 분실 시 이메일 인증 후 재설정 구현

* [feat] #25 SecurityConfig api 허용 범위 수정

* [teat] #25 수정 및 추가된 메서드에 대한 테스트 코드 작성

* [feat] #17 공동구매 상세화면 실시간 달성률 기능 구현 (#91)

공동구매 상세화면 실시간 달성률 기능 구현

* [feat] #20 공동구매 상세화면 실시간 달성률 기능 구현 (#92)

공동구매 상세화면 실시간 달성률 기능 구현

* [feat] #43 대시보드 소비 분석 통계 기능 구현 (#93)

* [teat] #43 대시보드 dto 구현

* [teat] #43 대시보드 api 서비스 코드 및 컨트롤러 구현

* [feat] #43 대시보드 통계 조회 Redis 캐싱 적용 및 성능 최적화

* [feat] #43 거래 내역 파일 내보내기 구현

* [test] #43 대시보드 테스트 코드 작성

* [test] #43 거래 내역 파일 내보내기 테스트 코드 작성

* [chore] #43 쿼리문 공백 제거

* [feat] #94 공동구매 관심 카테고리 설정 및 알림 생성 구현 (#95)

* [chore] #94 파일 이동

* [feat] #94 InterestCategory 엔티티 생성

* [feat] #94 공동 구매 알림 구현 및 연결

* [fix] #94 관심 카테고리 컬럼 및 로직 수정

* [fix] #94 이벤트 발행 수정

* [feat] #94 관심 카테고리 dto 구현

* [feat] #94 관심 카테고리 관리 서비스 코드 구현

* [feat] #94 관심 카테고리 api 컨트롤러 구현

* [test] #94 InterestCategoryService 테스트 코드 작성

* [feat] #12 공동구매 가계부 잔액 연동 기능 구현 (#96)

공동구매 가계부 잔액 연동 기능 구현

* [feat] #14 공동구매 가계부 지출 자동 내역서 기능 구현 (#97)

* [feat] #86 스케쥴러 설정 (#98)

예산, 지출, 수입 비교 계산에 스케쥴러 도입

* [fix] #101 유저 도메인 문제 해결 (#103)

* [chore] #101 사용하지 않는 import문 삭제

* [feat] #101 비밀번호 설정 분기 추가

* [fix] #101 이메일 전송 문제 해결

* [chore] #101 MockMailConfig 주석 처리

* [feat] #101 이메일 템플릿 설정

* [refactor] #101 이메일 비동기 발송

* [fix] #101 이메일 템플릿 색상 변경

* [feat] #101 소셜 로그인 시에도 회원가입 축하 알림 발송

* [feat] #104 공동구매 프론트 연결 (#105)

* [feat] #99 메인 페이지 틀 구현

* [feat] #104 공동구매 프론트 API 연결

* [fix] 누락 기능 추가 (#106)

* [feat] ACC-102 게시판 type 필터 및 작성자 닉네임 응답 추가
* [feat] ACC-102 좋아요/북마크/카테고리/Q&A 상태 도메인 추가
* [feat] ACC-102 Tag/Image/Follow/UserStats/HOT/댓글 페이지 도메인 추가
* [feat] ACC-102 Elasticsearch 색인에 태그 포함
* [feat] ACC-102 ES 초기 재색인 배치 + HOT 랭킹 Redis 캐싱
* [feat] ACC-102 좋아요/조회수 Redis 카운터 캐싱
* [feat] ACC-102 관리자 리스트 API + 좋아요 카운터 정합성 배치
* [docs] ACC-102 claude.md 7차 완료(관리자 프론트 UI) 반영
* [test] ACC-102 신규 도메인 단위 테스트 추가

* [fix] #108 대시보드 누락 기능 추가 (#110)

* [fix] #108 대시보드 api 조회 오류 수정

* [fix] #108 고정 거래내역 생성 주기 추가

* [fix] #107 자산 및 예산, 알림 도메인 누락 기능 추가 (#109)

* [fix] #107 대시보드 캐시 문제 해결

* [feat] #107 초기 잔고 수정 기능 추가

* [fix] #107 예산 삭제 후 재등록 시 유니크 제약 충돌 문제 해결

* [feat] #99 공동구매 백엔드 연결 (#111)

* [feat] #99 메인 페이지 틀 구현
* [feat] #104 공동구매 프론트 API 연결

* [feat] #112 공동구매 어드민 백엔드 연결 (#113)

* [feat] #99 메인 페이지 틀 구현

* [feat] #104 공동구매 프론트 API 연결

* [feat] #112 공동구매 어드민 백엔드 연결

* [fix] #114 누락 기능 및 오류 해결 (#115)

* [fix] #114 토큰 재발급 문제 해결

* [fix] #114 반복일 수정 시 다음 거래일 다시 계산

* [feat] #114 기본 카테고리 설정

* [fix] #114 사용 중인 카테고리 삭제 불가

* [feat] #114 이체 대상 저장

* [fix] #114 사용 중인 계좌 삭제 문제 해결

* [fix] #114 알림 이동 경로 수정

* [fix] #114 corn 수정과 고정 거래내역이 당일일 경우 즉시 생성

* [feat] #114 고정 거래내역 표시

* [refactor] #114 사용하지 않는 반환값 정리

* [fix] #114 계좌 및 카테고리 이름 중복 불가하게 변경

* [feat] #114 이체 기본 카테고리 추가

* [feat] #114 기타 카테고리 제거

* [feat] #104 공동구매 config 문제 해결 (#119)

* [feat] #99 메인 페이지 틀 구현

* [feat] #104 공동구매 프론트 API 연결

* [feat] #112 공동구매 어드민 백엔드 연결

* [feat] #104 공동구매 config 문제 해결

* [feat] #121 공동구매 minio 기능 구현 (#122)

* [feat] #117 계좌 목표 설정 및 예산 주별 관리 기능 구현 (#123)

* [feat] #117 계좌 역할 및 목표 컬럼과 enum 추가

* [feat] #117 계좌 역할 추가 및 목표 설정 구현

* [feat] #117 이체 카테고리 저축률/투자율 포함 여부 구현

* [feat] #117 저축률 및 투자율 계산 구현

* [feat] #117 대시보드에 저축률/투자율, 목표 달성률 등 추가

* [fix] #117 공동구매 카테고리 알림 오류 수정

* [feat] #117 계좌 목표 달성 알림 추가

* [fix] #117 알림 오류 해결

* [feat] #124 공동구매 AmazonS3 기능 구현 (#125)

* [feat] #126 GitHub Actions 기반 배포 시스템 구축 (#127)

* [fix] #128 Preflight 요청 허용 및 백엔드 컨테이너화 (#129)

* [fix] #128 prefilght 요청 허용

* [fix] #128 로컬 환경 secret 파일 경로 설정 추가

* [test] #128 테스트를 위한 빌드 브랜치 변경

* [refactor] #128 백엔드를 도커에 추가

* [refactor] #128 elasticsearch 메모리 낮추기

* [fix] #128 depends_on 조건 완화

* [fix] #128 Dockerfile 수정

* [fix] #128 strip_components 제거

* [fix] #128 도커 이미지 이름 오류 수정

* [fix] #128 도커 이미지 이름 오류 수정

* [fix] #128 elasticsearch 환경변수 추가

* [fix] #128 deploy 브랜치 dev로 변경

* [feat] #130 Nginx 기반 https 적용 (#131)

* [feat] #130 서버에 nginx 컨테이너 추가 및 설정 파일 작성

* [feat] #130 https 적용

* [feat] #130 deploy 코드에 nginx.conf 추가

* [feat] #130 cors에 프론트엔드 주소 추가

* [feat] #130 프록시 신뢰 설정 추가

* [refactor] #130 환경에 따라 리다이렉트 주소 동적으로 바꾸기

* [fix] #130 deploy 브랜치 dev로 변경

* [refactor] #130 커넥션 및 톰캣 스레드 제한

* [refactor] #130 도커 메모리 제한 설정 및 es 리포지토리 스캔 범위 최적화

* [refactor] #130 도커 메모리 제한 설정 해제

* [fix] #133 비교 기능 수정 (#134)

* [fix] #133 회원가입/프로필 저장 시 서버 사이드 지오코딩 처리 및 위치 상태 코드 정합화
* [docs] claude.md 후속 작업 우선순위 및 배포 전 보안 감사 항목 정리
* [fix] #133 workflow 수정

* [feat] #132 공동구매 동시성 제어 (#136)

* [fix] #135 회원 및 알림 파트 수정 (#138)

* [feat] #130 fcm 토큰 삭제 api 추가

* [feat] #130 배포 시 fcm 시크릿 json 파일 생성

* [fix] #130 탈퇴 후 간편로그인 재가입 문제 해결

* [fix] #130 탈퇴 시 관심 카테고리 전부 삭제

* [fix] #130 탈퇴 시 알림 내역 및 설정 초기화

* [fix] #130 비밀번호 설정 문구 수정

* [refactor] #130 구글smtp 메일에서 resend로 변경

* [fix] #130 이메일 전송 시 이름 MODI로 수정

* [test] #130 빌드 테스트

* [test] #130 테스트 후 dev 브랜치로 변경

* [feat] #137 공동구매 어드민 도메인 분리 및 에러 수정 (#141)

* [feat] #65 공동구매 어드민 분리 및 에러 수정
* feat: Admin user automatic redirect to Admin Frontend

* [perf] #139 인프라 및 서비스 성능 최적화 (#142)

* [perf] #139 es VM 분리 및 prod/local docker-compose 정리

* [perf] #139 연속 push 문제 해결 및 dns 주기적으로 다시 조회

* [perf] #139 런타임 개선을 위한 prod 파일 추가 및 스레드풀 설정

* [perf] #139 대시보드 Redis 캐시와 Hikari 커넥션 풀 적용

* [fix] #139 캐시 직렬화 방식 수정

* [fix] #139 거래내역 내보내기 최대 기간 설정 및 템플릿 변경

* [fix] #139 삭제된 계좌는 스냅샷으로 가져오도록 수정

* [fix] #139 dev 브랜치로 변경

* [fix]  어드민 공동 구매 오류 수정 및 기능 추가 (#144)

* chore: Remove unused frontend folder from Backend
* [feat] #143 어드민 공동구매 오류수정 및 기능추가

* [fix] #140 게시판 오류 수정 (#147)

* [fix] 예산 비교 사용자 집합을 종합 비교와 일치하도록 수정

종합 비교에는 나오지만 예산 비교에는 안 보이던 공개 사용자 노출.
Budget 레코드 유무와 무관하게, 해당 월에 수입/지출/예산 활동이 하나라도 있는
공개 사용자를 포함하도록 findPublicMonthlyTotals 재작성 (예산 없으면 0원).
PublicBudgetFilterRequest 를 단일 year/month 로 정리하고 관련 테스트 갱신.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* [fix] #140 게시판 관련 오류 수정

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [fix] #145 알림 오류 수정 (#146)

* [fix] #145 배포 환경에서의 알림 오류 수정

* [test] #145 배포 브랜치 변경 후 테스트

* [fix] #145 디스코드 알림 전송 시 제목만 가져오기

* [refactor] #145 JwtFilter의 인증 성공 로그 디버그로 변경

* [fix] #140 배포 오류 수정 (#148)

* [fix] 예산 비교 사용자 집합을 종합 비교와 일치하도록 수정

종합 비교에는 나오지만 예산 비교에는 안 보이던 공개 사용자 노출.
Budget 레코드 유무와 무관하게, 해당 월에 수입/지출/예산 활동이 하나라도 있는
공개 사용자를 포함하도록 findPublicMonthlyTotals 재작성 (예산 없으면 0원).
PublicBudgetFilterRequest 를 단일 year/month 로 정리하고 관련 테스트 갱신.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* [fix] #140 게시판 관련 오류 수정

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #150 게시판 내 글 조회 mine 필터 추가 (#151)

* [feat] #149 예산, 고정지출, 회원가입 개선 (#153)

* [feat] #149 최근 예산 불러오기 기능 추가

* [feat] #149 카테고리 삭제 시 스냅샷 저장

* [feat] #149 월별 예산에 고정 지출 자동 반영

* [feat] #149 간편로그인 직후 프로필 완성 추가

* [chore] #152 CORS 허용 origin에 Capacitor 앱 추가 (#154)

* [feat] #150 게시판 내 글 조회 mine 필터 추가
* [chore] #152 CORS 허용 origin에 Capacitor 앱 추가

* [feat] #156 공동구매 피드백 반영 (#157)

* [fix] #155 OAuth2 redirect_uri open redirect 방어 화이트리스트 도입 (#158)

로그인 성공 후 redirect_uri 쿠키값을 무검증으로 사용해 임의 URI 로 토큰을
전송할 수 있던 open redirect 취약점 보완. OAuth2RedirectUriValidator 로
화이트리스트 정확 일치 검증, 미등록 값은 기본 URI 로 fallback + WARN 로그.

- OAuth2RedirectUriValidator 및 단위 테스트 신설 (4 케이스)
- application.yml 에 authorized-redirect-uris 목록 (web/admin/prod/native)
- OAuth2SuccessHandler 가 validator 경유하도록 변경

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [fix] #155 존재하지 않는 AuthService.issueTokens 호출을 JwtTokenProvider 직접 사용으로 복원 (#160)

이전 세션의 리팩터(AuthService.issueTokens 도입) 는 별도 브랜치로 원복됐는데
OAuth2SuccessHandler 만 그 호출 흔적을 유지하고 있어 빌드가 깨졌음.
기존 HEAD 패턴대로 jwtTokenProvider.createAccessToken/createRefreshToken +
refreshTokenRepository.save 직접 호출로 복원.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [perf] #161 DB I/O 성능 개선 (인덱스 + JDBC batch + FCM 토큰 검증) (#163)

* [perf] ACC-161 DB 조회 성능 개선 및 JDBC batch 활성화

Board/Comment 사용자 기반 조회와 벌크 update 성능을 개선하고
Testcontainers 기반 벤치마크로 정량 검증.

- Board `idx_board_user_type (user_id, type)` 복합 인덱스 추가
- Comment `idx_comment_user (user_id, created_at)` 복합 인덱스 추가
  → ORDER BY created_at DESC 를 인덱스로 흡수해 filesort 제거
- Hibernate JDBC batch 활성화 (batch_size=20, order_inserts/updates,
  batch_versioned_data, default_batch_fetch_size=100)
- prod 배포용 마이그레이션 SQL 스냅샷 추가
  (docs/db/migration/2026-08-05_add_user_indexes.sql)

측정 결과 (Testcontainers MySQL 8, Board 10k / Comment 100k):
- Board findByUserIdAndType: 3.54 → 1.57 ms (-55.5%)
- Comment findByUserId ORDER BY created_at DESC LIMIT 20:
  22.01 → 0.65 ms (-97.1%)
- Comment 200건 bulk update:
  SQL 4020 → 40 (-99.0%), wall clock 37.58 → 27.77 ms (-26.1%)

벤치마크 인프라:
- src/test/java/.../benchmark/DbIoBenchmark.java (Testcontainers, @tag "benchmark")
- scripts/run-bench.sh (2-pass 실행 스크립트)
- docs/benchmark/results/2026-08-05_db_io.csv (원본 데이터)
- Testcontainers 1.20.4 로 upgrade (Docker Engine 29 호환)

사전 존재하던 grouppruchase 테스트 4파일 컴파일 오류로 임시 exclude 처리
(별도 이슈에서 수정 필요).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [perf] ACC-161 Notification/UserDevice/Account DB I/O 개선 및 FCM 토큰 검증

전 도메인 감사에서 도출된 High 3종을 병렬 적용하고 Testcontainers 벤치마크로
정량 검증. 계정 삭제 시 알림 벌크 UPDATE 압축, 알림/디바이스/계좌 조회 인덱스
부착, FCM 토큰 등록 시 형식 검증 추가.

- Notification bulk soft-delete: findAll+deleteAll 루프 → 단일 UPDATE
  (@SQLDelete 정합성 유지 위해 UPDATE deleted_at 로 구현)
- Notification `idx_notification_user (user_id)` 인덱스 추가
- UserDevice `idx_userdevice_user (user_id)` 인덱스 추가
  + `findByUser(User)` → `findByUserId(Long)` 로 전환
- Account `idx_account_user (user_id)`, `idx_account_user_name` 복합 인덱스 추가
- UserDeviceService.registerToken 에 FCM 토큰 형식 검증 추가
  (길이 100~250, 정규식 ^[A-Za-z0-9_:\-]+$). S4 요금폭탄 완화.
- INVALID_FCM_TOKEN 에러 코드 신설
- prod 배포용 마이그레이션 SQL 추가
  (docs/db/migration/2026-08-05_add_account_notification_indexes.sql)

측정 결과 (Testcontainers MySQL 8, 3회 반복 평균):
- H1 Notification bulk soft-delete:
  wall clock 23.57 → 5.67 ms (-75.9%), SQL 2010 → 10 (-99.5%)
- H2 Notification 조회 (20k rows): 12.22 → 1.72 ms (-85.9%)
- H2 UserDevice 조회 (10k rows, hot path): 1.56 → 0.70 ms (-55.2%)
- H3 Account 조회 (3k rows): 1.16 → 0.68 ms (-41.5%)

벤치마크 인프라 확장:
- DbIoBenchmark 에 R3/R4/R5/U2 시나리오 및 시드 4종 추가
- docs/benchmark/results/2026-08-05_db_io.csv 에 append
- 재현: ./gradlew bench -Dbench.run.scenarios=R3,R4,R5,U2

전 도메인 감사 리포트 claude.md 에 신설 (D1~D10, 공통 안티패턴, Medium 백로그).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #162 백엔드 CORS, JWT 토큰 전달 및 저장 방식 보안 기능 구현 (#166)

* [perf] #164 외부 API·스토리지 남용 방지 (#168)

* [perf] #164 인증 메일 요청 횟수 제한

* [perf] #164 S3 업로드 크기·타입 제한하여 초과 용량 거부

* [perf] #164 도커 로그 제한

* [perf] #164 카카오 지오코딩 결과 Redis 캐시

* [perf] ACC-165 Medium 우선순위 DB 최적화 (인덱스 확장 + 벌크 소프트 삭제 통일) (#169)

전 도메인 감사에서 도출된 Medium 백로그 6건을 A/B/C 배치로 진행.
실 코드 재확인으로 D5/D7 은 오탐으로 판정하고 취소, 실효 4건 처리.

**A. 인덱스 확장 (D4, D9)**
- GroupPurchase `idx_gp_status_category_deadline (status, category_id, deadline)`
  → findActiveGroupPurchases 의 filter + ORDER BY deadline 을 인덱스로 흡수
  → filesort 제거
- TransactionCategory `idx_txcategory_user_name_type (user_id, name, type)`
  → existsByUserIdAndNameAndType 등 카테고리 CRUD 중복 검증에 covering index

**B. 벌크 소프트 삭제 통일 (D8)**
- InterestCategoryRepository.softDeleteByUserId (@Modifying UPDATE)
- FixedTransactionRepository.softDeleteByAccountId / softDeleteByTransactionCategoryId
- InterestCategoryService / AccountService / CategoryService 의
  `findAll + forEach delete` 3곳을 단일 UPDATE 로 치환
- FixedTransaction 인덱스 추가: idx_fixed_transaction_account,
  idx_fixed_transaction_category (bulk UPDATE WHERE 조건 커버)
- InterestCategory 인덱스 추가: idx_interest_user

**C. 정확성 수정 (D6)**
- BudgetService.copyPlan 에서 카테고리 삭제된 예산의
  transactionCategory NPE 위험 → resolveCategoryId 헬퍼 재사용 (snapshot fallback)

**취소 (오탐)**
- D5 Budget @SQLRestriction 부재: 이미 존재. native workaround 는
  restore-on-recreate 흐름용 (버그 아님).
- D7 Compare 캐시 evict 누락: 30분 TTL 은 warm-up 스케줄과 정합된
  의도적 설계. 개별 write allEntries evict 시 cross-user warm hit 파괴.

측정 결과 (Testcontainers MySQL 8):
- D4 GroupPurchase filter+sort (10k): 4.66 → 1.61 ms (-65.4%), filesort 제거
- D9 TransactionCategory exists (2k): rows 검사 2000 → 1 (-99.95%), covering
- D8-1 InterestCategory bulk soft-delete (100건):
  18.42 → 6.73 ms (-63.5%), SQL 1010 → 10 (-99.0%)
- D8-2 FixedTx bulk soft-delete (100건):
  16.18 → 5.09 ms (-68.6%), SQL 1010 → 10 (-99.0%)

prod 마이그레이션 SQL:
- docs/db/migration/2026-08-05_add_grouppurchase_txcategory_indexes.sql
- docs/db/migration/2026-08-05_add_interest_fixed_indexes.sql

벤치마크 인프라:
- DbIoBenchmark 에 R6/R7/U3/U4 시나리오 및 seed 4종 (GroupPurchase 10k,
  TransactionCategory 2k, InterestCategory 6k, FixedTransaction 6k) 추가
- CSV append: docs/benchmark/results/2026-08-05_db_io.csv

claude.md 감사 리포트 갱신 (D5/D7 오탐 사유 명시).

BudgetServiceTest 3건 사전 존재 실패는 이번 변경과 무관 (별도 이슈 필요).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [feat] #167 고정 거래에 이체 항목 추가 (#170)

* [fix] #167 cors allowed-origins 바인딩 오류 해결

* [feat] #167 고정 거래에 이체 항목 추가

* [feat] #167 고정 거래에 이체 항목 추가

* [feat] #167 현재 계좌 잔액 변경 가능하게 수정

* [feat] #167 신용카드, 대출을 추가한 자산 관리 기능 고도화

* [feat] #167 고정 거래 작동 실패 시에 알림 발생, 재시도 여부 선택

* [perf] #167 S3는 OAC로만 조회되게 수정

* [pref] #162 백엔드 보안 (#172)

* [feat] #162 백엔드 CORS, JWT 토큰 전달 및 저장 방식 보안 기능 구현

* [pref] #162 CSRF (크로스 사이트 요청 위조) 방어 부재 보안,
Admin 리다이렉트 URL 하드코딩 보안

* [feat] #174 공동구매 백엔드 성능개선 (#175)

* [feat] #174 공동구매 결제, 한도초과, 모집 기능 구현

* [feat] #174 공동구매 거래내역(카테고리) 기능 구현

* [feat] #174 공동구매 수령장소, 계좌 예산 복구, 거래내역 기능 추가

* [feat] #174 공동구매 기능 개선

* [fix] #177 앱 소셜 로그인 redirect 처리 수정 (#178)

* [fix] #177 앱 소셜 로그인 redirect 처리 수정

* [fix] #177 소셜 로그인 redirect 웹/앱 동시 지원

* Update README.md (#183)

* [chore] ACC-178 Profile 분리 (application.yml 공통/local/prod) + secret template (#180)

**Profile 분리 (P0-1)**
- application.yml 을 공통 설정만 남기고 profile-specific 값 분리
  - `spring.profiles.active: ${SPRING_PROFILES_ACTIVE:local}` 명시 (default=local)
  - 제거: ddl-auto, show-sql, format_sql, hikari pool size, CORS 목록, mail.dev-log-code
- application-local.yml (신규)
  - ddl-auto: update / show-sql: true / hikari 5
  - CORS: localhost:5173/5174/capacitor + http://localhost
  - dev-log-code: true
- application-prod.yml
  - dev-log-code: false 추가 (기존 validate/pool 20/prod CORS 유지)
- docker-compose.local.yml: SPRING_PROFILES_ACTIVE=local 명시 (default 의존 해소)

**Secret 온보딩 (A안, P3-4 부분)**
- application-secret.yml.example 커밋 (placeholder 값)
- 신규 개발자: 파일 복사 후 실제 값 채우기
- application-secret.yml 자체는 이미 .gitignore 등록되어 있음 (커밋 이력 없음 확인)

**추가 발견 (P0-9 신규 등록)**
- SecurityConfig CORS 바인딩 pre-existing 버그로 로컬 부팅 지속 실패
  - 도입 커밋 f9edfe3 (#162, 2026-08-06) 이후 재현
  - 프로파일 분리 검증 중 발견. 별도 이슈로 해결 예정
  - CLAUDE.md P0-9 항목에 원인/완화 방안 기록

**검증 상태**
- Profile 분리 자체는 파일 매핑 / config loading 순서 확인 완료
- prod validate 검증은 P0-9 해결 후 재수행 필요

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* [perf] #181 보안 취약점 개선 (#182)

* [perf] #181 DB/Redis 외부 노출 차단

* [perf] #181 인증번호 5회 실패 시 재발급 유도 + SecureRandom 적용

* [perf] #181 프로덕션 Swagger 비활성화

* [perf] #181 OAuth Access Token URL 노출 제거

* [fix] #181 에산 관리 대시보드 반영 문제 해결

---------

Co-authored-by: rlatjddms <kseo_o@naver.com>
Co-authored-by: Ongsaem0 <tkdwnsghqkr1@gmail.com>
Co-authored-by: Ongsaem0 <yeahrim97@naver.com>
Co-authored-by: rlatjddms <145992500+rlatjddms@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] Nginx 기반 https 적용

2 participants