diff --git a/frontend/src/routes/study/cards-study/+page.svelte b/frontend/src/routes/study/cards-study/+page.svelte index 95bd3aa..04cca6d 100644 --- a/frontend/src/routes/study/cards-study/+page.svelte +++ b/frontend/src/routes/study/cards-study/+page.svelte @@ -16,7 +16,7 @@ import { goto } from '$app/navigation'; import { api } from '$lib/api'; import { addToast } from '$lib/stores/toast'; - import { ArrowLeft, Repeat, Layers, Eye, BookOpen } from 'lucide-svelte'; + import { ArrowLeft, Repeat, Layers, Eye, BookOpen, Flag } from 'lucide-svelte'; import Button from '$lib/components/ui/Button.svelte'; import Skeleton from '$lib/components/ui/Skeleton.svelte'; import EmptyState from '$lib/components/ui/EmptyState.svelte'; @@ -140,6 +140,23 @@ } } + // 학습 중 카드 내용이 이상하면 검수함(cards-review)으로 되돌림 (needs_review=true → 학습 큐에서 빠짐). + let flagBusy = $state(false); + async function flagCard() { + if (!current || flagBusy || busy) return; + flagBusy = true; + const c = current; + try { + await api(`/study-cards/${c.id}`, { method: 'PATCH', body: JSON.stringify({ needs_review: true }) }); + addToast('success', '검수함으로 보냈어요 — 이 카드는 학습에서 빠집니다'); + advance(); + } catch (err) { + addToast('error', err?.detail || '신고 처리 실패'); + } finally { + flagBusy = false; + } + } + function setCramFilter(f) { if (fmtFilter === f) return; fmtFilter = f; @@ -294,9 +311,20 @@
- {current.format} +
+ {current.format} + +
앞 — {current.format === 'qa' ? '질문' : '회상'}