diff --git a/services/api/app/api/tasks.py b/services/api/app/api/tasks.py index 79e8888..684f614 100644 --- a/services/api/app/api/tasks.py +++ b/services/api/app/api/tasks.py @@ -119,11 +119,5 @@ async def delete_task( if task is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Задача не найдена") - if task.status == "processing": - raise HTTPException( - status_code=status.HTTP_409_CONFLICT, - detail="Нельзя удалить задачу в процессе выполнения", - ) - await db.delete(task) await db.commit() diff --git a/services/frontend/src/components/TaskCard.tsx b/services/frontend/src/components/TaskCard.tsx index d28ff69..4d4eb97 100644 --- a/services/frontend/src/components/TaskCard.tsx +++ b/services/frontend/src/components/TaskCard.tsx @@ -1,13 +1,14 @@ import { Link } from 'react-router-dom'; import { formatDistanceToNow } from 'date-fns'; import { ru } from 'date-fns/locale'; -import { Search, FileText, BookOpen, AlignLeft, ChevronRight } from 'lucide-react'; +import { Search, FileText, BookOpen, AlignLeft, ChevronRight, Trash2 } from 'lucide-react'; import { clsx } from 'clsx'; import { StatusBadge } from './StatusBadge'; import type { Task } from '../types'; interface TaskCardProps { task: Task; + onDelete?: (publicId: string) => void; } const TYPE_CONFIG = { @@ -63,7 +64,7 @@ function getTaskSummary(task: Task): string { return 'Результат готов'; } -export function TaskCard({ task }: TaskCardProps) { +export function TaskCard({ task, onDelete }: TaskCardProps) { const config = TYPE_CONFIG[task.type] || TYPE_CONFIG.search; const Icon = config.icon; const summary = getTaskSummary(task); @@ -94,6 +95,21 @@ export function TaskCard({ task }: TaskCardProps) {
+ {/* Удалить */} + {onDelete && ( + + )} + {/* Стрелка */}