Skip to content

refactor(order): InboxEvent eventId → eventKey 통일 [KAN-249]#36

Open
lian2945 wants to merge 5 commits into
mainfrom
refactor/249
Open

refactor(order): InboxEvent eventId → eventKey 통일 [KAN-249]#36
lian2945 wants to merge 5 commits into
mainfrom
refactor/249

Conversation

@lian2945

Copy link
Copy Markdown
Collaborator

관련 이슈

KAN-249

변경 사항 요약

  • InboxEvent 인터페이스에서 Long eventId() 제거, occurredAt()만 유지
  • 이벤트 레코드 7개(StockReserveSucceededEvent, StockReserveFailedEvent, PaymentSucceededEvent, PaymentFailedEvent, PaymentCancelSucceededEvent, PaymentCancelFailedEvent, DeliveryStartedEvent, DeliveryCompletedEvent)에서 event_id 필드 제거
  • OrderInboxEntity: eventId(Long) → eventKey(String, event_key 컬럼)로 변경
  • OrderInboxJpaRepository: existsByEventIdexistsByEventKey (derived query)
  • IdempotentAspect: consumerRecord.key() 기반으로 변경, null 시 topic-partition-offset fallback 처리

테스트 체크리스트

  • stock-reserve-succeeded 이벤트 수신 시 order_inbox에 eventKey로 저장되는지 확인
  • 동일 Kafka message key로 재전송 시 중복 폐기(PROCESSED 상태 유지)되는지 확인
  • @RetryableTopic 재시도(key=null) 시 topic-partition-offset fallback key로 정상 처리되는지 확인

lian2945 and others added 5 commits June 9, 2026 17:45
…ype 전파 [KAN-215]

- ProductType enum 신규 (RELEASE, GENERAL_GOODS)
- OrderLine 도메인에 productType 필드 추가 (createBuilder, reconstructBuilder)
- OrderLineEntity에 product_type 컬럼 추가 (@Enumerated STRING)
- OrderMapper toLineEntity/toLineDomain에 productType 매핑 추가
- OrderPrepareEvent.OrderItemPayload에 product_type 필드 추가
- CreateOrderCommand.OrderLineCommand에 productType 추가
- OrderLineRequest에 productType 추가 (validation 포함)
- CreateOrderService: command에서 productType 전달
- CreateReleaseOrderService: ProductType.RELEASE 하드코딩

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- OrderLine 도메인, OrderLineEntity에 thumbnailUrl 필드 추가
- 주문 생성 요청(CreateOrderRequest, CreateReleaseOrderRequest, OrderLineRequest)에 thumbnailUrl 수신
- CreateOrderCommand, CreateReleaseOrderCommand에 thumbnailUrl 전달
- CreateOrderService, CreateReleaseOrderService에서 OrderLine 생성 시 thumbnailUrl 세팅
- OrderMapper toLineEntity/toLineDomain에 thumbnailUrl 매핑
- OrderResultMapper, OrderLineResult, OrderLineResponse에 thumbnailUrl 포함

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ReadNotificationCommand: notificationId → notificationIds(List<Long>)로 변경
- ReadNotificationUseCase: read() → readAll()로 변경
- ReadNotificationService: updateAllByIdsAndUserId 단일 쿼리로 일괄 처리
- NotificationJpaRepository: @Modifying bulk UPDATE 쿼리 추가
- NotificationJpaAdapter: updateAllByIdsAndUserId 구현
- NotificationCommandController: PATCH /{id}/read → PATCH /read (body: notificationIds)
- ReadNotificationsRequest: 신규 request DTO 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…규칙 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- InboxEvent 인터페이스에서 Long eventId() 제거, occurredAt()만 유지
- 이벤트 레코드 7개(Stock/Payment/Delivery 관련)에서 event_id 필드 제거
- OrderInboxEntity: eventId(Long) → eventKey(String, event_key 컬럼)
- OrderInboxJpaRepository: existsByEventId → existsByEventKey (derived query)
- IdempotentAspect: consumerRecord.key() 기반으로 변경, null 시 topic-partition-offset fallback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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