From 44b74ff4170090673b6eeacd8c528e0abf47b7aa Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Mon, 1 Dec 2025 19:52:06 +0900 Subject: (김준회) deprecated code 정리 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/b-rfq/attachment/add-attachment-dialog.tsx | 355 -- lib/b-rfq/attachment/add-revision-dialog.tsx | 336 -- lib/b-rfq/attachment/attachment-columns.tsx | 286 -- lib/b-rfq/attachment/attachment-table.tsx | 190 - lib/b-rfq/attachment/attachment-toolbar-action.tsx | 60 - lib/b-rfq/attachment/confirm-documents-dialog.tsx | 141 - lib/b-rfq/attachment/delete-attachment-dialog.tsx | 182 - lib/b-rfq/attachment/request-revision-dialog.tsx | 205 - lib/b-rfq/attachment/revision-dialog.tsx | 196 - lib/b-rfq/attachment/tbe-request-dialog.tsx | 200 - lib/b-rfq/attachment/vendor-responses-panel.tsx | 386 -- lib/b-rfq/final/final-rfq-detail-columns.tsx | 589 --- lib/b-rfq/final/final-rfq-detail-table.tsx | 297 -- .../final/final-rfq-detail-toolbar-actions.tsx | 201 - lib/b-rfq/final/update-final-rfq-sheet.tsx | 70 - lib/b-rfq/initial/add-initial-rfq-dialog.tsx | 584 --- lib/b-rfq/initial/delete-initial-rfq-dialog.tsx | 149 - lib/b-rfq/initial/initial-rfq-detail-columns.tsx | 446 --- lib/b-rfq/initial/initial-rfq-detail-table.tsx | 267 -- .../initial/initial-rfq-detail-toolbar-actions.tsx | 287 -- lib/b-rfq/initial/short-list-confirm-dialog.tsx | 269 -- lib/b-rfq/initial/update-initial-rfq-sheet.tsx | 496 --- lib/b-rfq/repository.ts | 0 lib/b-rfq/service.ts | 2976 --------------- lib/b-rfq/summary-table/add-new-rfq-dialog.tsx | 523 --- lib/b-rfq/summary-table/summary-rfq-columns.tsx | 499 --- .../summary-table/summary-rfq-filter-sheet.tsx | 617 --- .../summary-rfq-table-toolbar-actions.tsx | 68 - lib/b-rfq/summary-table/summary-rfq-table.tsx | 285 -- lib/b-rfq/validations.ts | 447 --- lib/b-rfq/vendor-response/comment-edit-dialog.tsx | 187 - .../vendor-response/response-detail-columns.tsx | 653 ---- .../vendor-response/response-detail-sheet.tsx | 358 -- .../vendor-response/response-detail-table.tsx | 161 - .../vendor-response/upload-response-dialog.tsx | 325 -- .../vendor-responses-table-columns.tsx | 351 -- .../vendor-response/vendor-responses-table.tsx | 152 - .../vendor-response/waive-response-dialog.tsx | 210 -- lib/cbe/table/cbe-table-columns.tsx | 241 -- lib/cbe/table/cbe-table-toolbar-actions.tsx | 72 - lib/cbe/table/cbe-table.tsx | 192 - lib/cbe/table/comments-sheet.tsx | 345 -- lib/cbe/table/invite-vendors-dialog.tsx | 428 --- lib/legal-review/service.ts | 738 ---- .../status/create-legal-work-dialog.tsx | 506 --- .../status/delete-legal-works-dialog.tsx | 152 - lib/legal-review/status/legal-table copy.tsx | 583 --- lib/legal-review/status/legal-table.tsx | 546 --- .../status/legal-work-detail-dialog.tsx | 409 -- .../status/legal-work-filter-sheet.tsx | 897 ----- lib/legal-review/status/legal-works-columns.tsx | 222 -- .../status/legal-works-toolbar-actions.tsx | 286 -- lib/legal-review/status/request-review-dialog.tsx | 983 ----- .../status/update-legal-work-dialog.tsx | 385 -- lib/legal-review/validations.ts | 40 - lib/procurement-rfqs/repository.ts | 50 - lib/procurement-rfqs/services.ts | 2050 ---------- .../table/detail-table/add-vendor-dialog.tsx | 512 --- .../table/detail-table/delete-vendor-dialog.tsx | 150 - .../table/detail-table/rfq-detail-column.tsx | 393 -- .../table/detail-table/rfq-detail-table.tsx | 521 --- .../table/detail-table/update-vendor-sheet.tsx | 449 --- .../detail-table/vendor-communication-drawer.tsx | 518 --- .../vendor-quotation-comparison-dialog.tsx | 665 ---- lib/procurement-rfqs/table/pr-item-dialog.tsx | 258 -- lib/procurement-rfqs/table/rfq-filter-sheet.tsx | 686 ---- lib/procurement-rfqs/table/rfq-table-column.tsx | 373 -- .../table/rfq-table-toolbar-actions.tsx | 279 -- lib/procurement-rfqs/table/rfq-table.tsx | 412 -- lib/procurement-rfqs/validations.ts | 61 - .../vendor-response/buyer-communication-drawer.tsx | 522 --- .../vendor-response/quotation-editor.tsx | 955 ----- .../vendor-response/quotation-item-editor.tsx | 664 ---- .../table/vendor-quotations-table-columns.tsx | 333 -- .../table/vendor-quotations-table.tsx | 152 - lib/projects/service.ts | 37 +- lib/rfqs/cbe-table/cbe-table-columns.tsx | 245 -- lib/rfqs/cbe-table/cbe-table-toolbar-actions.tsx | 67 - lib/rfqs/cbe-table/cbe-table.tsx | 178 - lib/rfqs/cbe-table/comments-sheet.tsx | 328 -- lib/rfqs/cbe-table/invite-vendors-dialog.tsx | 423 --- lib/rfqs/cbe-table/vendor-contact-dialog.tsx | 71 - lib/rfqs/repository.ts | 232 -- lib/rfqs/service.ts | 3951 -------------------- lib/rfqs/table/ItemsDialog.tsx | 752 ---- lib/rfqs/table/ParentRfqSelector.tsx | 307 -- lib/rfqs/table/add-rfq-dialog.tsx | 468 --- lib/rfqs/table/attachment-rfq-sheet.tsx | 429 --- lib/rfqs/table/delete-rfqs-dialog.tsx | 149 - lib/rfqs/table/feature-flags-provider.tsx | 108 - lib/rfqs/table/feature-flags.tsx | 96 - lib/rfqs/table/rfqs-table-columns.tsx | 315 -- lib/rfqs/table/rfqs-table-floating-bar.tsx | 338 -- lib/rfqs/table/rfqs-table-toolbar-actions.tsx | 55 - lib/rfqs/table/rfqs-table.tsx | 263 -- lib/rfqs/table/update-rfq-sheet.tsx | 406 -- lib/rfqs/tbe-table/comments-sheet.tsx | 325 -- lib/rfqs/tbe-table/feature-flags-provider.tsx | 108 - lib/rfqs/tbe-table/file-dialog.tsx | 141 - lib/rfqs/tbe-table/invite-vendors-dialog.tsx | 220 -- lib/rfqs/tbe-table/tbe-result-dialog.tsx | 208 -- lib/rfqs/tbe-table/tbe-table-columns.tsx | 373 -- lib/rfqs/tbe-table/tbe-table-toolbar-actions.tsx | 67 - lib/rfqs/tbe-table/tbe-table.tsx | 220 -- lib/rfqs/tbe-table/vendor-contact-dialog.tsx | 71 - .../vendor-contact/vendor-contact-table-column.tsx | 70 - .../vendor-contact/vendor-contact-table.tsx | 89 - lib/rfqs/validations.ts | 297 -- lib/rfqs/vendor-table/add-vendor-dialog.tsx | 37 - lib/rfqs/vendor-table/comments-sheet.tsx | 318 -- lib/rfqs/vendor-table/feature-flags-provider.tsx | 108 - lib/rfqs/vendor-table/invite-vendors-dialog.tsx | 177 - .../vendor-list/vendor-list-table-column.tsx | 154 - .../vendor-table/vendor-list/vendor-list-table.tsx | 142 - lib/rfqs/vendor-table/vendors-table-columns.tsx | 276 -- .../vendor-table/vendors-table-floating-bar.tsx | 137 - .../vendor-table/vendors-table-toolbar-actions.tsx | 84 - lib/rfqs/vendor-table/vendors-table.tsx | 208 -- lib/tbe/service.ts | 0 lib/tbe/table/comments-sheet.tsx | 345 -- lib/tbe/table/feature-flags-provider.tsx | 108 - lib/tbe/table/file-dialog.tsx | 141 - lib/tbe/table/invite-vendors-dialog.tsx | 209 -- lib/tbe/table/tbe-result-dialog.tsx | 208 -- lib/tbe/table/tbe-table-columns.tsx | 344 -- lib/tbe/table/tbe-table-toolbar-actions.tsx | 72 - lib/tbe/table/tbe-table.tsx | 243 -- lib/tbe/table/vendor-contact-dialog.tsx | 71 - lib/vendor-rfq-response/service.ts | 464 --- lib/vendor-rfq-response/types.ts | 76 - .../vendor-cbe-table/cbe-table-columns.tsx | 365 -- .../vendor-cbe-table/cbe-table.tsx | 272 -- .../vendor-cbe-table/comments-sheet.tsx | 323 -- .../vendor-cbe-table/respond-cbe-sheet.tsx | 427 --- .../vendor-cbe-table/rfq-detail-dialog.tsx | 89 - .../rfq-items-table/rfq-items-table-column.tsx | 62 - .../rfq-items-table/rfq-items-table.tsx | 86 - .../vendor-rfq-table/ItemsDialog.tsx | 125 - .../vendor-rfq-table/attachment-rfq-sheet.tsx | 106 - .../vendor-rfq-table/comments-sheet.tsx | 320 -- .../vendor-rfq-table/feature-flags-provider.tsx | 108 - .../vendor-rfq-table/rfqs-table-columns.tsx | 435 --- .../rfqs-table-toolbar-actions.tsx | 40 - .../vendor-rfq-table/rfqs-table.tsx | 280 -- .../vendor-tbe-table/comments-sheet.tsx | 346 -- .../vendor-tbe-table/rfq-detail-dialog.tsx | 86 - .../vendor-tbe-table/tbe-table-columns.tsx | 350 -- .../vendor-tbe-table/tbe-table.tsx | 188 - .../vendor-tbe-table/tbeFileHandler.tsx | 355 -- lib/vendors/table/request-project-pq-dialog.tsx | 9 +- 150 files changed, 38 insertions(+), 50695 deletions(-) delete mode 100644 lib/b-rfq/attachment/add-attachment-dialog.tsx delete mode 100644 lib/b-rfq/attachment/add-revision-dialog.tsx delete mode 100644 lib/b-rfq/attachment/attachment-columns.tsx delete mode 100644 lib/b-rfq/attachment/attachment-table.tsx delete mode 100644 lib/b-rfq/attachment/attachment-toolbar-action.tsx delete mode 100644 lib/b-rfq/attachment/confirm-documents-dialog.tsx delete mode 100644 lib/b-rfq/attachment/delete-attachment-dialog.tsx delete mode 100644 lib/b-rfq/attachment/request-revision-dialog.tsx delete mode 100644 lib/b-rfq/attachment/revision-dialog.tsx delete mode 100644 lib/b-rfq/attachment/tbe-request-dialog.tsx delete mode 100644 lib/b-rfq/attachment/vendor-responses-panel.tsx delete mode 100644 lib/b-rfq/final/final-rfq-detail-columns.tsx delete mode 100644 lib/b-rfq/final/final-rfq-detail-table.tsx delete mode 100644 lib/b-rfq/final/final-rfq-detail-toolbar-actions.tsx delete mode 100644 lib/b-rfq/final/update-final-rfq-sheet.tsx delete mode 100644 lib/b-rfq/initial/add-initial-rfq-dialog.tsx delete mode 100644 lib/b-rfq/initial/delete-initial-rfq-dialog.tsx delete mode 100644 lib/b-rfq/initial/initial-rfq-detail-columns.tsx delete mode 100644 lib/b-rfq/initial/initial-rfq-detail-table.tsx delete mode 100644 lib/b-rfq/initial/initial-rfq-detail-toolbar-actions.tsx delete mode 100644 lib/b-rfq/initial/short-list-confirm-dialog.tsx delete mode 100644 lib/b-rfq/initial/update-initial-rfq-sheet.tsx delete mode 100644 lib/b-rfq/repository.ts delete mode 100644 lib/b-rfq/service.ts delete mode 100644 lib/b-rfq/summary-table/add-new-rfq-dialog.tsx delete mode 100644 lib/b-rfq/summary-table/summary-rfq-columns.tsx delete mode 100644 lib/b-rfq/summary-table/summary-rfq-filter-sheet.tsx delete mode 100644 lib/b-rfq/summary-table/summary-rfq-table-toolbar-actions.tsx delete mode 100644 lib/b-rfq/summary-table/summary-rfq-table.tsx delete mode 100644 lib/b-rfq/validations.ts delete mode 100644 lib/b-rfq/vendor-response/comment-edit-dialog.tsx delete mode 100644 lib/b-rfq/vendor-response/response-detail-columns.tsx delete mode 100644 lib/b-rfq/vendor-response/response-detail-sheet.tsx delete mode 100644 lib/b-rfq/vendor-response/response-detail-table.tsx delete mode 100644 lib/b-rfq/vendor-response/upload-response-dialog.tsx delete mode 100644 lib/b-rfq/vendor-response/vendor-responses-table-columns.tsx delete mode 100644 lib/b-rfq/vendor-response/vendor-responses-table.tsx delete mode 100644 lib/b-rfq/vendor-response/waive-response-dialog.tsx delete mode 100644 lib/cbe/table/cbe-table-columns.tsx delete mode 100644 lib/cbe/table/cbe-table-toolbar-actions.tsx delete mode 100644 lib/cbe/table/cbe-table.tsx delete mode 100644 lib/cbe/table/comments-sheet.tsx delete mode 100644 lib/cbe/table/invite-vendors-dialog.tsx delete mode 100644 lib/legal-review/service.ts delete mode 100644 lib/legal-review/status/create-legal-work-dialog.tsx delete mode 100644 lib/legal-review/status/delete-legal-works-dialog.tsx delete mode 100644 lib/legal-review/status/legal-table copy.tsx delete mode 100644 lib/legal-review/status/legal-table.tsx delete mode 100644 lib/legal-review/status/legal-work-detail-dialog.tsx delete mode 100644 lib/legal-review/status/legal-work-filter-sheet.tsx delete mode 100644 lib/legal-review/status/legal-works-columns.tsx delete mode 100644 lib/legal-review/status/legal-works-toolbar-actions.tsx delete mode 100644 lib/legal-review/status/request-review-dialog.tsx delete mode 100644 lib/legal-review/status/update-legal-work-dialog.tsx delete mode 100644 lib/legal-review/validations.ts delete mode 100644 lib/procurement-rfqs/repository.ts delete mode 100644 lib/procurement-rfqs/services.ts delete mode 100644 lib/procurement-rfqs/table/detail-table/add-vendor-dialog.tsx delete mode 100644 lib/procurement-rfqs/table/detail-table/delete-vendor-dialog.tsx delete mode 100644 lib/procurement-rfqs/table/detail-table/rfq-detail-column.tsx delete mode 100644 lib/procurement-rfqs/table/detail-table/rfq-detail-table.tsx delete mode 100644 lib/procurement-rfqs/table/detail-table/update-vendor-sheet.tsx delete mode 100644 lib/procurement-rfqs/table/detail-table/vendor-communication-drawer.tsx delete mode 100644 lib/procurement-rfqs/table/detail-table/vendor-quotation-comparison-dialog.tsx delete mode 100644 lib/procurement-rfqs/table/pr-item-dialog.tsx delete mode 100644 lib/procurement-rfqs/table/rfq-filter-sheet.tsx delete mode 100644 lib/procurement-rfqs/table/rfq-table-column.tsx delete mode 100644 lib/procurement-rfqs/table/rfq-table-toolbar-actions.tsx delete mode 100644 lib/procurement-rfqs/table/rfq-table.tsx delete mode 100644 lib/procurement-rfqs/validations.ts delete mode 100644 lib/procurement-rfqs/vendor-response/buyer-communication-drawer.tsx delete mode 100644 lib/procurement-rfqs/vendor-response/quotation-editor.tsx delete mode 100644 lib/procurement-rfqs/vendor-response/quotation-item-editor.tsx delete mode 100644 lib/procurement-rfqs/vendor-response/table/vendor-quotations-table-columns.tsx delete mode 100644 lib/procurement-rfqs/vendor-response/table/vendor-quotations-table.tsx delete mode 100644 lib/rfqs/cbe-table/cbe-table-columns.tsx delete mode 100644 lib/rfqs/cbe-table/cbe-table-toolbar-actions.tsx delete mode 100644 lib/rfqs/cbe-table/cbe-table.tsx delete mode 100644 lib/rfqs/cbe-table/comments-sheet.tsx delete mode 100644 lib/rfqs/cbe-table/invite-vendors-dialog.tsx delete mode 100644 lib/rfqs/cbe-table/vendor-contact-dialog.tsx delete mode 100644 lib/rfqs/repository.ts delete mode 100644 lib/rfqs/service.ts delete mode 100644 lib/rfqs/table/ItemsDialog.tsx delete mode 100644 lib/rfqs/table/ParentRfqSelector.tsx delete mode 100644 lib/rfqs/table/add-rfq-dialog.tsx delete mode 100644 lib/rfqs/table/attachment-rfq-sheet.tsx delete mode 100644 lib/rfqs/table/delete-rfqs-dialog.tsx delete mode 100644 lib/rfqs/table/feature-flags-provider.tsx delete mode 100644 lib/rfqs/table/feature-flags.tsx delete mode 100644 lib/rfqs/table/rfqs-table-columns.tsx delete mode 100644 lib/rfqs/table/rfqs-table-floating-bar.tsx delete mode 100644 lib/rfqs/table/rfqs-table-toolbar-actions.tsx delete mode 100644 lib/rfqs/table/rfqs-table.tsx delete mode 100644 lib/rfqs/table/update-rfq-sheet.tsx delete mode 100644 lib/rfqs/tbe-table/comments-sheet.tsx delete mode 100644 lib/rfqs/tbe-table/feature-flags-provider.tsx delete mode 100644 lib/rfqs/tbe-table/file-dialog.tsx delete mode 100644 lib/rfqs/tbe-table/invite-vendors-dialog.tsx delete mode 100644 lib/rfqs/tbe-table/tbe-result-dialog.tsx delete mode 100644 lib/rfqs/tbe-table/tbe-table-columns.tsx delete mode 100644 lib/rfqs/tbe-table/tbe-table-toolbar-actions.tsx delete mode 100644 lib/rfqs/tbe-table/tbe-table.tsx delete mode 100644 lib/rfqs/tbe-table/vendor-contact-dialog.tsx delete mode 100644 lib/rfqs/tbe-table/vendor-contact/vendor-contact-table-column.tsx delete mode 100644 lib/rfqs/tbe-table/vendor-contact/vendor-contact-table.tsx delete mode 100644 lib/rfqs/validations.ts delete mode 100644 lib/rfqs/vendor-table/add-vendor-dialog.tsx delete mode 100644 lib/rfqs/vendor-table/comments-sheet.tsx delete mode 100644 lib/rfqs/vendor-table/feature-flags-provider.tsx delete mode 100644 lib/rfqs/vendor-table/invite-vendors-dialog.tsx delete mode 100644 lib/rfqs/vendor-table/vendor-list/vendor-list-table-column.tsx delete mode 100644 lib/rfqs/vendor-table/vendor-list/vendor-list-table.tsx delete mode 100644 lib/rfqs/vendor-table/vendors-table-columns.tsx delete mode 100644 lib/rfqs/vendor-table/vendors-table-floating-bar.tsx delete mode 100644 lib/rfqs/vendor-table/vendors-table-toolbar-actions.tsx delete mode 100644 lib/rfqs/vendor-table/vendors-table.tsx delete mode 100644 lib/tbe/service.ts delete mode 100644 lib/tbe/table/comments-sheet.tsx delete mode 100644 lib/tbe/table/feature-flags-provider.tsx delete mode 100644 lib/tbe/table/file-dialog.tsx delete mode 100644 lib/tbe/table/invite-vendors-dialog.tsx delete mode 100644 lib/tbe/table/tbe-result-dialog.tsx delete mode 100644 lib/tbe/table/tbe-table-columns.tsx delete mode 100644 lib/tbe/table/tbe-table-toolbar-actions.tsx delete mode 100644 lib/tbe/table/tbe-table.tsx delete mode 100644 lib/tbe/table/vendor-contact-dialog.tsx delete mode 100644 lib/vendor-rfq-response/service.ts delete mode 100644 lib/vendor-rfq-response/types.ts delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/cbe-table-columns.tsx delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/cbe-table.tsx delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/comments-sheet.tsx delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/respond-cbe-sheet.tsx delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/rfq-detail-dialog.tsx delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/rfq-items-table/rfq-items-table-column.tsx delete mode 100644 lib/vendor-rfq-response/vendor-cbe-table/rfq-items-table/rfq-items-table.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/ItemsDialog.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/attachment-rfq-sheet.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/comments-sheet.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/feature-flags-provider.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/rfqs-table-columns.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/rfqs-table-toolbar-actions.tsx delete mode 100644 lib/vendor-rfq-response/vendor-rfq-table/rfqs-table.tsx delete mode 100644 lib/vendor-rfq-response/vendor-tbe-table/comments-sheet.tsx delete mode 100644 lib/vendor-rfq-response/vendor-tbe-table/rfq-detail-dialog.tsx delete mode 100644 lib/vendor-rfq-response/vendor-tbe-table/tbe-table-columns.tsx delete mode 100644 lib/vendor-rfq-response/vendor-tbe-table/tbe-table.tsx delete mode 100644 lib/vendor-rfq-response/vendor-tbe-table/tbeFileHandler.tsx (limited to 'lib') diff --git a/lib/b-rfq/attachment/add-attachment-dialog.tsx b/lib/b-rfq/attachment/add-attachment-dialog.tsx deleted file mode 100644 index 665e0f88..00000000 --- a/lib/b-rfq/attachment/add-attachment-dialog.tsx +++ /dev/null @@ -1,355 +0,0 @@ -"use client" - -import * as React from "react" -import { useForm } from "react-hook-form" -import { zodResolver } from "@hookform/resolvers/zod" -import { z } from "zod" -import { Plus ,X} from "lucide-react" -import { toast } from "sonner" - -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog" -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select" -import { - Dropzone, - DropzoneDescription, - DropzoneInput, - DropzoneTitle, - DropzoneUploadIcon, - DropzoneZone, -} from "@/components/ui/dropzone" -import { - FileList, - FileListAction, - FileListDescription, - FileListHeader, - FileListIcon, - FileListInfo, - FileListItem, - FileListName, - FileListSize, -} from "@/components/ui/file-list" -import { Button } from "@/components/ui/button" -import { Textarea } from "@/components/ui/textarea" -import { addRfqAttachmentRecord } from "../service" - -// 첨부파일 추가 폼 스키마 (단일 파일) -const addAttachmentSchema = z.object({ - attachmentType: z.enum(["구매", "설계"], { - required_error: "문서 타입을 선택해주세요.", - }), - description: z.string().optional(), - file: z.instanceof(File, { - message: "파일을 선택해주세요.", - }), -}) - -type AddAttachmentFormData = z.infer - -interface AddAttachmentDialogProps { - rfqId: number -} - -export function AddAttachmentDialog({ rfqId }: AddAttachmentDialogProps) { - const [open, setOpen] = React.useState(false) - const [isSubmitting, setIsSubmitting] = React.useState(false) - const [uploadProgress, setUploadProgress] = React.useState(0) - - const form = useForm({ - resolver: zodResolver(addAttachmentSchema), - defaultValues: { - attachmentType: undefined, - description: "", - file: undefined, - }, - }) - - const selectedFile = form.watch("file") - - // 다이얼로그 닫기 핸들러 - const handleOpenChange = (newOpen: boolean) => { - if (!newOpen && !isSubmitting) { - form.reset() - } - setOpen(newOpen) - } - - // 파일 선택 처리 - const handleFileChange = (files: File[]) => { - if (files.length === 0) return - - const file = files[0] // 첫 번째 파일만 사용 - - // 파일 크기 검증 - const maxFileSize = 10 * 1024 * 1024 // 10MB - if (file.size > maxFileSize) { - toast.error(`파일이 너무 큽니다. (최대 10MB)`) - return - } - - form.setValue("file", file) - form.clearErrors("file") - } - - // 파일 제거 - const removeFile = () => { - form.resetField("file") - } - - // 파일 업로드 API 호출 - const uploadFile = async (file: File): Promise<{ - fileName: string - originalFileName: string - filePath: string - fileSize: number - fileType: string - }> => { - const formData = new FormData() - formData.append("rfqId", rfqId.toString()) - formData.append("file", file) - - const response = await fetch("/api/upload/rfq-attachment", { - method: "POST", - body: formData, - }) - - if (!response.ok) { - const error = await response.json() - throw new Error(error.message || "파일 업로드 실패") - } - - return response.json() - } - - // 폼 제출 - const onSubmit = async (data: AddAttachmentFormData) => { - setIsSubmitting(true) - setUploadProgress(0) - - try { - // 1단계: 파일 업로드 - setUploadProgress(30) - const uploadedFile = await uploadFile(data.file) - - // 2단계: DB 레코드 생성 (시리얼 번호 자동 생성) - setUploadProgress(70) - const attachmentRecord = { - rfqId, - attachmentType: data.attachmentType, - description: data.description, - fileName: uploadedFile.fileName, - originalFileName: uploadedFile.originalFileName, - filePath: uploadedFile.filePath, - fileSize: uploadedFile.fileSize, - fileType: uploadedFile.fileType, - } - - const result = await addRfqAttachmentRecord(attachmentRecord) - - setUploadProgress(100) - - if (result.success) { - toast.success(result.message) - form.reset() - handleOpenChange(false) - } else { - toast.error(result.message) - } - - } catch (error) { - console.error("Upload error:", error) - toast.error(error instanceof Error ? error.message : "파일 업로드 중 오류가 발생했습니다.") - } finally { - setIsSubmitting(false) - setUploadProgress(0) - } - } - - return ( - - - - - - - - 새 첨부파일 추가 - - RFQ에 첨부할 문서를 업로드합니다. 시리얼 번호는 자동으로 부여됩니다. - - - -
- - {/* 문서 타입 선택 */} - ( - - 문서 타입 - - - - )} - /> - - {/* 설명 */} - ( - - 설명 (선택) - -