Skip to content

[FIX] #212 어드민 패널 Bootstrap/CSS 렌더링 수정 - #227

Merged
PBEM22 merged 18 commits into
developfrom
feat/#212/admin-panel
Jul 28, 2026
Merged

[FIX] #212 어드민 패널 Bootstrap/CSS 렌더링 수정#227
PBEM22 merged 18 commits into
developfrom
feat/#212/admin-panel

Conversation

@PBEM22

@PBEM22 PBEM22 commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

📌 관련 이슈

✨ 변경 사항

  • layout.html th:fragment<html> 태그로 이동하여 <head> 포함 → Bootstrap, admin.css 미적용 근본 원인 해결
  • admin.css 정적 파일 신규 추가, 기존 인라인 <style> 제거
  • SecurityConfig WHITE_LIST에 /css/** 추가
  • dashboard.html, users.html, posts.html 템플릿을 admin.css 클래스 기반으로 전면 교체
  • users.html 컬럼 순서 버그 수정 (status/createdAt 뒤바뀜, 중복 td 제거)

📸 테스트 증명 (필수)

📚 리뷰어 참고 사항

  • Thymeleaf th:replace로 fragment를 참조할 때 th:fragment<body><th:block>에 정의되면 <head>가 렌더링에서 제외됩니다. <html> 태그에 선언해야 전체 문서(head 포함)가 fragment 범위에 포함됩니다.

✅ 체크리스트

  • 브랜치 전략(git flow)을 따랐나요? (develop -> feat/...)
  • 로컬에서 빌드 및 실행이 정상적으로 되나요?
  • 불필요한 주석(TODO 등)이나 더미 코드는 제거했나요?
  • 컨벤션(커밋 메시지, 코드 스타일)을 지켰나요?

PBEM22 added 18 commits July 20, 2026 23:41
- Thymeleaf + Bootstrap 5 기반 SSR 어드민 패널 추가
- InMemoryUserDetailsManager로 환경변수 기반 어드민 계정 관리
- Spring Security 별도 FilterChain(@order(1))으로 API와 세션 분리
- 대시보드(통계), 유저 관리(정지/해제/강제탈퇴), 분철글 관리(상태필터/삭제) 구현
- UserStatus에 SUSPENDED 추가, User에 suspend/unsuspend/withdraw(reason) 메서드 추가
- ErrorStatus에 PROMPT_ERROR(50005) 추가
- Keep Thymeleaf dependencies (admin SSR)
- Keep admin credentials config (ADMIN_USERNAME, ADMIN_PASSWORD)
- Merge withdraw() with reason param and validateNoActiveTransaction from develop
- Keep suspend()/unsuspend() methods in User added for admin panel
- deletePost() 실행 전 주문 존재 여부 체크 추가
- 주문이 있으면 POST_HAS_ORDERS(40020) 예외 반환
- OrderRepository에 existsByGroupBuyPost_Id() 추가
- CLOSED/PAYMENT_DONE/SHIPPING 상태 글은 주문 유무 무관하게 삭제 차단 (POST_IN_PROGRESS 40021)
- 상태 기반 체크를 주문 존재 체크보다 먼저 수행
- 프론트 confirm: RECRUITING은 일반 경고, 그 외 상태는 '진행 중' 강조 메시지로 구분
- User.suspend/unsuspend: WITHDRAWN 계정 상태 변경 시도 시 예외 발생
- AdminService.forceWithdrawUser: 이미 탈퇴한 유저 중복 탈퇴 차단
- AdminController: BusinessException 발생 시 JSON 대신 flash 메시지로 redirect
- layout.html: 에러 메시지 alert 영역 추가
탈퇴한 유저에 대해 suspend/unsuspend 호출 시
IllegalStateException 대신 BusinessException을 던져
AdminController에서 flash 에러로 정상 처리되도록 수정
- 사이드바: 다크 테마, 활성 메뉴 accent 색상, 계층 구조 개선
- 대시보드: 컬러 스탯 카드 + 아이콘 + 빠른 이동 섹션
- 유저/분철글 테이블: 상태별 색상 배지, 액션 버튼 시각화
- 분철글 상태 필터를 pill 탭으로 교체
- confirm 다이얼로그를 JS 함수로 분리하여 가독성 향상
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@PBEM22, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 58 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e88e3274-5944-4cd6-95e7-a43faadd9421

📥 Commits

Reviewing files that changed from the base of the PR and between abf8088 and eabaf2d.

📒 Files selected for processing (6)
  • src/main/java/org/sopt/poti/global/security/SecurityConfig.java
  • src/main/resources/static/css/admin.css
  • src/main/resources/templates/admin/dashboard.html
  • src/main/resources/templates/admin/layout.html
  • src/main/resources/templates/admin/posts.html
  • src/main/resources/templates/admin/users.html
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#212/admin-panel

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.

@PBEM22 PBEM22 self-assigned this Jul 28, 2026
@PBEM22 PBEM22 added 🚨 Fix 버그 수정 🐴 채륜 막시무스 labels Jul 28, 2026
@PBEM22
PBEM22 merged commit ed9c286 into develop Jul 28, 2026
3 checks passed
@PBEM22
PBEM22 deleted the feat/#212/admin-panel branch July 28, 2026 06:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐴 채륜 막시무스 🚨 Fix 버그 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 어드민 패널 구현 (SSR)

1 participant