Skip to content

feat: add error handling for undefined results#430

Merged
tkjftkjf merged 13 commits into
gsainfoteam:developmentfrom
tkjftkjf:tkjftkjf/pga-216
Nov 30, 2025
Merged

feat: add error handling for undefined results#430
tkjftkjf merged 13 commits into
gsainfoteam:developmentfrom
tkjftkjf:tkjftkjf/pga-216

Conversation

@tkjftkjf

@tkjftkjf tkjftkjf commented Nov 28, 2025

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • 버그 수정

    • 여러 동작(강제제거, 떠나기, 출발시간 설정, 참가, 생성, 회계, 신고 등)에서 특정 잘못된 응답을 별도 예외로 처리하여 오류 처리 안정성이 향상되었습니다.
  • 사용자 안내

    • 신규 미식별 오류 케이스에 대해 화면 오류 메시지가 일관되게 "알 수 없는 오류"로 표시되도록 매핑이 추가되었습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@tkjftkjf
tkjftkjf requested a review from 2paperstar November 28, 2025 09:46
@coderabbitai

coderabbitai Bot commented Nov 28, 2025

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

ArgumentError를 받아 invalidValue를 기반으로 각 도메인별 unknownResponse(...) 예외(UnknownResponseException)를 던지도록 여러 리포지토리의 예외 처리와 예외 계층이 확장되었고, 프레젠테이션 레이어의 에러 매핑에 해당 케이스가 추가되었습니다. Public 시그니처는 대부분 변경되지 않았습니다.

Changes

