// frontend/components/tasks/ScaffoldPanel.tsx — Auto-Scaffolding (업무 쪼개기) "use client"; import { useState } from "react"; import { Icon } from "@/components/Icon"; import { tasksApi } from "@/lib/tasks/api"; import type { ScaffoldResult } from "@/lib/types"; export function ScaffoldPanel({ taskId, show, onApplied, }: { taskId: string; show: boolean; // 완료 작업이면 트리거 숨김 onApplied: () => void; }) { const [preview, setPreview] = useState(null); const [busy, setBusy] = useState(false); const trigger = async () => { setBusy(true); try { const r = await tasksApi.scaffold(taskId, { create: false }); setPreview(r); } finally { setBusy(false); } }; const apply = async () => { setBusy(true); try { await tasksApi.scaffold(taskId, { create: true }); setPreview(null); onApplied(); } finally { setBusy(false); } }; if (preview) { return (
{preview.kind} 워크플로우 추천 {preview.items.length}단계 · 예상 시간 자동 배분
{preview.items.map((it, i) => (
{i + 1} {it.title} {it.est}
))}
); } if (!show) return null; return ( ); }