Skip to content

chore: 릴리즈 — 상품 이미지 상한 6장 - #518

Merged
chanwoo7 merged 2 commits into
mainfrom
develop
Oct 5, 2026
Merged

chanwoo7 merged 2 commits into
mainfrom
develop

Conversation

@chanwoo7

@chanwoo7 chanwoo7 commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

판매자 앱 시안에 맞춘 소형 변경 1건을 운영에 반영합니다.

  • feat: 상품 이미지 상한 5 → 6장 #517 상품 이미지 상한을 5장에서 6장으로 올립니다(사용자 결정 2026-10-06).
    • 판매자 앱 상품 등록 시안 '이미지 추가 (0/6)'
    • 개수 검사는 sellerAddProductImage 한 곳, 에러 문구는 { max }로 자동 반영
    • SDL·마이그레이션 변경 없음, 구매자·관리자 FE 무영향

Summary by CodeRabbit

  • 새로운 기능
    • 상품 등록 시 이미지 최대 개수가 5장에서 6장으로 늘어났습니다.

판매자 앱 상품 등록 시안의 이미지 드롭존이 '이미지 추가 (0/6)'로 최대 6장을 받는다.
사용자 결정(2026-10-06)으로 BE 상한을 시안에 맞춤.

- MAX_PRODUCT_IMAGES 5 → 6. 이 상수를 쓰는 곳은 sellerAddProductImage 하나.
  관리자 경로는 이미지 추가가 없고 조회(imageUrls)만이라 영향 없음.
- PRODUCT_IMAGE_LIMIT_EXCEEDED 메시지는 { max }로 렌더되므로 '최대 6장'으로 함께 바뀜.
- SDL 변경 없음 — 상한 문구가 SDL description에 없음.
- 회귀 테스트 1건 교체: 6장째 추가 성공, 7장째 PRODUCT_IMAGE_LIMIT_EXCEEDED,
  메시지의 max, 건수 6 유지. 시드는 리터럴이라 상수만 5로 되돌리면 6장째 추가에서 실패(반증 확인).
feat: 상품 이미지 상한 5 → 6장
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-05T22:44:47.781953Z 38b4324 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: CaQuick/caquick-be/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1ab926e0-fe60-4f59-8db8-933bf2bd8366
📥 Commits

Reviewing files that changed from the base of the PR and between 1bc6527 and 38b4324.

📒 Files selected for processing (2)
  • src/features/product/constants/product-seller.constants.ts
  • src/features/product/services/product-seller-image.service.spec.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

상품 이미지 최대 등록 수를 5장에서 6장으로 변경했습니다. 서비스 테스트는 6번째 이미지 등록을 허용하고 7번째 등록을 거부하는지 확인합니다.

Changes

상품 이미지 등록 한도

Layer / File(s) Summary
등록 한도와 검증
src/features/product/constants/product-seller.constants.ts, src/features/product/services/product-seller-image.service.spec.ts
최대 이미지 수를 6장으로 변경했습니다. 테스트는 6번째 이미지 등록 성공, 7번째 등록 시 PRODUCT_IMAGE_LIMIT_EXCEEDED 오류와 최대 장수 메시지, 저장된 이미지 수가 MAX_PRODUCT_IMAGES와 일치하는지 확인합니다.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 38b43

상품 이미지 6장 등록과 7번째 등록 거부가 구현 및 테스트에 반영되어 있으며, 확인된 병합 차단 위험은 없습니다.

Security Architecture Review

Security architecture risk: ⚪ Minimal · up to 38b43

One additional image is allowed per product without changing seller permissions or upload ownership checks. No material security risk was identified as introduced or worsened by this change.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The intended incremental allowance is one image per product through the existing seller-authorized path. It grants no additional store access, account authority or storage credential capability.

Trust Boundaries and Controls

  • observed — Seller-controlled product IDs remain store-scoped. Upload URLs are checked for HTTPS, the configured S3 host, and a purpose/account-specific path prefix before persistence. These checks are unchanged by the PR.

Resilience and Maintainability Implications

  • inferred — Image creation and auditing are transactionally coupled, but counting occurs before that transaction and insertion has no request-idempotency mechanism. Concurrent additions can exceed the configured maximum, and response-loss retries can duplicate rows. These conditions already exist at the base revision and are not retained as PR-introduced concerns.
🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed 제목은 상품 이미지 상한을 6장으로 변경하는 주요 내용을 간결하게 설명합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

🧹 knip — dead-code 리포트

Unused exported types (1)
전체 리포트
Unused exported types (1)
RateLimitPolicy  type  src/global/rate-limit/index.ts:4:8

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

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

🩺 NestJS Doctor — 90/100 (Excellent)

진단 484건 (error 12).

Category error warning info
architecture 1 1 44
correctness 0 266 0
performance 0 36 28
schema 0 0 76
security 11 21 0
architecture / security 상위 항목
  • error architecture/architecture/no-manual-instantiation: Manual instantiation of 'OutboxRepository' detected. Use dependency injection instead.
  • 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.
  • warning security/security/require-guards-on-endpoints: Endpoint 'adminLogin' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'adminRefresh' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'adminLogout' has no @UseGuards() at class or method level.
  • warning security/security/require-guards-on-endpoints: Endpoint 'getJwks' has no @UseGuards() at class or method level.

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

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Coverage report

St.❔
Category Percentage Covered / Total
🟢 Statements 98.01% 10684/10901
🟢 Branches 92.94% 4065/4374
🟢 Functions 97.53% 2132/2186
🟢 Lines 98.58% 9720/9860

Test suite run success

4236 tests passing in 383 suites.

Report generated by 🧪jest coverage report action from 38b4324

@codecov

codecov Bot commented Oct 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@chanwoo7
chanwoo7 merged commit 3c82cdc into main Oct 5, 2026
27 checks passed
@chanwoo7
chanwoo7 deleted the develop branch October 5, 2026 22:51
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