diff --git a/internal/pkg/dto/response/skill_response.go b/internal/pkg/dto/response/skill_response.go index f7f5b9f..ca53fe0 100644 --- a/internal/pkg/dto/response/skill_response.go +++ b/internal/pkg/dto/response/skill_response.go @@ -10,7 +10,6 @@ type SkillDefinitionResponse struct { Instruction string `json:"instruction"` Examples []string `json:"examples"` ToolWhitelist []string `json:"toolWhitelist"` - Priority int `json:"priority"` Status int `json:"status"` StatusName string `json:"statusName"` Remark string `json:"remark"` diff --git a/web/app/(console)/skill-definition/page.tsx b/web/app/(console)/skill-definition/page.tsx index ae18a8c..df91de2 100644 --- a/web/app/(console)/skill-definition/page.tsx +++ b/web/app/(console)/skill-definition/page.tsx @@ -1,28 +1,9 @@ "use client" -import { - closestCenter, - DndContext, - KeyboardSensor, - MouseSensor, - TouchSensor, - useSensor, - useSensors, - type DragEndEvent, -} from "@dnd-kit/core" -import { - arrayMove, - SortableContext, - sortableKeyboardCoordinates, - useSortable, - verticalListSortingStrategy, -} from "@dnd-kit/sortable" -import { CSS } from "@dnd-kit/utilities" -import { useCallback, useEffect, useState, type CSSProperties } from "react" +import { useCallback, useEffect, useState } from "react" import { BrainCircuitIcon, BugIcon, - GripVerticalIcon, MoreHorizontalIcon, PlusIcon, RefreshCwIcon, @@ -57,18 +38,14 @@ import { deleteSkillDefinition, fetchSkillDefinitions, updateSkillDefinition, - updateSkillDefinitionPriority, updateSkillDefinitionStatus, type CreateSkillDefinitionPayload, type PageResult, type SkillDefinition, } from "@/lib/api/admin" -import { - Status, - StatusLabels, -} from "@/lib/generated/enums" +import { Status, StatusLabels } from "@/lib/generated/enums" import { getEnumLabel, getEnumOptions } from "@/lib/enums" -import { cn, formatDateTime } from "@/lib/utils" +import { formatDateTime } from "@/lib/utils" import { EditDialog } from "./_components/edit" import { DebugDialog } from "./_components/debug-dialog" @@ -80,9 +57,8 @@ const statusFilterOptions = [ })), ] -type SortableSkillRowProps = { +type SkillRowProps = { item: SkillDefinition - disabled: boolean actionLoadingId: number | null openEditDialog: (item: SkillDefinition) => void openDebugDialog: (item: SkillDefinition) => void @@ -90,55 +66,16 @@ type SortableSkillRowProps = { handleDelete: (item: SkillDefinition) => void } -function SortableSkillRow({ +function SkillRow({ item, - disabled, actionLoadingId, openEditDialog, openDebugDialog, handleToggleStatus, handleDelete, -}: SortableSkillRowProps) { - const { - attributes, - listeners, - setNodeRef, - transform, - transition, - isDragging, - } = useSortable({ - id: item.id, - disabled, - }) - - const style: CSSProperties = { - transform: CSS.Transform.toString(transform), - transition, - } - +}: SkillRowProps) { return ( - - - - +
@@ -148,12 +85,8 @@ function SortableSkillRow({
{item.name}
{item.code} - - 白名单 {item.toolWhitelist.length} - - - 示例 {item.examples.length} - + 白名单 {item.toolWhitelist.length} + 示例 {item.examples.length}
{item.description || "暂无描述"} @@ -169,9 +102,7 @@ function SortableSkillRow({ ))} {item.toolWhitelist.length > 3 ? ( - - +{item.toolWhitelist.length - 3} - + +{item.toolWhitelist.length - 3} ) : null}
) : null} @@ -186,21 +117,11 @@ function SortableSkillRow({ onCheckedChange={() => void handleToggleStatus(item)} aria-label={`${item.name} 状态切换`} /> - - {getEnumLabel( - StatusLabels, - item.status as keyof typeof StatusLabels - )} + + {getEnumLabel(StatusLabels, item.status as keyof typeof StatusLabels)}
- {item.priority}
{formatDateTime(item.updatedAt)}
@@ -211,19 +132,11 @@ function SortableSkillRow({ - - @@ -262,7 +175,6 @@ export default function DashboardSkillsPage() { const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const [actionLoadingId, setActionLoadingId] = useState(null) - const [sorting, setSorting] = useState(false) const [dialogOpen, setDialogOpen] = useState(false) const [debugDialogOpen, setDebugDialogOpen] = useState(false) const [editingItem, setEditingItem] = useState(null) @@ -272,18 +184,6 @@ export default function DashboardSkillsPage() { page: { page: 1, limit: 20, total: 0 }, }) - const sensors = useSensors( - useSensor(MouseSensor, { - activationConstraint: { distance: 8 }, - }), - useSensor(TouchSensor, { - activationConstraint: { delay: 150, tolerance: 8 }, - }), - useSensor(KeyboardSensor, { - coordinateGetter: sortableKeyboardCoordinates, - }), - ) - const loadData = useCallback(async () => { setLoading(true) try { @@ -388,10 +288,7 @@ export default function DashboardSkillsPage() { } async function handleToggleStatus(item: SkillDefinition) { - const nextStatus = - item.status === Status.Ok - ? Status.Disabled - : Status.Ok + const nextStatus = item.status === Status.Ok ? Status.Disabled : Status.Ok setActionLoadingId(item.id) try { @@ -418,41 +315,6 @@ export default function DashboardSkillsPage() { } } - async function handleDragEnd(event: DragEndEvent) { - const { active, over } = event - if (!over || active.id === over.id || sorting) { - return - } - - const previousResults = result.results - const oldIndex = previousResults.findIndex((item) => item.id === active.id) - const newIndex = previousResults.findIndex((item) => item.id === over.id) - if (oldIndex < 0 || newIndex < 0) { - return - } - - const nextResults = arrayMove(previousResults, oldIndex, newIndex) - setResult((current) => ({ - ...current, - results: nextResults, - })) - setSorting(true) - - try { - await updateSkillDefinitionPriority(nextResults.map((item) => item.id)) - toast.success("Skill 优先级已更新") - await loadData() - } catch (error) { - setResult((current) => ({ - ...current, - results: previousResults, - })) - toast.error(error instanceof Error ? error.message : "更新优先级失败") - } finally { - setSorting(false) - } - } - return ( <>
@@ -500,50 +362,36 @@ export default function DashboardSkillsPage() {
- - - +
+ + + Skill + 状态 + 最近更新 + 操作 + + + + {!loading && result.results.length === 0 ? ( - - Skill - 状态 - 优先级 - 最近更新 - 操作 + + 没有匹配的 Skill + - - - {!loading && result.results.length === 0 ? ( - - - 没有匹配的 Skill - - - ) : null} - item.id)} - strategy={verticalListSortingStrategy} - > - {result.results.map((item) => ( - - ))} - - -
-
+ ) : null} + {result.results.map((item) => ( + + ))} + +
("/api/console/skill-definition/update_priority", { - method: "POST", - body: JSON.stringify(ids), - }) -} - export function debugRunSkillDefinition(payload: SkillDebugRunPayload) { return request("/api/console/skill-definition/debug_run", { method: "POST",