Skip to content

Conversation

@baekjaehyuk
Copy link
Collaborator

📌 작업 개요

  • 기존 서비스 계층에서 영수증 월간 지출 및 카테고리별 지출을 조회하는 로직을 쿼리 레벨에서 처리하도록 리팩토링

✅ 작업 내용

  1. QueryDSL를 통해 DTO 매핑 방식을 통한 쿼리 레벨 조회
    • 도메인 계층에서 수행하던 로직을 쿼리 레벨에서 처리
  2. S3 공용 메서드 분리
  3. 메서드 네이밍 통합

📂 리뷰 요구사항

  • QueryDSL에서 @QueryProjection 활용하고자 하였으나 QueryDSL에 대한 의존성이 생기는 경우를 고려하여 생성자를 통해 주입하도록 하였습니다.

@baekjaehyuk baekjaehyuk requested a review from tiemo0708 July 3, 2025 10:54
@baekjaehyuk baekjaehyuk self-assigned this Jul 3, 2025
@baekjaehyuk baekjaehyuk requested a review from Copilot July 3, 2025 10:54
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors receipt domain logic to push monthly and category expense calculations into query-level DTOs, removes legacy domain service classes, and unifies S3 URL handling and method naming.

  • Removed ReceiptEditor/ReceiptItemEditor and inlined mapping & validation in application services
  • Introduced MonthlyExpenseResult and CategoryExpenseResult records for QueryDSL-level DTOs
  • Added createObjectName to S3UrlBuilder and updated controllers/use cases to match renamed methods

Reviewed Changes

Copilot reviewed 22 out of 32 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/test/java/com/ClubAccount_BE/factory/receipt/ReceiptTestFactory.java Updated import path for ReceiptCategory after package move
src/main/java/com/ClubAccount_BE/receipt/domain/service/ReceiptItemEditor.java Removed legacy editor service
src/main/java/com/ClubAccount_BE/receipt/domain/service/ReceiptEditor.java Removed legacy editor service
src/main/java/com/ClubAccount_BE/receipt/domain/ReceiptMonthlyExpenseResult.java Deleted outdated DTO in favor of record
src/main/java/com/ClubAccount_BE/receipt/domain/ReceiptCategoryExpenseResult.java Deleted outdated DTO in favor of record
src/main/java/com/ClubAccount_BE/receipt/domain/ReceiptCategory.java Moved enum from type package to receipt.domain
src/main/java/com/ClubAccount_BE/receipt/domain/Receipt.java Updated updateAmountMatched to accept items and renamed image check
src/main/java/com/ClubAccount_BE/receipt/domain/MonthlyExpenseResult.java Added new record for monthly expense
src/main/java/com/ClubAccount_BE/receipt/domain/CategoryExpenseResult.java Added new record for category expense
src/main/java/com/ClubAccount_BE/receipt/application/service/UpdateReceiptService.java Inlined item mapping & amount validation, removed service deps
src/main/java/com/ClubAccount_BE/receipt/application/service/FindReceiptService.java Renamed methods, inlined expense queries, removed service deps
src/main/java/com/ClubAccount_BE/receipt/application/service/DeleteReceiptService.java Adjusted delete logic to filter non-default images inline
src/main/java/com/ClubAccount_BE/receipt/application/service/CreateReceiptService.java Inlined item mapping & amount validation, removed service deps
src/main/java/com/ClubAccount_BE/receipt/application/port/in/FindReceiptUseCase.java Renamed use-case methods to align with controller changes
src/main/java/com/ClubAccount_BE/receipt/adapter/in/web/dto/response/ReceiptResponse.java Updated import path for ReceiptCategory
src/main/java/com/ClubAccount_BE/receipt/adapter/in/web/dto/response/ReceiptMonthlyExpenseResponse.java Switched to MonthlyExpenseResult record
src/main/java/com/ClubAccount_BE/receipt/adapter/in/web/dto/response/ReceiptCategoryExpenseResponse.java Switched to CategoryExpenseResult record
src/main/java/com/ClubAccount_BE/receipt/adapter/in/web/dto/request/ReceiptRequest.java Updated import path for ReceiptCategory
src/main/java/com/ClubAccount_BE/receipt/adapter/in/web/api/FindReceiptApi.java Updated API signatures & paths for date/category queries
src/main/java/com/ClubAccount_BE/receipt/adapter/in/web/FindReceiptController.java Updated controller method names & mappings
src/main/java/com/ClubAccount_BE/core/s3/S3UrlBuilder.java Added createObjectName to interface
src/main/java/com/ClubAccount_BE/core/s3/DefaultS3UrlBuilder.java Implemented createObjectName with UUID prefix
Comments suppressed due to low confidence (3)

src/main/java/com/ClubAccount_BE/receipt/domain/Receipt.java:97

  • The method name isDefaultImage is misleading because it returns true for non-default images. Consider renaming it to hasCustomImage or isNonDefaultImage for clarity.
    public boolean isDefaultImage(String defaultImage) {

src/main/java/com/ClubAccount_BE/receipt/domain/MonthlyExpenseResult.java:6

  • [nitpick] Consider adding class-level Javadoc to explain the purpose of this record and the semantics of its fields.
public record MonthlyExpenseResult(

src/main/java/com/ClubAccount_BE/receipt/domain/CategoryExpenseResult.java:6

  • [nitpick] Consider adding class-level Javadoc to clarify the intent of this record and document its fields.
public record CategoryExpenseResult(

Copy link
Member

@tiemo0708 tiemo0708 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코파일럿이 잡아준거만 확인하면 될거 같습니다.
고생하셨습니다

@sonarqubecloud
Copy link

sonarqubecloud bot commented Jul 3, 2025

@baekjaehyuk baekjaehyuk merged commit 7aecd3a into develop Jul 3, 2025
2 checks passed
@baekjaehyuk baekjaehyuk deleted the TB-35 branch July 3, 2025 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants