Skip to content

main 반영#618

Closed
HA-SEUNG-JEONG wants to merge 32 commits into
mainfrom
feat/class
Closed

main 반영#618
HA-SEUNG-JEONG wants to merge 32 commits into
mainfrom
feat/class

Conversation

@HA-SEUNG-JEONG

Copy link
Copy Markdown
Contributor

🌱 연관된 이슈

☘️ 작업 내용

🍀 참고사항

🎨 디자인 비교 (UI 컴포넌트 PR에만 작성)

Figma 원본 Storybook 구현
- -
비교 결과
항목 상태 비고
색상
간격
타이포그래피
반경
트랜스폼

스크린샷 (선택)

Hyeonjun0527 and others added 30 commits May 16, 2026 22:12
Why: 레슨 질문 모달에서 업로드 공개 URL을 imageKeys로 보내 백엔드가 잘못된 R2 key를 재서명하던 문제를 막기 위함.

Constraint: origin/develop 기반 클린브랜치에서 레슨 QnA 이미지 key 변환만 수정하고 API 계약은 변경하지 않음.

Tested: yarn eslint src/app/(class-lesson)/class/vibe-intro/lesson/[id]/_components/lesson-qna-submission-modal.tsx --fix

Tested: yarn biome format --write src/app/(class-lesson)/class/vibe-intro/lesson/[id]/_components/lesson-qna-submission-modal.tsx

Tested: yarn typecheck

Tested: git diff --check

Co-authored-by: OmX <omx@oh-my-codex.dev>
class E2E 테스트 추가 및 버그 수정
Co-authored-by: OmX <omx@oh-my-codex.dev>
Co-authored-by: OmX <omx@oh-my-codex.dev>
Co-authored-by: OmX <omx@oh-my-codex.dev>
Co-authored-by: OmX <omx@oh-my-codex.dev>
…y-20260516

QnA 이미지 키 전송 오류 수정
Co-authored-by: OmX <omx@oh-my-codex.dev>
…-notion-paste

fix: 노션 복붙 본문 유실 방지
…teRequest 타입 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…화 범위 보완

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
프론트 레포를 운영 릴리즈 기록 SSOT로 두고 main prod 배포 및 backend-prod-deployed dispatch 기반 release record 자동 기록을 추가합니다.\n\n검증:\n- lint\n- prettier\n- typecheck\n- build\n- storybook\n- e2e\n- security\n- validate-release-records\n- Chromatic
Co-authored-by: OmX <omx@oh-my-codex.dev>
PR #613의 develop -> main 병합 전 충돌을 해소하기 위해 origin/main 변경사항을 develop에 반영합니다.
커리큘럼 드로어 배지 E2E는 develop의 scoped locator 방식을 유지해 Playwright strict mode 중복 매칭을 방지합니다.

Constraint: PR #613은 develop에서 main으로 올리는 운영 반영 PR이므로 develop에 main 최신 변경사항을 먼저 흡수한다
Rejected: page-global or locator 복원 | strict mode에서 배지 컨테이너와 아이콘이 동시에 매칭될 수 있음
Confidence: high
Scope-risk: moderate
Tested: yarn eslint e2e/class/curriculum-drawer.spec.ts
Tested: git diff --check
Related: PR #613
Co-authored-by: OmX <omx@oh-my-codex.dev>
Notion 등 복합 HTML 붙여넣기에서 텍스트/표/이미지 순서를 보존하고, 실제 클립보드 payload 확인을 위한 어드민 진단 페이지를 추가합니다.
공용 MarkdownEditor의 복합 붙여넣기에서 표를 마크다운 표로 보존하고 Notion attachment 이미지는 위치 안내 문구로 남깁니다.
Co-authored-by: OmX <omx@oh-my-codex.dev>
Co-authored-by: OmX <omx@oh-my-codex.dev>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
slug 독립성을 위해 코스 공용 에셋을 vibe-intro 하위에서
class/ 공통 경로로 이동. curriculum SVG 10개 + 루트 에셋 5개 이동.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…be-intro → class/ 경로 이동

