"use client" import * as React from "react" import { useParams, useRouter } from "next/navigation" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Skeleton } from "@/components/ui/skeleton" import { AlertCircle, ArrowLeft, RefreshCw } from "lucide-react" import { Alert, AlertDescription } from "@/components/ui/alert" import { getEvaluationFormData, EvaluationFormData } from "./service" import { EvaluationForm } from "./evaluation-form" /** * 로딩 스켈레톤 컴포넌트 */ function EvaluationFormSkeleton() { return (
{/* 헤더 스켈레톤 */}
{/* 평가 정보 카드 스켈레톤 */}
{[...Array(4)].map((_, i) => (
))}
{/* 진행률 카드 스켈레톤 */}
{/* 질문 카드들 스켈레톤 */} {[...Array(3)].map((_, i) => (
{[...Array(3)].map((_, j) => (
))}
))}
) } /** * 에러 상태 컴포넌트 */ function EvaluationFormError({ error, onRetry }: { error: string onRetry: () => void }) { const router = useRouter() return (

평가 작성

평가를 불러오는 중 오류가 발생했습니다

{error} 문제 해결 다음 방법들을 시도해보세요:
  • 페이지를 새로고침해보세요
  • 인터넷 연결 상태를 확인해보세요
  • 잠시 후 다시 시도해보세요
  • 문제가 지속되면 관리자에게 문의하세요
) } /** * 평가 작성 페이지 메인 컴포넌트 */ export function EvaluationPage() { const params = useParams() const router = useRouter() const [formData, setFormData] = React.useState(null) const [isLoading, setIsLoading] = React.useState(true) const [error, setError] = React.useState(null) const reviewerEvaluationId = params.id ? parseInt(params.id as string) : null // 평가 데이터 로드 const loadEvaluationData = React.useCallback(async () => { if (!reviewerEvaluationId) { setError("잘못된 평가 ID입니다.") setIsLoading(false) return } try { setIsLoading(true) setError(null) const data = await getEvaluationFormData(reviewerEvaluationId) if (!data) { setError("평가 데이터를 찾을 수 없습니다.") return } setFormData(data) } catch (err) { console.error('Failed to load evaluation data:', err) setError( err instanceof Error ? err.message : "평가 데이터를 불러오는 중 오류가 발생했습니다." ) } finally { setIsLoading(false) } }, [reviewerEvaluationId]) // 초기 데이터 로드 React.useEffect(() => { loadEvaluationData() }, [loadEvaluationData]) // 평가 완료 후 처리 const handleSubmitSuccess = React.useCallback(() => { router.push('/evaluations') }, [router]) // 로딩 상태 if (isLoading) { return } // 에러 상태 if (error) { return ( ) } // 데이터가 없는 경우 if (!formData) { return ( ) } // 정상 상태 - 평가 폼 렌더링 return ( ) } // 페이지 컴포넌트용 기본 export export default function EvaluationPageWrapper() { return }