diff --git a/frontend/src/app/admin/data/page.tsx b/frontend/src/app/admin/data/page.tsx index f65c978..af68ef1 100644 --- a/frontend/src/app/admin/data/page.tsx +++ b/frontend/src/app/admin/data/page.tsx @@ -35,6 +35,8 @@ export default function DataManagementPage() { const [loading, setLoading] = useState(true); const [jobs, setJobs] = useState([]); const [collecting, setCollecting] = useState(null); + const [error, setError] = useState(null); + const [refreshing, setRefreshing] = useState(false); useEffect(() => { const init = async () => { @@ -53,25 +55,40 @@ export default function DataManagementPage() { const fetchJobs = async () => { try { + setError(null); const data = await api.get('/api/admin/collect/status'); setJobs(data); } catch (err) { + const message = err instanceof Error ? err.message : 'Failed to fetch jobs'; + setError(message); console.error('Failed to fetch jobs:', err); } }; const runCollector = async (key: string) => { setCollecting(key); + setError(null); try { await api.post(`/api/admin/collect/${key}`); await fetchJobs(); } catch (err) { + const message = err instanceof Error ? err.message : 'Collection failed'; + setError(message); console.error('Collection failed:', err); } finally { setCollecting(null); } }; + const handleRefresh = async () => { + setRefreshing(true); + try { + await fetchJobs(); + } finally { + setRefreshing(false); + } + }; + const getStatusBadge = (status: string) => { const colors: Record = { success: 'bg-green-100 text-green-800', @@ -97,6 +114,12 @@ export default function DataManagementPage() {

데이터 수집 관리

+ {error && ( +
+ {error} +
+ )} +

수집 작업

@@ -113,6 +136,7 @@ export default function DataManagementPage() {
- - - - - + + + + +
작업명상태시작 시간건수에러작업명상태시작 시간건수에러