[refactor] 개발자 포털 백오피스 UI 개선#1587
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
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 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 configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
Warning
|
| 레이어 / 파일(s) | 요약 |
|---|---|
CSS 레이아웃 및 앱 셸 마크업 backend/src/main/resources/static/dev/index.html (lines 9–58, 113–117, 147, 183–190, 202–227, 242–288, 636–638) |
CSS 변수, 앱 셸 그리드 레이아웃, 사이드바/상단바 스타일, ID 복사 버튼 스타일, 프로모션 지도/검색 결과 카드 스타일, 반응형 미디어 쿼리, 새로운 HTML 마크업 구조를 통합하여 전체 시각적 기반을 재구성. |
동적 섹션 관리 및 라우팅 backend/src/main/resources/static/dev/index.html (lines 649, 699–763, 796, 838–844) |
PORTAL_SECTION_IDS 상수, getActivePortalSectionId(), loadActivePortalSectionData(), showActivePortalSection(), updateActiveNav() 함수를 추가하여 URL hash 기반 활성 섹션 판별, 데이터 로드, hashchange 이벤트 처리, 로그인/로그아웃 통합을 구현. |
ID 복사 기능 분리 backend/src/main/resources/static/dev/index.html (lines 856–860, 869–885, 975–991) |
copyTextToClipboard() 헬퍼를 추가하고, 클럽 및 단어사전 목록에서 ID 셀 렌더링을 변경하여 행 클릭과 분리된 "ID 복사" 아이콘 버튼 제공. |
프로모션 다중 이미지 업로드 backend/src/main/resources/static/dev/index.html (lines 477–479, 2466–2472, 2518–2561, 2573–2578) |
파일 입력을 multiple 속성으로 확장하고, 업로드 진행 상태 표시, 파일별 루프 처리, 부분 실패 처리, 성공 카운트 토스트, 최종 버튼 라벨 복원을 구현. |
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~45 minutes
Suggested labels
🔨 Refactor, 💻 FE
Suggested reviewers
- oesnuj
- seongwon030
- suhyun113
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | PR 제목은 '개발자 포털 백오피스 UI 개선'으로, 실제 변경 사항인 사이드바 기반 레이아웃 구조화, 섹션 동적 전환, 홍보게시판 다중 이미지 업로드, ID 복사 버튼 추가 등의 핵심 변경을 정확히 요약하고 있습니다. |
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |
| 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. |
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Commit unit tests in branch
refactor/#1586-admin-MOA-895
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.
Comment @coderabbitai help to get the list of available commands and usage tips.
Test Results123 tests 123 ✅ 21s ⏱️ Results for commit eb38165. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@backend/src/main/resources/static/dev/index.html`:
- Around line 756-759: The code is calling showActivePortalSection() twice (once
indirectly via showLogin(true) and again immediately after), causing duplicate
list loads and flicker; remove the redundant showActivePortalSection() call and
instead call only the Kakao map initializer (or a small helper, e.g.,
initKakaoMap()) conditionally if the second call exists solely to initialize the
map, or move/guard the map init inside showActivePortalSection() so it only runs
once; apply the same fix pattern to the other duplicate blocks that mirror this
behavior (the other occurrences noted in the review).
- Around line 2518-2527: The partial-upload failure branch in
handlePartialUploadFailure currently only sets a banner and skips updating local
UI, so ensure that even if reloadPromotionList({ selectedArticleId:
targetArticleId, keepMessage: true }) fails you still apply the
already-uploadedUrls to the local state used by the textarea/preview; after
computing syncMessage, call the local updater that populates the
preview/textarea (e.g., the component/state setter that renders uploaded images
— replace with your actual setter such as setPromotionImages/updatePreviewState)
with uploadedUrls before calling setPromotionBanner, so the UI reflects
server-side uploads even when sync fails.
- Around line 856-858: The copyTextToClipboard function currently calls
navigator.clipboard.writeText() without awaiting it; update the function
(copyTextToClipboard) to await the Promise returned by
navigator.clipboard.writeText(text || '') and add a try/catch around that await
so you only call showToast(message || '복사됨', 'success') on successful completion
and call showToast with an error message (e.g., '복사 실패') in the catch block;
this prevents unhandled rejections and ensures the toast reflects the actual
result.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ce0bf80f-b372-42e2-a6a8-ff44cb2e5383
📒 Files selected for processing (1)
backend/src/main/resources/static/dev/index.html
#️⃣연관된 이슈
📝작업 내용
중점적으로 리뷰받고 싶은 부분(선택)
논의하고 싶은 부분(선택)
multipart files[]기반 배치 업로드 API를 별도로 추가할지 논의가 필요합니다.🫡 참고사항
node --check로index.html내부 script 문법 확인git diff --checkbackend/.gradle-user-home/는 커밋에 포함하지 않았습니다.Summary by CodeRabbit
New Features
Refactor
Style