Skip to content

Conversation

@sernan96
Copy link
Contributor

@sernan96 sernan96 commented Nov 18, 2025

관리자 공지사항 파트 PR

개요

관리자(Admin) 기능 중 공지사항 파트를 구현했습니다.
관리자 진입 버튼 추가, 관리자 라우팅 구성, 관리자 홈 구축, 공지사항 CRUD 기능, UI 정리, API 연동 등을 포함합니다.

주요 변경사항

1. 관리자 진입 및 라우팅

  • 관리자 진입 버튼 및 SVG 추가
  • 홈 화면에 관리자 버튼 배치
  • role 기반 경로 반환 util 함수 구현
  • 관리자 라우팅 전체 구성
  • 관리자 홈 추가 및 레이아웃/디자인 적용

2. 공지사항 관리자 모드

  • 공지사항 페이지에서 관리자 모드 판단 로직 추가
  • 기존 공지사항 페이지를 활용해 관리자 모드 기능 통합
  • 수정/삭제 바 추가 및 디자인 적용
  • 관리자 모드 UI 정리
  • 공지사항 삭제 후 뒤로가기 동작 추가

3. 공지사항 CRUD 구현

  • 공지사항 삭제 API 연동
  • 공지사항 수정 페이지 구현 및 API 연동
  • 공지사항 생성 버튼 추가 및 디자인 적용
  • 공지 생성 페이지 구현 및 API 연동

4. 라우팅 및 구조 개선

  • 관리자 관련 URL 추가 및 전체 path 정리
  • 공지사항 관리 라우팅 추가
  • 컴포넌트 함수형으로 전환
  • 절대 경로 alias 적용
  • props 구조 개선 및 리팩터링 진행

기타

  • 관리자 홈에 필요한 리소스 추가(야가다 토끼 이미지 등)
  • 디자인에 없는 요소가 있는데 급한대로 추가해서 구현했습니다.

스크린샷

  1. 관리자 모드 진입
image
  1. 관리자 모드 진입 후
image
  1. 관리자 공지사항 리스트
image
  1. 공지사항 생성
image
  1. 공지사항 수정
image

sernan96 and others added 28 commits November 17, 2025 23:50
@github-actions
Copy link

github-actions bot commented Nov 18, 2025

Visit the preview URL for this PR (updated for commit d0a0d7a):

https://web-deploy-9d41a--pr71-feature-manager-vhxgm8dy.web.app

(expires Wed, 26 Nov 2025 16:26:14 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 4a5d43964536093bf8932015bdd49b24c5b660ce

@sernan96 sernan96 requested review from cryingdryice and whitecity01 and removed request for cryingdryice November 19, 2025 16:25
@whitecity01
Copy link
Member

whitecity01 commented Nov 25, 2025

스크린샷 2025-11-25 오후 7 39 21

현재 배율 100% 환경에서,
공지사항 제목이 잘리고 있습니다 확인부탁드립니다!

@whitecity01
Copy link
Member

스크린샷 2025-11-25 오후 8 02 28 현재 일반 user의 관리자 페이지 접근이 가능합니다. loader에서 일반 유저는 접근 불가능하도록 막는다면 isAdmin 같은 불필요한 추가 검증을 안해도 될 것 같습니다.

Copy link
Member

@whitecity01 whitecity01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컴포넌트 재사용을 위해 노력하신 점이 인상깊습니다.

현재 수정, 삭제에 대한 별다른 인터렉트가 없어서 살짝 아쉬운 부분이 있습니다.

나머지 리뷰 확인 부탁드립니다!

Comment on lines +21 to +47
const closeEditPage = () => navigate(-1);

useEffect(() => {
const fetchDetail = async () => {
try {
const res = await getAnnounceDetailAPI(id);
setTitle(res.title);
setContent(res.content);
} catch (err) {
alert("공지사항 정보를 불러오지 못했습니다.");
} finally {
setLoading(false);
}
};
fetchDetail();
}, [id]);

const handleSubmit = async () => {
try {
const notificationInfo = { id, title, content };
await updateAnnounceAPI(notificationInfo);
navigate(`${ADMIN_ANNOUNCE_URL}/${id}`);
} catch (err) {
console.log(err);
alert("공지 수정에 실패했습니다.");
}
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 수정 기능을 확인해보니,
navigate(url/id)로 수정 완료 시 상세 페이지로 이동하고,
나가기 버튼에서는 navigate(-1)을 사용하고 있습니다.

이 경우 수정 완료 시 새로운 히스토리가 추가되어,
나가기 버튼을 눌러도 동일한 상세 페이지가 연속해서 나타나는 현상이 발생합니다.
혹시 이런 히스토리 중첩이 의도된 동작인지 궁금합니다.

Comment on lines +18 to +19
const isAdminMode =
profile?.role === "ADMIN" && window.location.pathname.includes("admin");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이전 리뷰에 있듯 page loader 단에서 admin 필터를 적용한다면 추가 검증 절차가 없어져도 될 것 같습니다.

Comment on lines +19 to +29
<div className="announce-manage-button-bar">
<Link
to={`${ADMIN_ANNOUNCE_URL}/${notificationId}/edit`}
className="button--edit"
>
수정
</Link>
<button className="button--delete" onClick={handleDelete}>
삭제
</button>
</div>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-- 두개로 하신 이유가 있을까요?

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.

3 participants