improvement: 공통 응답/에러 포맷 고정 (#164) #198

Merged
seonkyu.kim merged 1 commits from improvement/#164-common-error-format into develop 2026-02-24 07:50:16 +00:00
Owner

📋 작업 요약

  • 공통 FieldError DTO 추가 및 ApiResponse.ValidationFail() 팩토리 메서드 확장
  • ModelState 유효성 실패 시 ASP.NET 기본 ProblemDetails 대신 ApiResponse 포맷으로 반환
  • Controller의 return Unauthorized(...) 패턴을 throw SpmsException.Unauthorized(...) 로 통일
  • 잘못된 에러코드 "101"(BadRequest) → "102"(Unauthorized) 수정
  • Message 도메인 ValidationErrorDto → 공통 FieldError 교체

Closes #164

🛠️ 작업 내용 (Changes)

  • SPMS.Domain/Common/FieldError.cs — 공통 FieldError DTO 신규 생성
  • SPMS.Domain/Common/ApiResponse.cs — ValidationErrorData, ApiResponseExtensions.ValidationFail() 추가
  • SPMS.API/Program.cs — InvalidModelStateResponseFactory 설정
  • SPMS.API/Controllers/AuthController.cs — throw SpmsException.Unauthorized 통일 (2곳)
  • SPMS.API/Controllers/ServiceController.cs — throw SpmsException.Unauthorized 통일 (1곳)
  • SPMS.API/Controllers/ProfileController.cs — throw SpmsException.Unauthorized 통일 (2곳)
  • SPMS.Application/DTOs/Message/MessageValidationResultDto.cs — ValidationErrorDto → FieldError 교체
  • SPMS.Application/Services/MessageValidationService.cs — FieldError 사용으로 변경

📢 리뷰어 참고 사항 (To Reviewers)

  • 에러코드 체계는 기존 3자리 숫자 코드(ErrorCodes.cs) 유지, PRD의 DOMAIN_ACTION_REASON 형식은 미적용
  • ValidationErrorDto 클래스는 삭제됨 (공통 FieldError로 완전 대체)
  • ExceptionMiddleware는 변경 없음 (기존 SpmsException 처리 로직 그대로 활용)

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - 공통 `FieldError` DTO 추가 및 `ApiResponse.ValidationFail()` 팩토리 메서드 확장 - ModelState 유효성 실패 시 ASP.NET 기본 ProblemDetails 대신 `ApiResponse` 포맷으로 반환 - Controller의 `return Unauthorized(...)` 패턴을 `throw SpmsException.Unauthorized(...)` 로 통일 - 잘못된 에러코드 "101"(BadRequest) → "102"(Unauthorized) 수정 - Message 도메인 `ValidationErrorDto` → 공통 `FieldError` 교체 ## 🔗 관련 이슈 (Related Issues) Closes #164 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Domain/Common/FieldError.cs` — 공통 FieldError DTO 신규 생성 - [x] `SPMS.Domain/Common/ApiResponse.cs` — ValidationErrorData, ApiResponseExtensions.ValidationFail() 추가 - [x] `SPMS.API/Program.cs` — InvalidModelStateResponseFactory 설정 - [x] `SPMS.API/Controllers/AuthController.cs` — throw SpmsException.Unauthorized 통일 (2곳) - [x] `SPMS.API/Controllers/ServiceController.cs` — throw SpmsException.Unauthorized 통일 (1곳) - [x] `SPMS.API/Controllers/ProfileController.cs` — throw SpmsException.Unauthorized 통일 (2곳) - [x] `SPMS.Application/DTOs/Message/MessageValidationResultDto.cs` — ValidationErrorDto → FieldError 교체 - [x] `SPMS.Application/Services/MessageValidationService.cs` — FieldError 사용으로 변경 ## 📢 리뷰어 참고 사항 (To Reviewers) - 에러코드 체계는 기존 3자리 숫자 코드(`ErrorCodes.cs`) 유지, PRD의 `DOMAIN_ACTION_REASON` 형식은 미적용 - `ValidationErrorDto` 클래스는 삭제됨 (공통 `FieldError`로 완전 대체) - ExceptionMiddleware는 변경 없음 (기존 SpmsException 처리 로직 그대로 활용) ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-24 07:25:29 +00:00
- FieldError DTO 공통화 (SPMS.Domain/Common)
- ValidationErrorData + ApiResponse.ValidationFail() 추가
- InvalidModelStateResponseFactory로 ModelState 에러 ApiResponse 변환
- Controller Unauthorized 응답 throw SpmsException으로 통일 (에러코드 102)
- MessageValidationService ValidationErrorDto → FieldError 교체

Closes #164
seonkyu.kim added the
Priority
High
Status
In Progress
Type
Improvement
labels 2026-02-24 07:25:44 +00:00
seonkyu.kim self-assigned this 2026-02-24 07:25:48 +00:00
seonkyu.kim added this to the Phase 0: 공통 기반 + 인증 milestone 2026-02-24 07:25:52 +00:00
seonkyu.kim requested review from Owners 2026-02-24 07:35:11 +00:00
seonkyu.kim removed review request for Owners 2026-02-24 07:35:19 +00:00
seonkyu.kim changed title from [Improvement] WP-COM-01 공통 응답/에러 포맷 고정 to improvement: 공통 응답/에러 포맷 고정 (#164) 2026-02-24 07:47:36 +00:00
seonkyu.kim requested review from Owners 2026-02-24 07:47:46 +00:00
seonkyu.kim merged commit a37e57f789 into develop 2026-02-24 07:50:16 +00:00
seonkyu.kim deleted branch improvement/#164-common-error-format 2026-02-24 07:50:34 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-24 07:50:56 +00:00
Sign in to join this conversation.
No description provided.