From 102d37c1afa8d2d672a42c1a54d07bfdf5a59ee8 Mon Sep 17 00:00:00 2001 From: web-admin Date: Wed, 8 Jul 2026 05:10:35 +0000 Subject: [PATCH] platform/lms-adm-fe release promotion snapshot --- src/lib/curriculum.ts | 9 +++++++-- src/pages/curriculum/CurriculumPage.tsx | 16 ++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/lib/curriculum.ts b/src/lib/curriculum.ts index d2862a0..f87e817 100644 --- a/src/lib/curriculum.ts +++ b/src/lib/curriculum.ts @@ -89,6 +89,11 @@ export type InstructorCurriculumResponse = { const LMS_API_BASE_URL = (import.meta.env.VITE_API_BASE_URL ?? 'https://workspace.autonomystudio.net/lms-api/api').replace(/\/+$/, ''); +function uploadErrorMessage(status: number, fallback: string) { + if (status === 413) return '파일 용량이 업로드 제한을 초과했습니다. 관리자에게 업로드 허용 용량 설정을 확인해 주세요.'; + return `${fallback} (${status})`; +} + export async function getInstructorCurriculum(accessToken: string, groupId?: string | null, courseId?: string | null): Promise { const params = new URLSearchParams(); if (groupId) params.set('groupId', groupId); @@ -208,7 +213,7 @@ export async function uploadCurriculumReference( const message = payload && typeof payload === 'object' && 'message' in payload ? String(payload.message) - : `참고자료를 업로드하지 못했습니다. (${response.status})`; + : uploadErrorMessage(response.status, '참고자료를 업로드하지 못했습니다.'); throw new Error(message); } @@ -242,7 +247,7 @@ export async function uploadCurriculumExampleCode( const message = payload && typeof payload === 'object' && 'message' in payload ? String(payload.message) - : `예제 코드를 업로드하지 못했습니다. (${response.status})`; + : uploadErrorMessage(response.status, '예제 코드를 업로드하지 못했습니다.'); throw new Error(message); } diff --git a/src/pages/curriculum/CurriculumPage.tsx b/src/pages/curriculum/CurriculumPage.tsx index aff9bad..9082e28 100644 --- a/src/pages/curriculum/CurriculumPage.tsx +++ b/src/pages/curriculum/CurriculumPage.tsx @@ -474,7 +474,13 @@ export function CurriculumPage({ session, selectedCourseId }: { session: AuthSes message: referenceFile.name, }); } catch (reason) { - setError(reason instanceof Error ? reason.message : '참고자료를 업로드하지 못했습니다.'); + const message = reason instanceof Error ? reason.message : '참고자료를 업로드하지 못했습니다.'; + setError(message); + showToast({ + title: '참고자료 업로드 실패', + message, + variant: 'error', + }); } finally { setSaving(false); } @@ -502,7 +508,13 @@ export function CurriculumPage({ session, selectedCourseId }: { session: AuthSes message: exampleCodeFile.name, }); } catch (reason) { - setError(reason instanceof Error ? reason.message : '예제 코드를 업로드하지 못했습니다.'); + const message = reason instanceof Error ? reason.message : '예제 코드를 업로드하지 못했습니다.'; + setError(message); + showToast({ + title: '예제 코드 업로드 실패', + message, + variant: 'error', + }); } finally { setSaving(false); }