From ad20149c882f98c588e9ebc8b32d514093d014d3 Mon Sep 17 00:00:00 2001 From: caadiq Date: Tue, 16 Jun 2026 21:40:19 +0900 Subject: [PATCH] =?UTF-8?q?feat(admin-schedule):=20=EC=9D=BC=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=EC=97=90=EC=84=9C=20=EC=83=9D=EC=9D=BC=C2=B7?= =?UTF-8?q?=EA=B8=B0=EB=85=90=EC=9D=BC=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 생일/기념일은 멤버 생일·데뷔일에서 자동 계산되는 카테고리라 수동 추가 대상이 아님. 카테고리 선택 목록과 기본 선택값에서 제외. Co-Authored-By: Claude Opus 4.7 --- .../pages/pc/admin/schedules/form/index.jsx | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/frontend/src/pages/pc/admin/schedules/form/index.jsx b/frontend/src/pages/pc/admin/schedules/form/index.jsx index ff95381..46cac34 100644 --- a/frontend/src/pages/pc/admin/schedules/form/index.jsx +++ b/frontend/src/pages/pc/admin/schedules/form/index.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, useMemo } from "react"; import { useNavigate, Link } from "react-router-dom"; import { useQuery } from "@tanstack/react-query"; import { motion, AnimatePresence } from "framer-motion"; @@ -49,19 +49,20 @@ function ScheduleFormPage() { queryFn: categoriesApi.getCategories, enabled: isAuthenticated, staleTime: 10 * 60 * 1000, - onSuccess: (data) => { - if (data.length > 0 && !selectedCategory) { - setSelectedCategory(data[0].id); - } - }, }); - // 카테고리 로드 시 기본값 설정 + // 자동 생성/계산 전용 카테고리는 수동 추가 폼에서 제외 (생일·기념일) + const selectableCategories = useMemo( + () => categories.filter((c) => c.name !== '생일' && c.name !== '기념일'), + [categories] + ); + + // 카테고리 로드 시 기본값 설정 (선택 가능한 카테고리 기준) useEffect(() => { - if (categories.length > 0 && !selectedCategory) { - setSelectedCategory(categories[0].id); + if (selectableCategories.length > 0 && !selectedCategory) { + setSelectedCategory(selectableCategories[0].id); } - }, [categories, selectedCategory]); + }, [selectableCategories, selectedCategory]); // 카테고리에 따른 폼 렌더링 const renderForm = () => { @@ -150,7 +151,7 @@ function ScheduleFormPage() { {/* 카테고리 선택 */} { setSelectedCategory(id);