feat: add intelligent support workflow
This commit is contained in:
76
frontend/src/features/workbench/WorkbenchPage.test.tsx
Normal file
76
frontend/src/features/workbench/WorkbenchPage.test.tsx
Normal file
@@ -0,0 +1,76 @@
|
||||
import * as React from 'react'
|
||||
import { cleanup, render, screen } from '@testing-library/react'
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import { WorkbenchPage } from './WorkbenchPage'
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
listTickets: vi.fn(),
|
||||
listWorkItems: vi.fn(),
|
||||
getWorkItemMetrics: vi.fn()
|
||||
}))
|
||||
|
||||
vi.mock('@/features/agent-workspace/AgentWorkspaceProvider', () => ({
|
||||
useAgentPageContext: vi.fn()
|
||||
}))
|
||||
vi.mock('@/features/tickets/api', () => ({
|
||||
listTickets: mocks.listTickets
|
||||
}))
|
||||
vi.mock('@/features/workitems/api', () => ({
|
||||
listWorkItems: mocks.listWorkItems,
|
||||
getWorkItemMetrics: mocks.getWorkItemMetrics
|
||||
}))
|
||||
|
||||
afterEach(() => {
|
||||
cleanup()
|
||||
vi.clearAllMocks()
|
||||
})
|
||||
|
||||
describe('WorkbenchPage 任务 SLA', () => {
|
||||
it('展示任务类型、截止状态和 SLA 汇总', async () => {
|
||||
mocks.listTickets.mockResolvedValue({
|
||||
items: [],
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
total: 0,
|
||||
total_pages: 0
|
||||
})
|
||||
mocks.listWorkItems.mockResolvedValue([
|
||||
{
|
||||
public_id: '018f6f5e-b407-7fc2-9c56-2f34e6e1c111',
|
||||
task_type: 'support_analysis_failed',
|
||||
status: 'active',
|
||||
object_type: 'ticket',
|
||||
object_id: '7',
|
||||
ticket_id: 7,
|
||||
ticket_no: 'TK-0007',
|
||||
title: '接管支持分析',
|
||||
description: '需要人工处理',
|
||||
payload: { error_message: '模型调用失败' },
|
||||
assignee_id: 3,
|
||||
created_at: '2026-07-27T08:00:00Z',
|
||||
updated_at: '2026-07-27T08:00:00Z',
|
||||
completed_at: null,
|
||||
due_at: '2026-07-27T12:00:00Z',
|
||||
sla_status: 'overdue'
|
||||
}
|
||||
])
|
||||
mocks.getWorkItemMetrics.mockResolvedValue({
|
||||
active_count: 3,
|
||||
overdue_count: 1,
|
||||
due_soon_count: 1,
|
||||
completed_within_sla_count: 5,
|
||||
completed_overdue_count: 2,
|
||||
by_task_type: { support_analysis_failed: 1 }
|
||||
})
|
||||
|
||||
render(<WorkbenchPage />)
|
||||
|
||||
expect(await screen.findByText('分析接管')).toBeInTheDocument()
|
||||
expect(screen.getByText('模型调用失败')).toBeInTheDocument()
|
||||
expect(screen.getAllByText('已超时')).toHaveLength(1)
|
||||
expect(screen.getByText('活动 3')).toBeInTheDocument()
|
||||
expect(screen.getByText('即将超时 1')).toBeInTheDocument()
|
||||
expect(screen.getByText('已超时 1')).toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user