Skip to content

chore: 릴리즈 — 찜한 매장 카드 이미지 상품 이미지로 통일 - #218

Merged
chanwoo7 merged 2 commits into
mainfrom
develop
Aug 26, 2026
Merged

chore: 릴리즈 — 찜한 매장 카드 이미지 상품 이미지로 통일#218
chanwoo7 merged 2 commits into
mainfrom
develop

Conversation

@chanwoo7

@chanwoo7 chanwoo7 commented Aug 26, 2026

Copy link
Copy Markdown
Member

배경

이슈 #216 후속 릴리즈입니다.

포함 PR

검증

  • yarn validate 통과 (190 suites / 1,636 tests), 필수 체크 전부 pass 후 develop 머지.
  • Codex 리뷰는 #217에서 대기 시간 내 미수신(👀 미등장) — 게이트 규칙에 따라 필수 체크 pass로 머지했습니다.

이슈 #216 반영.
myWishlistedStores 카드의 imageUrls가 매장 대표 이미지(StoreImage)를 쓰고 있어
인기 매장 카드(PopularStore.cakeImageUrls, 상품 대표 이미지)와 소스가 달랐다 —
같은 매장이 화면마다 다른 이미지로 보이고, 매장 대표 이미지 미등록 시 카드가 비는 문제.

변경점:
- StoreRepository.findStoreCakeImages에 limit 파라미터 추가(기본값 기존 4장 유지)
- StoreWishlistService: StoreImage 대신 findStoreCakeImages(3장) 재사용,
  평점 집계와 Promise.all 병렬화
- StoreWishlistRepository: 목록 select에서 store_images 제거
- SDL imageUrls 설명 갱신

회귀 테스트 2건 교체: 최신 상품 3장 우선·이미지 없는 매장 빈 배열 /
삭제 이미지·비활성 상품 제외.

Closes #216

Claude-Session: https://claude.ai/code/session_01KfiGgWooJdsa4iPQPmqvBj
fix(store): 찜한 매장 카드 이미지를 상품 대표 이미지로 통일
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 26 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c8633a95-f41c-4f45-a30a-ab15fc897fcc

📥 Commits

Reviewing files that changed from the base of the PR and between a1cba52 and 8a2dcf6.

📒 Files selected for processing (5)
  • src/features/store/repositories/store-wishlist.repository.ts
  • src/features/store/repositories/store.repository.ts
  • src/features/store/services/store-wishlist.service.spec.ts
  • src/features/store/services/store-wishlist.service.ts
  • src/features/store/store-wishlist.graphql

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.

@github-actions

Copy link
Copy Markdown

🧹 knip — dead-code 리포트

요약 항목 없음
전체 리포트
(knip 출력 없음 — 이슈 0이거나 실행 실패)

청소 후보(오탐 가능) · 기준 docs/guide/architecture-conventions.md

@github-actions

Copy link
Copy Markdown

🩺 NestJS Doctor — 89/100 (Good)

진단 283건 (error 0).

Category error warning info
architecture 0 0 13
correctness 0 130 0
performance 0 24 17
schema 0 0 86
security 0 13 0
architecture / security 상위 항목
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'IAuditLogRepository'.
  • warning security/security/no-exposed-env-vars: Direct 'process.env.NODE_ENV' access in 'AuthController'. Use ConfigService instead.
  • warning security/security/require-guards-on-endpoints: Endpoint 'start' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'callback' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'refresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'logout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerLogin' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerRefresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'sellerLogout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'devIssueToken' has no @UseGuards() at class or method level.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal module '@/features/conversation/repositories/conversation.repository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'ConversationRepository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal module '@/features/order/repositories/order.repository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal type 'OrderRepository'.
  • info architecture/architecture/no-barrel-export-internals: Barrel file re-exports internal module '@/features/product/repositories/product.repository'.

오탐 포함 가능 · 기준 docs/guide/architecture-conventions.md

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8a2dcf648e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +71 to +74
this.storeRepo.findStoreCakeImages(
storeIds,
WISHLISTED_STORE_IMAGE_LIMIT,
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Batch image queries for wishlist pages

When a caller requests the allowed 50-item wishlist page, this call passes all 50 IDs to findStoreCakeImages, whose storeIds.map executes a separate product.findMany for every store. The endpoint therefore adds up to 50 concurrent product queries per request, whereas the previous nested relation selection could batch image loading; under concurrent traffic this increases database load and can cause connection-pool waits or timeouts. Fetch and group the product images in a bounded number of queries instead.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

미반영(기존 결정 유지): findStoreCakeImages의 매장당 병렬 조회는 popularStores·todayPickupStores가 이미 운영 중인 의도된 트레이드오프(전체 상품 materialize 대신 take 제한, 레포 주석 참조). 병렬도는 페이지 상한(50)으로 바운드되고 Prisma 커넥션 풀 큐잉으로 흡수됨. 트래픽 증가로 실측 문제가 생기면 윈도우 함수 기반 배치 조회로 세 호출부를 한꺼번에 최적화하는 편이 맞다고 판단.

@github-actions

Copy link
Copy Markdown

Coverage report

St.
Category Percentage Covered / Total
🟢 Statements 97.65% 5028/5149
🟢 Branches 93.98% 2060/2192
🟢 Functions 96.22% 968/1006
🟢 Lines 98.2% 4574/4658

Test suite run success

1636 tests passing in 190 suites.

Report generated by 🧪jest coverage report action from 8a2dcf6

@codecov

codecov Bot commented Aug 26, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 80.00000% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
.../features/store/services/store-wishlist.service.ts 75.00% 0 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@chanwoo7
chanwoo7 merged commit 7394b8a into main Aug 26, 2026
15 checks passed
@chanwoo7
chanwoo7 deleted the develop branch August 26, 2026 18:27
chanwoo7 added a commit that referenced this pull request Aug 27, 2026
chore: 릴리즈 — 찜한 매장 카드 이미지 상품 이미지로 통일
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