Cohort / File(s) 변경 요약
예외 타입 추가(여러 모듈)
lib/app/modules/*/domain/exceptions/*_exception.dart
lib/app/modules/chat/domain/exceptions/{accounting_confirm_exception.dart,accounting_request_exception.dart,departure_time_exception.dart,kick_user_exception.dart,leave_pot_exception.dart,report_exception.dart}, lib/app/modules/create/domain/exceptions/create_pot_exception.dart, lib/app/modules/list/domain/exceptions/join_pot_exception.dart
각 Exception 계층에 unknownResponse(String invalidArgument) 팩토리와 이를 구현하는 UnknownResponseException 클래스(필드: final String invalidArgument, const 생성자, toString() 오버라이드) 추가. report_exception은 선택적 errorIdwithErrorId 오버라이드 포함. (공개 API에 새로운 예외 변형 추가)
레포지토리 예외 처리 확장
lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart, lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart, lib/app/modules/chat/data/repositories/rest_report_repository.dart, lib/app/modules/create/data/repositories/rest_create_pot_repository.dart, lib/app/modules/list/data/repositories/rest_join_pot_repository.dart
기존 DioException 처리 블록 앞/안에서 ArgumentError를 추가로 캐치하도록 변경. 발생한 ArgumentError.invalidValue를 대응 도메인 예외의 unknownResponse(...)로 변환하여 throw. 기존 DioException 경로는 유지.
프레젠테이션 매핑 확장
lib/app/modules/chat/presentation/extensions/pot_action_exception.dart, lib/app/modules/chat/presentation/extensions/report_exception_extension.dart, lib/app/modules/create/presentation/extensions/create_error.dart, lib/app/modules/list/presentation/extensions/join_pot_exception.dart, lib/app/modules/chat/presentation/pages/accounting_page.dart, lib/app/modules/chat/presentation/widgets/pot_accounting.dart
각 Extension/위젯의 에러 매핑에 UnknownResponseException() 케이스 추가하여 일관되게 errors.unknown(또는 기존 unknown 경로) 반환하도록 처리.

Sequence Diagram(s)

(생성 조건 미충족 — 생략)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • 추가 검토 포인트:
    • 각 리포지토리에서 ArgumentError.invalidValue가 null 가능성 또는 예상 타입과 호환되는지 확인
    • 동일한 클래스 이름(UnknownResponseException)이 여러 모듈에 존재하므로 import 충돌/네이밍 충돌 여부 확인
    • ReportUnknownResponseExceptionerrorId 흐름 및 withErrorId 구현 검증
    • 프레젠테이션 레이어에서 모든 예외 변형이 누락 없이 처리되었는지 확인

Possibly related PRs

Suggested reviewers

  • 2paperstar

Poem

🐰 깡충깡충 예외 길을 달리며,
알 수 없는 값 하나 주워 안고,
이름 달아 조심히 다시 던지네.
디버그엔 속삭이고 릴리즈엔 무심하게,
당근 한 조각 축하해요! 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 풀 리퀘스트의 제목은 변경사항의 핵심을 정확하게 설명하고 있습니다. 여러 파일에서 ArgumentError 예외를 처리하고 UnknownResponse 예외 타입을 추가하는 작업이 진행되었으며, 제목 'feat: add error handling for undefined results'는 이러한 변경의 주요 목적을 명확하게 요약하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@tkjftkjf

tkjftkjf commented Nov 28, 2025

Copy link
Copy Markdown
Contributor Author

이 Exception 기준으로 리뷰받고 리뷰된 코드 기준으로 나머지 부분도 작업할게요.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Nov 28, 2025
coderabbitai[bot]
coderabbitai Bot previously approved these changes Nov 28, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 40c23f0 and cc932c4.

📒 Files selected for processing (3)
  • lib/app/modules/chat/data/models/kick_user_response_model.dart (2 hunks)
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart (1 hunks)
  • lib/app/modules/chat/domain/exceptions/kick_user_exception.dart (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • lib/app/modules/chat/data/models/kick_user_response_model.dart
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-09T12:08:57.924Z
Learnt from: 2paperstar
Repo: gsainfoteam/pot-g-flutter PR: 144
File: lib/app/modules/chat/data/repositories/websocket_pot_info_repository.dart:140-148
Timestamp: 2025-10-09T12:08:57.924Z
Learning: In `lib/app/modules/chat/data/repositories/websocket_pot_info_repository.dart`, the `accounting` method intentionally uses integer division (`~/`) for `costPerUser` calculation (`amount ~/ (targets.length + 1)`), which may drop the remainder. This is an intentional design decision by the team.

Applied to files:

  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart
📚 Learning: 2025-11-25T23:55:05.121Z
Learnt from: CR
Repo: gsainfoteam/pot-g-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T23:55:05.121Z
Learning: Define exception classes as `sealed class` and use `const factory` to define domain layer exceptions

Applied to files:

  • lib/app/modules/chat/domain/exceptions/kick_user_exception.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build iOS App and Test
  • GitHub Check: Build Android App and Test
🔇 Additional comments (1)
lib/app/modules/chat/domain/exceptions/kick_user_exception.dart (1)

16-17: LGTM! 예외 클래스 구현이 올바릅니다

UnknownJsonValueException 구현이 기존 예외 패턴(NetworkErrorException, UnknownException)과 일관성 있게 작성되었습니다:

  • sealed class와 const factory 패턴을 올바르게 사용 (코딩 가이드라인에 따름)
  • toString() 메서드가 디버그 모드에서만 상세 정보를 노출하도록 구현
  • 네이밍이 명확하고 목적을 잘 나타냄

Based on coding guidelines, sealed class with const factory pattern is correctly used.

Also applies to: 65-72

Comment thread lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3d43ad0 and 0981540.

📒 Files selected for processing (3)
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart (1 hunks)
  • lib/app/modules/chat/domain/exceptions/kick_user_exception.dart (2 hunks)
  • lib/app/modules/chat/presentation/extensions/pot_action_exception.dart (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart
  • lib/app/modules/chat/presentation/extensions/pot_action_exception.dart
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-25T23:55:05.121Z
Learnt from: CR
Repo: gsainfoteam/pot-g-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T23:55:05.121Z
Learning: Define exception classes as `sealed class` and use `const factory` to define domain layer exceptions

Applied to files:

  • lib/app/modules/chat/domain/exceptions/kick_user_exception.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build iOS App and Test
  • GitHub Check: Build Android App and Test
🔇 Additional comments (1)
lib/app/modules/chat/domain/exceptions/kick_user_exception.dart (1)

65-72: 구현 패턴이 기존 예외 클래스들과 일관됩니다.

kDebugMode를 활용한 toString() 구현, const 생성자 사용, sealed class 확장 패턴이 NetworkErrorException, UnknownException과 동일하게 잘 적용되었습니다. Based on learnings, sealed class와 const factory 패턴 사용이 적절합니다.

Comment thread lib/app/modules/chat/domain/exceptions/kick_user_exception.dart Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes Nov 30, 2025
coderabbitai[bot]
coderabbitai Bot previously approved these changes Nov 30, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 6

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 102c0a0 and 2818da1.

📒 Files selected for processing (16)
  • lib/app/modules/chat/data/repositories/rest_report_repository.dart (1 hunks)
  • lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart (2 hunks)
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart (3 hunks)
  • lib/app/modules/chat/domain/exceptions/accounting_confirm_exception.dart (2 hunks)
  • lib/app/modules/chat/domain/exceptions/accounting_request_exception.dart (2 hunks)
  • lib/app/modules/chat/domain/exceptions/departure_time_exception.dart (2 hunks)
  • lib/app/modules/chat/domain/exceptions/leave_pot_exception.dart (2 hunks)
  • lib/app/modules/chat/domain/exceptions/report_exception.dart (1 hunks)
  • lib/app/modules/chat/presentation/extensions/pot_action_exception.dart (3 hunks)
  • lib/app/modules/chat/presentation/extensions/report_exception_extension.dart (1 hunks)
  • lib/app/modules/create/data/repositories/rest_create_pot_repository.dart (1 hunks)
  • lib/app/modules/create/domain/exceptions/create_pot_exception.dart (2 hunks)
  • lib/app/modules/create/presentation/extensions/create_error.dart (1 hunks)
  • lib/app/modules/list/data/repositories/rest_join_pot_repository.dart (1 hunks)
  • lib/app/modules/list/domain/exceptions/join_pot_exception.dart (2 hunks)
  • lib/app/modules/list/presentation/extensions/join_pot_exception.dart (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • lib/app/modules/chat/presentation/extensions/pot_action_exception.dart
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-11-25T23:55:05.121Z
Learnt from: CR
Repo: gsainfoteam/pot-g-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T23:55:05.121Z
Learning: Define exception classes as `sealed class` and use `const factory` to define domain layer exceptions

Applied to files:

  • lib/app/modules/chat/domain/exceptions/leave_pot_exception.dart
  • lib/app/modules/chat/domain/exceptions/accounting_confirm_exception.dart
  • lib/app/modules/chat/domain/exceptions/accounting_request_exception.dart
📚 Learning: 2025-10-09T12:08:57.924Z
Learnt from: 2paperstar
Repo: gsainfoteam/pot-g-flutter PR: 144
File: lib/app/modules/chat/data/repositories/websocket_pot_info_repository.dart:140-148
Timestamp: 2025-10-09T12:08:57.924Z
Learning: In `lib/app/modules/chat/data/repositories/websocket_pot_info_repository.dart`, the `accounting` method intentionally uses integer division (`~/`) for `costPerUser` calculation (`amount ~/ (targets.length + 1)`), which may drop the remainder. This is an intentional design decision by the team.

Applied to files:

  • lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build Android App and Test
  • GitHub Check: Build iOS App and Test
🔇 Additional comments (10)
lib/app/modules/chat/domain/exceptions/accounting_confirm_exception.dart (1)

11-13: 새로운 UnknownResponseException 구조가 올바르게 정의되었습니다.

sealed class 패턴과 const factory 사용이 학습된 코딩 가이드라인을 따르고 있으며, invalidArgument 필드와 toString 구현이 적절합니다.

Based on learnings, exception classes should use sealed class with const factory pattern.

Also applies to: 45-51

lib/app/modules/chat/domain/exceptions/accounting_request_exception.dart (1)

19-20: 예외 구조가 일관되게 구현되었습니다.

AccountingRequestException에 추가된 unknownResponse 팩토리와 UnknownResponseException 클래스가 다른 예외 타입들과 동일한 패턴을 따르고 있습니다.

Also applies to: 77-83

lib/app/modules/chat/domain/exceptions/departure_time_exception.dart (1)

13-14: 예외 처리 구조가 올바르게 추가되었습니다.

DepartureTimeExceptionunknownResponse 팩토리와 UnknownResponseException 클래스가 프로젝트 전반의 일관된 패턴을 따르고 있습니다.

Also applies to: 57-63

lib/app/modules/list/domain/exceptions/join_pot_exception.dart (1)

11-12: JoinPotException의 예외 구조가 일관되게 구현되었습니다.

다른 모듈의 예외 타입들과 동일한 패턴으로 unknownResponse가 추가되어 코드베이스 전체의 일관성이 유지됩니다.

Also applies to: 42-48

lib/app/modules/list/presentation/extensions/join_pot_exception.dart (1)

17-18: 에러 메시지 매핑이 적절하게 추가되었습니다.

UnknownResponseException 케이스가 switch에 올바르게 추가되어 errors.unknown으로 라우팅됩니다.

lib/app/modules/create/presentation/extensions/create_error.dart (1)

17-18: UnknownResponseException → errors.unknown 매핑 추가 적절함

CreatePotException의 새로운 UnknownResponseException 케이스를 errors.unknown으로 매핑해 다른 도메인과 일관성을 맞추고, 예측 불가능한 응답에 대해 공통 fallback 메시지를 주는 구조가 잘 정리되어 있습니다. 추가 수정 없이 이대로 괜찮아 보입니다.

lib/app/modules/chat/presentation/extensions/report_exception_extension.dart (1)

10-10: ReportUnknownResponseException 처리 로직 일관성 좋습니다

ReportUnknownResponseException을 다른 unknown 계열과 동일하게 errors.unknown으로 매핑해서, 도메인 예외 설계와 프레젠테이션 레이어의 에러 메시지 매핑이 자연스럽게 맞춰져 있습니다. 현재 구현으로 충분해 보입니다.

lib/app/modules/chat/domain/exceptions/leave_pot_exception.dart (1)

13-14: LeavePotException.unknownResponse 추가 설계가 가이드와 잘 맞습니다

LeavePotExceptionunknownResponse 팩토리와 UnknownResponseException 클래스를 분리해 둔 덕분에, ArgumentError 기반의 “알 수 없는 응답” 케이스를 도메인 레벨에서 명확하게 구분할 수 있어 좋습니다.

sealed 예외 + const factory 패턴을 사용하라는 기존 AGENTS 가이드와도 일치하고, toStringinvalidArgument를 포함해 디버깅에도 도움이 되는 구조라 별다른 보완 없이 적절해 보입니다.

Also applies to: 50-55

lib/app/modules/create/domain/exceptions/create_pot_exception.dart (1)

11-12: CreatePotException.unknownResponse 도메인 모델링이 명확합니다

알 수 없는 응답을 invalidArgument와 함께 표현하는 UnknownResponseException을 새로 두고, 이를 CreatePotException.unknownResponse 팩토리로 노출한 구조가 명확합니다.

  • 도메인 예외를 sealed class + const factory로 설계하라는 기존 가이드와 일치하고
  • toStringinvalidArgument를 포함해 디버깅 시 어떤 값이 문제였는지 바로 파악할 수 있는 점도 좋습니다.

리포지토리 쪽에서만 invalidArgument를 String으로 맞춰 넘겨주면(예: '${e.invalidValue}') 이 설계는 그대로 활용 가능해 보입니다.

Also applies to: 34-40

lib/app/modules/chat/domain/exceptions/report_exception.dart (1)

8-11: ReportException.unknownResponse / ReportUnknownResponseException 설계 일관적입니다

ReportExceptionunknownResponse 팩토리와 ReportUnknownResponseException을 추가해, 네트워크/알 수 없음 케이스와 동일한 패턴으로 “알 수 없는 응답 + errorId”를 다룰 수 있게 된 점이 좋습니다.

  • errorId를 필드로 들고 있고
  • withErrorId가 다시 ReportException.unknownResponse(invalidArgument, errorId)를 반환하도록 구현되어 있어, 기존 ReportNetworkException / ReportUnknownException 흐름과 잘 맞습니다.

프레젠테이션 레이어의 ReportExceptionX.getErrorMessage와도 자연스럽게 연결될 것으로 보이며, 현재 변경 내용만으로는 추가적인 수정이 필요 없어 보입니다.

Also applies to: 18-31

Comment thread lib/app/modules/chat/data/repositories/rest_report_repository.dart Outdated
Comment thread lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart Outdated
Comment thread lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart Outdated
Comment thread lib/app/modules/create/data/repositories/rest_create_pot_repository.dart Outdated
Comment thread lib/app/modules/list/data/repositories/rest_join_pot_repository.dart Outdated
2paperstar
2paperstar previously approved these changes Nov 30, 2025
Comment thread lib/app/modules/chat/data/repositories/rest_report_repository.dart Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
lib/app/modules/chat/data/repositories/rest_report_repository.dart (1)

38-39: 과거 리뷰의 타입 안전성 개선이 적용되었습니다. null 처리를 더 명확하게 개선하는 것을 권장합니다.

.toString()을 적용하여 과거 리뷰에서 제기된 타입 안전성 문제를 해결했습니다. 다만 invalidValue가 null일 수 있으므로, 이 패턴을 다른 부분에도 적용하기 전에 null-safe 연산자를 사용하는 것을 권장합니다.

다음 diff를 적용하여 null 처리를 더 명확하게 개선하세요:

-    } on ArgumentError catch (e) {
-      throw ReportException.unknownResponse(e.invalidValue.toString());
+    } on ArgumentError catch (e) {
+      throw ReportException.unknownResponse(
+        e.invalidValue?.toString() ?? 'unknown'
+      );

이렇게 하면 invalidValue가 null인 경우 'unknown'이라는 명확한 기본값을 제공하여, "null" 문자열이 아닌 의미 있는 폴백을 사용할 수 있습니다.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b174123 and 18bfd46.

📒 Files selected for processing (5)
  • lib/app/modules/chat/data/repositories/rest_report_repository.dart (1 hunks)
  • lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart (2 hunks)
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart (3 hunks)
  • lib/app/modules/create/data/repositories/rest_create_pot_repository.dart (1 hunks)
  • lib/app/modules/list/data/repositories/rest_join_pot_repository.dart (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • lib/app/modules/create/data/repositories/rest_create_pot_repository.dart
  • lib/app/modules/chat/data/repositories/websocket_pot_action_repository.dart
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-09T12:08:57.924Z
Learnt from: 2paperstar
Repo: gsainfoteam/pot-g-flutter PR: 144
File: lib/app/modules/chat/data/repositories/websocket_pot_info_repository.dart:140-148
Timestamp: 2025-10-09T12:08:57.924Z
Learning: In `lib/app/modules/chat/data/repositories/websocket_pot_info_repository.dart`, the `accounting` method intentionally uses integer division (`~/`) for `costPerUser` calculation (`amount ~/ (targets.length + 1)`), which may drop the remainder. This is an intentional design decision by the team.

Applied to files:

  • lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build Android App and Test
  • GitHub Check: Build iOS App and Test
🔇 Additional comments (3)
lib/app/modules/list/data/repositories/rest_join_pot_repository.dart (1)

32-33: ArgumentError → UnknownResponse 매핑 구현이 타입/도메인 관점에서 적절합니다.

ArgumentError를 별도로 캐치해서 JoinPotException.unknownResponse로 변환한 흐름이 PR 목적(정의되지 않은 결과에 대한 에러 처리 추가)과 잘 맞습니다.

e.invalidValue.toString()으로 명시적으로 문자열 변환한 것도 다른 리포지토리들과의 일관성과 타입 안정성 측면에서 적절해 보이며, 추가 수정이 필요한 부분은 없어 보입니다.

lib/app/modules/chat/data/repositories/websocket_pot_accounting_repository.dart (2)

62-65: LGTM!

이전 리뷰 피드백대로 e.invalidValue.toString()을 사용하여 타입 안전성을 확보했습니다. ArgumentError 처리 로직이 적절하게 구현되었습니다.


97-100: LGTM!

confirmAccounting 메서드에서도 동일한 패턴으로 ArgumentError를 처리하고 있으며, .toString() 변환으로 타입 안전성이 확보되었습니다.

@tkjftkjf
tkjftkjf requested a review from 2paperstar November 30, 2025 08:04
@tkjftkjf
tkjftkjf merged commit 7d3ee3b into gsainfoteam:development Nov 30, 2025
5 checks passed
@tkjftkjf
tkjftkjf deleted the tkjftkjf/pga-216 branch November 30, 2025 18:36
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.

2 participants