From ef89d48bfe41882475ab67a7d67ca77fac38516a Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Wed, 15 Apr 2026 07:36:40 +0900 Subject: [PATCH] =?UTF-8?q?fix(library):=20=EC=9E=90=EB=A3=8C=EC=8B=A4=20?= =?UTF-8?q?=EB=A3=A8=ED=8A=B8=20=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=8B=9C=20?= =?UTF-8?q?@library/=20=ED=83=9C=EA=B7=B8=20=EB=88=84=EB=9D=BD=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 폴더 미선택 상태에서 업로드하면 doc_purpose='business'만 설정되고 @library/ 태그가 빠져서 자료실에 문서가 표시되지 않던 버그 수정. 백엔드: business 업로드에 library_path 없으면 @library/미분류 자동 태깅. 프론트: activePath 없을 때 기본값 '미분류' 전송. Co-Authored-By: Claude Opus 4.6 (1M context) --- app/api/documents.py | 6 +++++- app/core/library.py | 1 + frontend/src/routes/library/+page.svelte | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/api/documents.py b/app/api/documents.py index d786ee9..c8d2de9 100644 --- a/app/api/documents.py +++ b/app/api/documents.py @@ -402,7 +402,7 @@ async def upload_document( library_path: str | None = Form(None, description="자료실 경로 (자동 @library/ 태깅)"), ): """파일 업로드 → Inbox 저장 + DB 등록 + 처리 큐 등록""" - from core.library import LIBRARY_PREFIX, normalize_library_path + from core.library import DEFAULT_LIBRARY_PATH, LIBRARY_PREFIX, normalize_library_path # doc_purpose 검증 if doc_purpose is not None: @@ -421,6 +421,10 @@ async def upload_document( except ValueError as e: raise HTTPException(status_code=400, detail=f"잘못된 자료실 경로: {e}") + # 자료실 업로드인데 경로 미지정 → 미분류 자동 태깅 + if doc_purpose == "business" and not library_tag: + library_tag = f"{LIBRARY_PREFIX}{DEFAULT_LIBRARY_PATH}" + if not file.filename: raise HTTPException(status_code=400, detail="파일명이 필요합니다") diff --git a/app/core/library.py b/app/core/library.py index 5d32dda..19be47b 100644 --- a/app/core/library.py +++ b/app/core/library.py @@ -4,6 +4,7 @@ user_tags 내 @library/ 접두사 태그를 정규화·검증·추출한다. """ LIBRARY_PREFIX = "@library/" +DEFAULT_LIBRARY_PATH = "미분류" MAX_DEPTH = 5 MAX_SEGMENT_LEN = 30 diff --git a/frontend/src/routes/library/+page.svelte b/frontend/src/routes/library/+page.svelte index bdb6063..afd35a9 100644 --- a/frontend/src/routes/library/+page.svelte +++ b/frontend/src/routes/library/+page.svelte @@ -42,6 +42,7 @@ ]; const ODF_FORMATS = ['ods', 'odt', 'odp', 'odoc', 'osheet']; + const DEFAULT_LIBRARY_PATH = '미분류'; // ─── 데이터 로드 ─── @@ -198,7 +199,7 @@ const formData = new FormData(); formData.append('file', file); formData.append('doc_purpose', 'business'); - if (activePath) formData.append('library_path', activePath); + formData.append('library_path', activePath || DEFAULT_LIBRARY_PATH); try { await api('/documents/', { method: 'POST', body: formData }); success++;