From 87bdd8003cff961bc96010e04f85670415e946a0 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Fri, 3 Apr 2026 11:02:42 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=93=9C=EB=9E=98=EA=B7=B8=20=EC=95=A4?= =?UTF-8?q?=20=EB=93=9C=EB=A1=AD=20=EC=97=85=EB=A1=9C=EB=93=9C=20(UploadDr?= =?UTF-8?q?opzone)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 파일 드래그 시 전체 페이지 오버레이 - 순차 업로드 + 파일별 진행 상태 - 성공/실패 토스트 + 목록 자동 새로고침 - documents 페이지에 통합 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/lib/components/UploadDropzone.svelte | 114 ++++++++++++++++++ frontend/src/routes/documents/+page.svelte | 4 + 2 files changed, 118 insertions(+) create mode 100644 frontend/src/lib/components/UploadDropzone.svelte diff --git a/frontend/src/lib/components/UploadDropzone.svelte b/frontend/src/lib/components/UploadDropzone.svelte new file mode 100644 index 0000000..47af868 --- /dev/null +++ b/frontend/src/lib/components/UploadDropzone.svelte @@ -0,0 +1,114 @@ + + + + + +{#if dragging} +
+
+ +

여기에 파일을 놓으세요

+
+
+{/if} + + +{#if uploading && uploadFiles.length > 0} +
+

업로드 중...

+
+ {#each uploadFiles as f} +
+ {f.name} + + {f.status === 'done' ? '✓' : f.status === 'failed' ? '✗' : f.status === 'uploading' ? '↑' : '…'} + +
+ {/each} +
+
+{/if} diff --git a/frontend/src/routes/documents/+page.svelte b/frontend/src/routes/documents/+page.svelte index e7480ee..d4cf1f6 100644 --- a/frontend/src/routes/documents/+page.svelte +++ b/frontend/src/routes/documents/+page.svelte @@ -7,6 +7,7 @@ import DocumentCard from '$lib/components/DocumentCard.svelte'; import PreviewPanel from '$lib/components/PreviewPanel.svelte'; import DocumentViewer from '$lib/components/DocumentViewer.svelte'; + import UploadDropzone from '$lib/components/UploadDropzone.svelte'; let documents = $state([]); let total = $state(0); @@ -135,6 +136,9 @@
+ + +