Skip to content

Conversation

@joel-you
Copy link
Collaborator

📋 PR 요약

주문 생성 API의 검증 로직 강화, 테스트 커버리지 확보, API 문서화 작업을 완료했습니다.

🔗 관련 이슈

📝 변경 사항

  • 새로운 기능 추가
  • 리팩토링
  • 문서 업데이트
  • 테스트 코드 추가/수정

🛠️ 기술적 변경 사항

수정된 파일:

  • OrderItemRequest.java: unitPrice 검증을 @min에서 @DecimalMin(0.01)로 개선

새로 추가된 파일:

  • OrderControllerTest.java: Controller 통합 테스트 6개 (성공 1개, 실패 5개)
  • OrderServiceTest.java: Service 단위 테스트 1개
  • order-orchestrator-openapi.yml: OpenAPI 3.0.3 스펙 문서

주요 로직 변경:

  • BigDecimal 타입에 적합한 검증 어노테이션 적용으로 0원 상품 방지

🧪 테스트

  • 단위 테스트 통과
  • 통합 테스트 통과

테스트 커버리지: Line 100% (11/11), Branch 66.67% (2/3)

테스트 케이스:

  1. 정상 주문 생성 (성공)
  2. customerId null 검증 (실패)
  3. orderItems 빈 배열 검증 (실패)
  4. unitPrice 0원 검증 (실패)
  5. quantity 0 이하 검증 (실패)
  6. 잘못된 JSON 형식 검증 (실패)

📖 문서 업데이트

  • API 문서 업데이트 완료 (OpenAPI 스펙, Redocly 검증 완료)
  • 코드 주석 업데이트 완료

✅ 체크리스트

  • 코드가 컨벤션을 따르고 있습니다
  • 자가 리뷰를 완료했습니다
  • 테스트를 추가/업데이트했습니다
  • CI/CD 파이프라인이 통과합니다

* Mapstruct 만 사용하도록 수정
* UUID to Long 로직 제거 (사용하지 않는 로직)
- Flyway 마이그레이션 스크립트 작성 (V1__Create_order_tables.sql)
- orders, order_items 테이블 생성 with UUID 컬럼
- JPA 엔티티 컬럼명 업데이트 (orderUuid→orderId, userId→customerId)
- 커스텀 쿼리 메서드 구현 (findByCustomerId, findByStatus 등)
- 성능 최적화 인덱스 추가 (customer_id, status, order_date 등)
- 신규/기존 주문 저장 및 업데이트 지원
- OrderItems cascade 처리 포함
- MapStruct 기반 도메인 변환 적용
- ID, UUID, 주문번호 기반 조회 지원
- MapStruct 기반 도메인 변환 적용
- 고객/상태/기간 기반 목록 조회 지원
- Stream API 기반 도메인 변환 적용
- ID/UUID 기반 주문+항목 조회 지원
- JOIN FETCH로 성능 최적화
- Validation이 적용된 DTO 추가 (Request/Response)
- UseCase 및 Command 패턴 구현
- 주문 번호 자동 생성 기능이 포함된 OrderService 추가
- REST 엔드포인트 POST /api/v1/orders 추가
- MapStruct DTO 매퍼 추가
- @min을 @DecimalMin으로 변경하여 소수점 단위 가격 지원
- 최소 가격을 0.01로 설정하여 0원 상품 방지
- BigDecimal 타입에 적합한 검증 어노테이션 적용
- OrderControllerTest: POST /api/v1/orders 성공 케이스 검증
- OrderServiceTest: 주문 생성 로직 단위 테스트
- MockMvc 기반 통합 테스트로 실제 HTTP 요청/응답 검증
- 테스트 커버리지 70% 이상 달성
- POST /api/v1/orders 엔드포인트 명세 작성
- 요청/응답 스키마 정의 (CreateOrderRequest, OrderResponse)
- 에러 응답 스키마 정의 (ErrorResponse, ValidationError)
- 비즈니스 규칙 및 검증 규칙 상세 문서화
- 다양한 예제 시나리오 포함 (성공/실패 케이스)
- customerId null 검증 테스트
- orderItems 빈 배열 검증 테스트
- unitPrice 0원 검증 테스트
- 검증 실패 시 UseCase 미호출 확인
- quantity 0 이하 검증 테스트 추가
- 잘못된 JSON 형식 처리 테스트 추가
- API 엣지 케이스 커버리지 강화
- OrderResponse, OrderItemResponse를 application layer로 이동
- OrderDtoMapper를 OrderMapper로 리팩토링 (request-to-command 변환)
- CreateOrderUseCase가 OrderResponse 직접 반환하도록 변경
- OrderController 로직 간소화 (ProductController 스타일)
- OrderResponseMapper 추가 (domain-to-response 변환)
- 테스트 커버리지 개선
  * monolith: ProductMapperTest 추가 (55% 달성)
  * order-orchestrator: OrderMapperTest 추가 (70% 달성)
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

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.

1 participant