slug 독립성을 위해 모든 클래스 컴포넌트를 vibe-intro 하위에서
class/ 공통 경로로 이동. builder-feed-utils 유틸 분리 및
admin/builder-profile 동적 slug 참조 수정.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
(class-lesson)/class/vibe-intro/lesson/[id] → /class/[slug]/lesson/[id]
(landing)/class/vibe-intro/** → /class/[slug]/**
[id]/page.tsx를 [slug]/page.tsx로 통합 (동일 레벨 동적 세그먼트 충돌 해결)
(service)/payment: courseSlug 기반 폴백 처리

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… 데드 코드 제거

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@HA-SEUNG-JEONG HA-SEUNG-JEONG self-assigned this May 18, 2026
@vercel

vercel Bot commented May 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
study-platform-client-dev Ready Ready Preview, Comment May 18, 2026 9:54am

@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@HA-SEUNG-JEONG has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 32 minutes and 42 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: b9eb3b66-ddb3-4058-b457-17e2c5631eae

📥 Commits

Reviewing files that changed from the base of the PR and between 5d80288 and b708bcf.

⛔ Files ignored due to path filters (25)
  • public/class/checklist.svg is excluded by !**/*.svg
  • public/class/curriculum/chapter-lock.svg is excluded by !**/*.svg
  • public/class/curriculum/chevron-up.svg is excluded by !**/*.svg
  • public/class/curriculum/edit-note.svg is excluded by !**/*.svg
  • public/class/curriculum/lesson-lock-icon.svg is excluded by !**/*.svg
  • public/class/curriculum/line-active.svg is excluded by !**/*.svg
  • public/class/curriculum/line-locked.svg is excluded by !**/*.svg
  • public/class/curriculum/lock-open.svg is excluded by !**/*.svg
  • public/class/curriculum/marker-active.svg is excluded by !**/*.svg
  • public/class/curriculum/marker-default.svg is excluded by !**/*.svg
  • public/class/curriculum/mode.svg is excluded by !**/*.svg
  • public/class/detail/audit/node-142-3114.png is excluded by !**/*.png
  • public/class/detail/audit/node-210-2643.png is excluded by !**/*.png
  • public/class/detail/audit/node-225-4596.png is excluded by !**/*.png
  • public/class/detail/audit/node-306-2830.png is excluded by !**/*.png
  • public/class/detail/audit/node-33-1925.png is excluded by !**/*.png
  • public/class/detail/audit/node-771-23642.png is excluded by !**/*.png
  • public/class/detail/audit/node-865-33747.png is excluded by !**/*.png
  • public/class/detail/audit/node-865-34214.png is excluded by !**/*.png
  • public/class/detail/class-detail-figma-ref.png is excluded by !**/*.png
  • public/class/lesson-lock.svg is excluded by !**/*.svg
  • public/class/star-disabled.svg is excluded by !**/*.svg
  • public/class/star-enabled.svg is excluded by !**/*.svg
  • public/class/vibe-intro/feed-more-menu.png is excluded by !**/*.png
  • public/class/vibe-intro/learning-map-modal-ref.png is excluded by !**/*.png
📒 Files selected for processing (64)
  • .github/workflows/deploy-prod.yml
  • .gitignore
  • e2e/class/journey-map.spec.ts
  • e2e/class/payment.spec.ts
  • e2e/class/qna.spec.ts
  • e2e/group-study/create.spec.ts
  • public/class/payments.json
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/curriculum-drawer.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-builder-feed-card.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-builder-feed-detail-modal.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-link-modal.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-qna-card.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-qna-detail-modal.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-qna-submission-modal.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-rating-box.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-review-form.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-screenshot-modal.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-tabs.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-top-bar.tsx
  • src/app/(class-lesson)/class/[slug]/lesson/[id]/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/_components/feed-tab.tsx
  • src/app/(landing)/class/[slug]/(learning)/_components/qna-tab.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/[id]/edit/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/[id]/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/_components/feed-list-card.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/_components/pagination-bar.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/_components/paywall-section.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/_components/plan-selection-modal.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/feed/write/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/home/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/layout.tsx
  • src/app/(landing)/class/[slug]/(learning)/payment/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/payment/pending/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/payment/success/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/qa/[id]/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/qa/page.tsx
  • src/app/(landing)/class/[slug]/(learning)/qa/write/page.tsx
  • src/app/(landing)/class/[slug]/_components/builder-feed-utils.tsx
  • src/app/(landing)/class/[slug]/complete/page.tsx
  • src/app/(landing)/class/[slug]/page.tsx
  • src/app/(landing)/class/vibe-intro/(learning)/feed/[id]/edit/page.tsx
  • src/app/(landing)/class/vibe-intro/(learning)/feed/page.tsx
  • src/app/(landing)/class/vibe-intro/(learning)/qa/page.tsx
  • src/app/(service)/payment/fail/page.tsx
  • src/app/(service)/payment/success/page.tsx
  • src/components/admin/courses/admin-course-detail-page-client.tsx
  • src/components/common/modals/builder-profile-modal.tsx
  • src/components/pages/class/chapter-header.tsx
  • src/components/pages/class/home-constants.ts
  • src/components/pages/class/lesson-preview-modal.tsx
  • src/components/pages/class/lesson-stamp.tsx
  • src/components/pages/class/payment/amount-section.tsx
  • src/components/pages/class/payment/buyer-info-section.tsx
  • src/components/pages/class/payment/checkout-form.tsx
  • src/components/pages/class/payment/course-summary-section.tsx
  • src/components/pages/class/payment/payment-exit-confirm-modal.tsx
  • src/components/pages/class/payment/payment-pending.tsx
  • src/components/pages/class/payment/payment-success.tsx
  • src/components/pages/class/payment/tos-modal.tsx
  • src/components/pages/class/payment/tos-section.tsx
  • src/components/pages/class/plan-selection-modal.tsx
  • src/components/pages/class/roadmap-tab.tsx
  • src/components/pages/class/utils/builder-feed-utils.tsx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/class

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 and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release:patch Patch production release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants