'use client' import * as React from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import * as z from 'zod' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Textarea } from '@/components/ui/textarea' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form' import { FileUpload } from '@/components/ui/file-upload' import { useToast } from '@/hooks/use-toast' import { saveSelectionResult } from './actions' import { Loader2, Save } from 'lucide-react' const selectionResultSchema = z.object({ summary: z.string().min(1, '결과요약을 입력해주세요'), attachments: z.array(z.any()).optional(), }) type SelectionResultFormData = z.infer interface SelectionResultFormProps { biddingId: number onSuccess: () => void } export function SelectionResultForm({ biddingId, onSuccess }: SelectionResultFormProps) { const { toast } = useToast() const [isSubmitting, setIsSubmitting] = React.useState(false) const form = useForm({ resolver: zodResolver(selectionResultSchema), defaultValues: { summary: '', attachments: [], }, }) const onSubmit = async (data: SelectionResultFormData) => { setIsSubmitting(true) try { const result = await saveSelectionResult({ biddingId, summary: data.summary, attachments: data.attachments }) if (result.success) { toast({ title: '저장 완료', description: result.message, }) onSuccess() } else { toast({ title: '저장 실패', description: result.error, variant: 'destructive', }) } } catch (error) { console.error('Failed to save selection result:', error) toast({ title: '저장 실패', description: '선정결과 저장 중 오류가 발생했습니다.', variant: 'destructive', }) } finally { setIsSubmitting(false) } } return ( 선정결과
{/* 결과요약 */} ( 결과요약