Conversation
* feat(report): monthly_report_v2 테이블 생성 및 엔티티 구현 * feat(report): MonthlyReportV2ContentFactory 클래스 구현 * feat(report): PENDING 월간 리포트 생성 로직 수정 * feat(report): 월간 리포트 V2 텍스트 생성/저장 흐름 및 감정 통계 연동 * feat(report): 월간 리포트 V2 이미지 생성/저장 파이프라인 추가 OpenAI 이미지 생성 클라이언트 및 요청/응답 DTO 추가, 월간 리포트 이미지 스토리지 연동 로직 추가, MonthlyReportTxService/GenerationListener에 이미지 생성 흐름 반영 * feat(report): 월간 리포트 v2에 관심사 통계(interest_stats) 집계·저장 기능 추가 * feat(report): 월간 리포트 V2 조회 기능 추가 * feat(report): 이전 리포트 조회 구현 * feat(report): 월간 리포트 V2 id 조회에 본인 소유 검증 및 접근 거부 에러코드 추가
* chore(infra): commitlint에 social scope 추가 * feat(social): comments 테이블 및 Comment 엔티티 추가 daily_report_id, author_id, parent_comment_id FK 구성, 댓글/대댓글 구조, 리포지토리 구현 * feat(social): 댓글/대댓글 API 구현 댓글/대댓글 CRUD API 구현, 비밀 댓글 열람 권한 및 마스킹 처리, 차단·탈퇴 유저 필터링, visibleSubCommentCount 계산 * feat(social): 피드 응답에 myReport 필드 추가 피드 응답에 내 공유 리포트(myReport) 필드 추가 * feat(notify): 댓글/대댓글 FCM 알림 추가 COMMENT_ON_MY_REPORT, REPLY_ON_MY_COMMENT, REPLY_ON_PARTICIPATED_COMMENT 알림 타입 추가, 알림 대상 탈퇴 유저 필터링, FriendNotificationEventListener 패키지 friend → social 이동 * feat(social): comments 소프트 딜리트 전환 삭제된 댓글도 유지하는 것이 추후 확장 시에 유리할 것이라 생각해 물리 삭제에서 소프트 딜리트로 전환 * fix(notify): 댓글 알림 내용 말미 공백 제거 * feat(social): 좋아요 기능 구현 및 피드 응답에 myReport 필드, isLiked·hasLikes 필드 추가 daily_report_likes, comment_likes 테이블 마이그레이션 추가, 게시글·댓글/대댓글 좋아요·취소·리스트 API 구현, CommentResponse, FeedResponse에 isLiked·hasLikes 필드 추가, FeedListResponse에 myReport 필드 추가 * feat(social): 댓글 신고 지원 및 소셜 정지 기능 구현 social_suspensions 테이블 추가 및 content_reports 테이블에 comment_id 컬럼 추가, daily_report_id FK를 ON DELETE SET NULL로 변경해 게시글 삭제 후에도 신고 이력 보존, 기존 SharingSuspensionService를 social_suspensions 기반으로 재구현, 신고 누적 조건 만족시 정지 자동 발동, 오늘 공유 게시글 일괄 비공개 처리, 정지 상태 조회 API 추가 * feat(social): 소셜 정지 중 댓글·좋아요 차단 및 정지 유저·신고 댓글 필터링 CommentCommandService·LikeCommandService의 write 메서드 전체에 소셜 정지 상태인지 체크하는 메서드 추가, CommentQueryService·LikeQueryService의 getExcludedUserIds에 정지 중인 유저 ID를 포함해 조회 시 자동 필터링, CommentRepository 댓글·대댓글·서브카운트 쿼리 3개에 NOT EXISTS 서브쿼리 추가하여 내가 신고한 댓글 미노출 * fix(social): 간단한 이슈 수정 countAllReports / countAllDistinctReporters 새 메서드 추가, @Modifying(clearAutomatically = true) 추가, deleteComment Swagger에 409 COMMENT_DELETED 추가
기존 isFriend 필드를 제거하고 상태(FRIEND/REQUEST_SENT/REQUEST_RECEIVED/NONE)와 friendshipId를 내려줘서 프론트에서 친구 신청 취소 등 모든 친구 관계 액션을 별도 조회 없이 처리하도록 변경
* feat(social): clearAutomatically로 인한 댓글 soft delete 미반영 수정 댓글 삭제 API 호출 시 대댓글만 삭제되고 댓글 본체는 미삭제, @Modifying(clearAutomatically = true)가 bulk UPDATE 후 1차 캐시를 clear하면서 앞서 로딩한 comment 엔티티가 detached 상태로 전환되어 comment.softDelete() 호출이 무시됨 * feat(notify): 대댓글 알림 내용 이모지 surrogate pair 분할 수정 truncate()가 String.length(), substring() 기반 동작이라 이모지가 20번째에 걸리면 버그가 날 수도 있어서 Unicode code point 단위 기반으로 수정
비밀 대댓글 내용이 열람 권한 없는 참여자에게 알림으로 노출되는 문제를 해결하기 위해 SubCommentCreatedEvent에 isSecret, parentSecret 필드 추가 후 CommentNotificationEventListener에서 부모 댓글 작성자 알림에 차단 관계 체크 추가, isSecret && !parentSecret이면 skip, 리포트 당사자가 참여자인 경우는 별도 발송
캘린더/답변 상세에서 댓글·좋아요 기능 진입을 위해 GET /answers/{answerId}, GET /answers/calendar/{date}, GET
/daily-reports/{reportId} 응답에 dailyReportId 필드 추가
* refactor(report): 월간 리포트 v1/v2 로직 분리 및 v1 복구 기반 정리 v2 전용 Service/TxService/Listener/EventDto/PendingService/LlmClient 클래스 분리, 기존 v1 컴포넌트는 v1 흐름으로 복구할 수 있게 책임 재정렬 * feat(report): v1/v2 월간 리포트 생성 교차 차단 로직 추가 MonthlyReportCrossVersionGuardService 추가 * feat: 테스트용 월간 리포트 v1 삭제 api 구현 * ci(infra): 월간 프롬프트 시크릿을 v1/v2 베이스라인으로 분리 dev/prod 배포 워크플로우에서 MONTHLY_PROMPT 제거하고 MONTHLY_V1_PROMPT, MONTHLY_V2_BASELINE_PROMPT 시크릿 디코딩/환경변수 export 추가 * chore: .gitignore에 AGENTS.md 추가 * fix(report): MonthlyReportCrossVersionGuardService과 PendingMonthlyReportServiceV2 수정 MonthlyReportCrossVersionGuardService - status가 COMPLETED와 FAILED가 아닌 모든 경우에 생성 중 예외 처리를 던지도록 수정, PendingMonthlyReportServiceV2 - status = "TEXT_COMPLETED"인 경우에도 생성 중 예외 처리를 던지도록 수정
* fix(social): 댓글·좋아요 접근 제어에 오늘 공유 조건 추가 기존 access check가 isShared=true만 검사해 친구가 어제 공유 후 끄지 않은 리포트는 dailyReportId 추측만으로 댓글·좋아요 진입이 가능하던 문제 해결, existsByIdAndIsSharedTrue → existsByIdAndIsSharedTrueAndDate 변경하고 메서드 쓰인 곳 모두 변경 * fix(moderation): 신고 API에 접근 제어 신규 추가 ContentReportCommandService.checkReportAccess 메서드로 본인 글 early return, 그 외 오늘 공유된 친구 리포트만 신고 가능 권한 체크, 비밀 댓글 신고 시 추가 권한 체크, Swagger 403 응답 명세 추가
* feat: 홈 조회 API에 플랫폼별 최신 버전 정보 추가 * refactor: app_versions를 누적 이력형 스키마로 전환 app_versions 테이블 컬럼을 latest_version에서 version으로 변경, is_latest(boolean) 컬럼 추가, AppVersion 엔티티를 version/isLatest 필드 구조로 변경 등 * feat: app_versions에 공지 메타데이터(summary/items) 추가 및 홈 응답 확장 app_versions 스키마에 summary 컬럼과 items(jsonb) 컬럼 추가, AppVersion 엔티티에 summary, items 필드 추가 및 jsonb 매핑 적용, 홈 응답의 latestVersion 구조를 플랫폼별 상세 객체로 확장 * feat: 홈 화면에서 버전 업데이트 다시 보지 않기 기능 추가 및 홈 응답 반영 user_app_version_dismissals 테이블 생성, UserAppVersionDismissal 엔티티 구현, POST /home/version-dismissals API 추가, HomePlatformVersionResponse에 appVersionId, dismissed 필드 추가 * refactor: 앱 버전 업데이트 응답/정책에서 WEB 플랫폼 제거 AppPlatform enum에서 WEB 제거 (IOS, ANDROID만 유지), HomeLatestVersionResponse에서 web 필드 제거 * refactor: app_versions에서 items를 jsonb에서 분리하여 테이블 구조로 전환 app_versions 테이블에서 items(jsonb) 컬럼 제거, app_version_items 테이블 신설 등 * feat(admin): 관리자 페이지 비밀번호 인증 및 보호 라우팅 구현 * feat(admin): 어드민 도메인에 버전 조회/생성 API 추가 * feat(admin): 앱 버전 항목(app_version_items) 추가/수정/삭제 API 구현 * feat(admin): 타임리프 기반 어드민 버전 관리 페이지 구축 및 편집 UX 고도화 타임리프 어드민 페이지 구현 : 관리자 로그인 페이지 추가, 버전 관리 페이지 추가, 백엔드 연동 보강
visibleSubCommentCount ↔ 대댓글 목록 불일치를 해결하기 위해 (countVisibleSubCommentsByParentIds에서 비밀 필터 절 제거하여 마스킹되어 노출되는 비밀 대댓글까지 카운트에 포함, CommentQueryService.buildSubCountMap의 visibleSecretParentIds 계산 로직 제거, hasLikes ↔ 좋아요 리스트 불일치를 해결하기 위해 findReportIdsWithLikes / findCommentIdsWithLikes에 user.idnot in :excludedUserIds + user.deletedAt is null 필터 추가, FeedQueryService에 getExcludedUserIds 헬퍼 + UserBlockRepository 주입 추가
* feat(auth): 탈퇴 V2 API 및 탈퇴 사유 DB 저장/검증 추가 * feat: 탈퇴 V2 구현 - 사유 저장 기능과 탈퇴 통계 페이지 추가 * fix(db): user withdrawal 관련 마이그레이션 파일명 시간대 보정 실제 실행 순서에 맞게 버전 타임스탬프 조정 * test(auth): 탈퇴 V2 사유 저장 및 통계 테스트 추가
* feat: 개발용 테스트 계정 생성 API 추가 * ci(infra): dev 배포 환경변수에 테스트 계정 비밀번호 추가
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 요약(Summary)
#178 까지 반영하여 운영 서버에 배포합니다.
🔗 Related Issue
💬 공유사항
✅ PR Checklist
PR이 다음 요구 사항을 충족하는지 확인하세요.