Skip to content

FEAT : 기동 차단 버그·보안 취약점 수정 및 육아 도메인 기능 확장 - #60

Merged
RosieOh merged 55 commits into
mainfrom
feat/RosieOh
Aug 4, 2026
Merged

FEAT : 기동 차단 버그·보안 취약점 수정 및 육아 도메인 기능 확장#60
RosieOh merged 55 commits into
mainfrom
feat/RosieOh

Conversation

@RosieOh

@RosieOhRosieOh commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

개요

코드베이스 전반을 점검해 애플리케이션이 기동조차 되지 않던 버그부터 인가 취약점, 미완성 기능, 신규 도메인 기능까지 처리했습니다.

Closes#53
Closes#54
Closes#55
Closes#56
Closes#57
Closes#58
Closes#59

가장 먼저 봐주실 부분

컨텍스트 로딩 테스트를 추가하자마자 기동 차단 버그 2건이 나왔습니다. 리포지토리 빈 생성 단계에서 실패하므로 프로필과 무관하게 부팅이 안 되던 상태였습니다.

  1. CareFacilityBookingRepository의 HQL DATE() — HQL에 없는 함수라 Hibernate 6이 파싱 실패
  2. PolicyRepository.getCategoryStats()의 생성자 표현식 FQN 오타 (dto vs dto.response)

변경 사항

보안 (#54)

항목조치
커뮤니티 IDOR로그인만 하면 타인 글을 삭제할 수 있던 문제 — 소유권 검증 추가
JWT 토큰 혼용typ 클레임 도입. Refresh Token으로 API 인증되던 것(ROLE_null) 차단
비밀번호 해시 노출UserDto.passwordWRITE_ONLY 적용
사용자 열거로그인 실패 응답 401 통일, 탈퇴 계정 차단
어드민 인증 파손JWT 기반 REST API(/api/admin/**)로 통합

인프라 정합성 (#55)

  • 캐시 키가 SpEL이 아니라 리터럴이라 모든 정책이 한 캐시 엔트리를 공유하던 문제 → Spring @Cacheable로 전환
  • spring.redis.*spring.data.redis.* (Boot 3에서 무시되던 설정)
  • Flyway 베이스라인에 실제 DDL 반영 (prod ddl-auto=validate에서 신규 배포 시 기동 실패)
  • 깨진 application.properties 제거 및 설정 통합

성능·정합성 (#56)

  • 예약 겹침 판정 정상화 (구간 겹침 + 취소 필터 + 정원 + 락)
  • 목록 API 페이징 (기존 Pageable 사용처 0곳)
  • 조회수 원자적 UPDATE
  • Rate limiting Redis 전환, XFF 신뢰 정책, 429 반환

기능 완성 (#57)

알림 실제 발송 · 스케줄러 3종 · 파일 업로드 · 챗봇 RAG · 정책 관리자 CRUD

신규 도메인 (#58)

아이 등록 API · 표준 예방접종 일정(12종 37회차) · WHO 성장 백분위 · 커뮤니티 모더레이션 · 개인정보 동의 이력

테스트·CI (#59)

회귀 테스트 44개 통과 / 커버리지 3.2% → 16.6%, 게이트 1% → 15%(+ 보안 클래스 60%)

검증

BUILD SUCCESSFUL
테스트 46개 중 44개 통과 (2개는 Docker 미설치로 스킵)

배포 전 확인 필요

자격증명이 없으면 조용히 비활성화됩니다. 로컬·CI 기동을 위한 설계지만 운영에서 누락하면 에러 없이 기능만 죽습니다.

환경변수없을 때
FCM_CREDENTIALS_LOCATION푸시 비활성 (이메일은 동작)
ANTHROPIC_API_KEY챗봇이 기존 규칙 기반으로 폴백
RATE_LIMIT_TRUST_XFF프록시 뒤라면 true 필요

API 계약 변경:

  • 어드민 /admin/**/api/admin/**
  • 목록 API가 기본 100건·최대 200건 반환 (page/size 파라미터 추가)

DB:V2__feature_tables.sql 적용 필요 (신규 4테이블)

남긴 것

Facade 레이어 정리, HealthService 1025줄 분해, 엔티티 @Setter 제거 같은 대규모 구조 리팩터링은 포함하지 않았습니다. 수백 파일에 걸치는 변경이라 커버리지 16% 상태에서 함께 진행하면 회귀를 잡을 그물이 없습니다. 테스트를 더 채운 뒤 도메인 단위로 나누는 편이 안전합니다.

RosieOh added 29 commits August 4, 2026 02:20
@RosieOhRosieOh added this to the Production Readiness milestone Aug 3, 2026
@RosieOhRosieOh added the type:security 보안 취약점 label Aug 4, 2026
@RosieOhRosieOh removed this from the Production Readiness milestone Aug 4, 2026
@RosieOhRosieOh added the type:bug 버그/회귀 이슈 label Aug 4, 2026
@RosieOhRosieOh added this to the Hotfix milestone Aug 4, 2026
@RosieOhRosieOh added priority:P0 즉시 대응 필요 domain:core 코어/공통 labels Aug 4, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment