Skip to content

fix: 릴리즈 리뷰 반영 (대화 목록 페이지·부가 정보를 단일 스냅샷으로) - #276

Merged
chanwoo7 merged 2 commits into
developfrom
fix/release-review-conversation-page-snapshot
Sep 2, 2026
Merged

fix: 릴리즈 리뷰 반영 (대화 목록 페이지·부가 정보를 단일 스냅샷으로)#276
chanwoo7 merged 2 commits into
developfrom
fix/release-review-conversation-page-snapshot

Conversation

@chanwoo7

@chanwoo7 chanwoo7 commented Sep 2, 2026

Copy link
Copy Markdown
Member

릴리즈 PR #272 Codex P2 대응 — myConversations의 페이지·건수·부가 정보 조회를 한 트랜잭션(단일 스냅샷)으로 통합해, 조회 사이 커밋으로 미리보기와 정렬 기준/커서가 어긋나는 혼합 상태를 차단. API 표면 변경 없음.

릴리즈 PR #272 Codex P2 반영: myConversations의 페이지 조회·건수·부가
정보(마지막 메시지 미리보기·안읽음 수)가 독립 조회로 쪼개져 있어, 사이에
커밋된 메시지가 미리보기에만 반영되고 정렬 기준·커서(lastMessageAt)는
과거 값으로 남는 혼합 상태가 나갈 수 있었다.

- getConversationPageWithExtras: 세 조회를 한 트랜잭션(단일 REPEATABLE
  READ 스냅샷)으로 통합, 부가 정보는 페이지 항목(limit)만 조회
- 기존 세 메서드는 tx 스코프 private으로 전환(외부 사용처 없음)
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 0b45ec1c-663a-48a1-a1bc-a9fac92bfefe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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 Sep 2, 2026

Copy link
Copy Markdown

🩺 NestJS Doctor — 90/100 (Excellent)

진단 303건 (error 0).

Category error warning info
architecture 0 0 9
correctness 0 154 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

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

🧹 knip — dead-code 리포트

Unused dependencies (1)
Duplicate exports (1)
전체 리포트
Unused dependencies (1)
graphql-ws  package.json:63:6
Duplicate exports (1)
KEYWORD_RANK_SNAPSHOT_SIZE|MAX_POPULAR_KEYWORDS_LIMIT  src/features/search/constants/search.constants.ts

청소 후보(오탐 가능) · 기준 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: 1b6d2eba37

ℹ️ 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".

limit: number;
cursor?: { lastMessageAt: Date; id: bigint };
}) {
return this.prisma.$transaction(async (tx) => {

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 Set the transaction isolation level explicitly

When the database or session uses READ COMMITTED, Prisma inherits that isolation level, so this transaction still gives each statement a fresh snapshot. A message committed after the page query can therefore appear in the later preview/unread queries while rows and its cursor retain the older last_message_at, preserving the mixed-state race this change is intended to eliminate. Pass isolationLevel: Prisma.TransactionIsolationLevel.RepeatableRead in the transaction options rather than relying on the server default.

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.

반영: isolationLevel RepeatableRead 명시 — 서버 기본값 의존 제거.

@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

Coverage report

St.
Category Percentage Covered / Total
🟢 Statements 97.68% 5895/6035
🟢 Branches 93.12% 2316/2487
🟢 Functions 96.44% 1165/1208
🟢 Lines 98.26% 5368/5463

Test suite run success

1868 tests passing in 225 suites.

Report generated by 🧪jest coverage report action from 6db8b6f

PR #276 Codex P2 반영: 단일 스냅샷 보장이 서버/세션 기본 격리 수준에
의존하지 않도록 REPEATABLE READ를 명시(READ COMMITTED 환경에서는
문장마다 새 스냅샷이라 혼합 상태 레이스가 재발).
@chanwoo7
chanwoo7 merged commit 7ea51fb into develop Sep 2, 2026
11 checks passed
@chanwoo7
chanwoo7 deleted the fix/release-review-conversation-page-snapshot branch September 2, 2026 19:23
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