Skip to content

[Feature/Fix] 클라이언트 정산 계산 로직 구현 및 지출 수정 버그 해결#49

Merged
Peter1119 merged 4 commits intomainfrom
bugfix/my_expense
Dec 11, 2025
Merged

[Feature/Fix] 클라이언트 정산 계산 로직 구현 및 지출 수정 버그 해결#49
Peter1119 merged 4 commits intomainfrom
bugfix/my_expense

Conversation

@Peter1119
Copy link
Contributor

🔗 관련 이슈

  • 관련 이슈: #

✨ 작업 내용

  • 정산 계산 로직 로컬 구현 (CalculateSettlementUseCase): 서버 의존성을 제거하고 클라이언트 내부에서 지출 내역을 바탕으로 즉시 정산 결과(총 금액, 인원당 부담금, 송금/수령 내역)를 계산하도록 변경했습니다.
  • 정산 결과 화면 바인딩 수정: SettlementResultFeature가 API 호출 대신 로컬 UseCase를 사용하여 계산된 결과를 실시간으로 보여주도록 개선했습니다.
  • 지출 수정 버그 픽스: 지출 내역 수정 시 payerId(결제자) 정보가 누락되는 문제를 해결하여 정상적으로 수정이 반영되도록 했습니다.
  • 테스트 코드 추가: 정산 계산 로직에 대한 검증 테스트와 지출 유효성 검사 테스트를 추가/보완했습니다.

📸 Showcase

변경 전 (서버 데이터) 변경 후 (로컬 계산)
- (정산 결과 화면 스크린샷)

📌 UI 레이아웃 변경보다는 내부 데이터 처리 로직의 변화가 핵심인 작업입니다.


📝 참고 사항

  • 로컬 계산 전환 이유: 사용자 경험상 지출 입력 후 즉시 정산 결과를 확인하는 것이 중요하다고 판단하여, 서버 연동 전 클라이언트 자체 계산 로직을 우선 도입했습니다.
  • 정산 알고리즘: 총 지출액을 인원수로 나누고, 각 멤버의 결제 금액(Paid)과 부담 금액(Share)의 차이를 계산하여 '누가 누구에게 얼마를 보내야 하는지'를 도출합니다.

Motivation 🥳 (코드를 추가/변경하게 된 이유)

  • 사용자가 지출을 추가/수정한 뒤 별도의 로딩이나 대기 없이 바로 정산 결과를 확인할 수 있어야 합니다.
  • 지출 내역 수정 시 결제자 정보가 사라지는 버그가 있어 해결이 시급했습니다.

Key Changes 🔥 (주요 구현/변경 사항)

  • Domain/Sources/UseCase/Settlement/CalculateSettlementUseCase.swift: 정산 알고리즘 핵심 구현체
  • Features/SettlementResult/Sources/SettlementResultFeature.swift: 비동기 API 호출 제거 및 동기 계산 적용
  • Data/Sources/DTO/Expense/Request/UpdateExpenseRequestDTO.swift: payerId 프로퍼티 추가

To Reviewers 🙏 (리뷰어에게 전달하고 싶은 말)

  • CalculateSettlementUseCase의 계산 로직(특히 1/N 처리 및 송금 리스트 생성)이 정확한지 꼼꼼히 봐주시면 감사하겠습니다!
  • 지출 수정 기능도 정상적으로 동작하는지 확인 부탁드립니다.

Reference 🔗

Close Issues 🔒 (닫을 Issue)

Close #No.

Checklist

  • 브랜치를 가져와 작업한 경우 이전 브랜치에 PR을 보냈는지 확인
  • 빌드를 위해 SceneDelegate 수정한 것 PR로 올리지 않았는지 확인
  • 필요없는 주석, 프린트문 제거했는지 확인
  • 컨벤션 지켰는지 확인
  • final, private 제대로 넣었는지 확인
  • 다양한 디바이스에 레이아웃이 대응되는지 확인
    • iPhone SE
    • iPhone 13
    • iPhone 13 Pro Max

@Peter1119 Peter1119 self-assigned this Dec 10, 2025
@Peter1119 Peter1119 changed the title [Feature/Fix] ] 클라이언트 정산 계산 로직 구현 및 지출 수정 버그 해결 [Feature/Fix] 클라이언트 정산 계산 로직 구현 및 지출 수정 버그 해결 Dec 11, 2025
Copy link
Contributor

@Roy-wonji Roy-wonji left a comment

Choose a reason for hiding this comment

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

@Peter1119 수고 하셨습니다!

Copy link
Contributor

@minneee minneee left a comment

Choose a reason for hiding this comment

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

수고하셨습니다

@Peter1119 Peter1119 merged commit 26796fa into main Dec 11, 2025
1 check passed
@Peter1119 Peter1119 deleted the bugfix/my_expense branch December 11, 2025 02:18
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.

3 participants