import { useState, useMemo } from 'react' import { AlertTriangle } from 'lucide-react' import { cn } from '@/lib' import { numberToKorean } from '@/features/chat/lib/koreanNumber' import { findRestoreScript, extractPart } from '@/features/chat/lib/rejectForm' import { SelectRadio, SubmitButton } from '@/features/chat/components/templates/rejectControls' import { useChatStore } from '@/features/chat/stores/useChatStore' import { useChatInitStore } from '@/features/chat/stores/useChatInitStore' const MAX_PRICE = 999999999999999 // 재견적 실패 시: 최종 공급 희망 가격 + 배송 형태 입력 폼 export function RejectCM() { const isLoading = useChatStore((s) => s.isLoading) const sendMessage = useChatStore((s) => s.sendMessage) const messages = useChatStore((s) => s.messages) const item_vat_yn = useChatInitStore((s) => s.item_vat_yn) const isVAT = item_vat_yn === 'VAT별도' // 폼 값은 이전 제출 내역에서 1회만 복원 (setter 미사용 = lazy 초기화 전용) const restored = useState(() => findRestoreScript(messages, 'rejectCM'))[0] const [price, setPrice] = useState(() => extractPart(restored, '공급희망가격-')) const [selectedReason, setSelectedReason] = useState(() => extractPart(restored, '배송형태-')) const [priceErrorMessage, setPriceErrorMessage] = useState('') const [radioErrorMessage, setRadioErrorMessage] = useState('') // 제출 완료 여부는 messages 변화에 반응해야 함 (제출 후 갱신 반영) const isSubmitted = useMemo(() => Boolean(findRestoreScript(messages, 'rejectCM')), [messages]) const isValid = Boolean(price && parseInt(price) > 0) && Boolean(selectedReason) const handlePriceChange = (value: string) => { const numeric = value.replace(/\D/g, '') if (numeric && parseInt(numeric) > MAX_PRICE) return setPrice(numeric) if (numeric) setPriceErrorMessage('') } const koreanPrice = (() => { if (!price) return '영' const n = parseInt(price) return Number.isNaN(n) || n === 0 ? '영' : numberToKorean(n) })() const handleSubmit = () => { setPriceErrorMessage(!price || parseInt(price) === 0 ? '가격을 입력해주세요.' : '') setRadioErrorMessage(!selectedReason ? '배송 형태를 선택해주세요.' : '') if (isValid && !isLoading && !isSubmitted) { sendMessage(`공급희망가격-${price}, 배송형태-${selectedReason}`, 'text') } } const isDisabled = isLoading || isSubmitted return (