feat: add tests and implementation for issue discovery and queue pages

- Implemented `DiscoveryPage` with session management and findings display.
- Added tests for `DiscoveryPage` to ensure proper rendering and functionality.
- Created `QueuePage` for managing issue execution queues with stats and actions.
- Added tests for `QueuePage` to verify UI elements and translations.
- Introduced `useIssues` hooks for fetching and managing issue data.
- Added loading skeletons and error handling for better user experience.
- Created `vite-env.d.ts` for TypeScript support in Vite environment.
This commit is contained in:
catlog22
2026-01-31 21:20:10 +08:00
parent 6d225948d1
commit 1bd082a725
79 changed files with 5870 additions and 449 deletions

View File

@@ -57,6 +57,60 @@ const mockMessages: Record<Locale, Record<string, string>> = {
'workspace.selector.dialog.placeholder': 'Enter project path...',
// Notifications
'common.aria.notifications': 'Notifications',
'common.actions.refresh': 'Refresh',
// Issues - Queue
'issues.queue.pageTitle': 'Issue Queue',
'issues.queue.pageDescription': 'Manage issue execution queue with execution groups',
'issues.queue.title': 'Queue',
'issues.queue.stats.totalItems': 'Total Items',
'issues.queue.stats.groups': 'Groups',
'issues.queue.stats.tasks': 'Tasks',
'issues.queue.stats.solutions': 'Solutions',
'issues.queue.status.active': 'Active',
'issues.queue.status.inactive': 'Inactive',
'issues.queue.status.ready': 'Ready',
'issues.queue.status.pending': 'Pending',
'issues.queue.items': 'Items',
'issues.queue.groups': 'Groups',
'issues.queue.conflicts': 'conflicts',
'issues.queue.conflicts.title': 'Conflicts Detected',
'issues.queue.conflicts.description': 'conflicts detected in queue',
'issues.queue.parallelGroup': 'Parallel',
'issues.queue.sequentialGroup': 'Sequential',
'issues.queue.executionGroups': 'Execution Groups',
'issues.queue.empty': 'No items in queue',
'issues.queue.emptyState.title': 'No Queue Data',
'issues.queue.emptyState.description': 'No queue data available',
'issues.queue.error.title': 'Error Loading Queue',
'issues.queue.error.message': 'Failed to load queue data',
'issues.queue.actions.activate': 'Activate',
'issues.queue.actions.deactivate': 'Deactivate',
'issues.queue.actions.delete': 'Delete',
'issues.queue.actions.merge': 'Merge',
'issues.queue.deleteDialog.title': 'Delete Queue',
'issues.queue.deleteDialog.description': 'Are you sure you want to delete this queue?',
'issues.queue.mergeDialog.title': 'Merge Queues',
'issues.queue.mergeDialog.targetQueueLabel': 'Target Queue',
'issues.queue.mergeDialog.targetQueuePlaceholder': 'Select target queue',
'common.actions.openMenu': 'Open menu',
// Issues - Discovery
'issues.discovery.title': 'Issue Discovery',
'issues.discovery.pageTitle': 'Issue Discovery',
'issues.discovery.description': 'View and manage issue discovery sessions',
'issues.discovery.totalSessions': 'Total Sessions',
'issues.discovery.completedSessions': 'Completed',
'issues.discovery.runningSessions': 'Running',
'issues.discovery.totalFindings': 'Total Findings',
'issues.discovery.sessionList': 'Sessions',
'issues.discovery.findingsDetail': 'Findings Detail',
'issues.discovery.noSessions': 'No Sessions',
'issues.discovery.noSessionsDescription': 'No discovery sessions found',
'issues.discovery.noSessionSelected': 'Select a session to view findings',
'issues.discovery.status.running': 'Running',
'issues.discovery.status.completed': 'Completed',
'issues.discovery.status.failed': 'Failed',
'issues.discovery.progress': 'Progress',
'issues.discovery.findings': 'Findings',
},
zh: {
// Common
@@ -102,6 +156,60 @@ const mockMessages: Record<Locale, Record<string, string>> = {
'workspace.selector.dialog.placeholder': '输入项目路径...',
// Notifications
'common.aria.notifications': '通知',
'common.actions.refresh': '刷新',
// Issues - Queue
'issues.queue.pageTitle': '问题队列',
'issues.queue.pageDescription': '管理问题执行队列和执行组',
'issues.queue.title': '队列',
'issues.queue.stats.totalItems': '总项目',
'issues.queue.stats.groups': '执行组',
'issues.queue.stats.tasks': '任务',
'issues.queue.stats.solutions': '解决方案',
'issues.queue.status.active': '活跃',
'issues.queue.status.inactive': '未激活',
'issues.queue.status.ready': '就绪',
'issues.queue.status.pending': '等待中',
'issues.queue.items': '项目',
'issues.queue.groups': '执行组',
'issues.queue.conflicts': '冲突',
'issues.queue.conflicts.title': '检测到冲突',
'issues.queue.conflicts.description': '队列中检测到冲突',
'issues.queue.parallelGroup': '并行',
'issues.queue.sequentialGroup': '顺序',
'issues.queue.executionGroups': '执行组',
'issues.queue.empty': '队列中无项目',
'issues.queue.emptyState.title': '无队列数据',
'issues.queue.emptyState.description': '无队列数据可用',
'issues.queue.error.title': '加载队列错误',
'issues.queue.error.message': '加载队列数据失败',
'issues.queue.actions.activate': '激活',
'issues.queue.actions.deactivate': '停用',
'issues.queue.actions.delete': '删除',
'issues.queue.actions.merge': '合并',
'issues.queue.deleteDialog.title': '删除队列',
'issues.queue.deleteDialog.description': '确定要删除此队列吗?',
'issues.queue.mergeDialog.title': '合并队列',
'issues.queue.mergeDialog.targetQueueLabel': '目标队列',
'issues.queue.mergeDialog.targetQueuePlaceholder': '选择目标队列',
'common.actions.openMenu': '打开菜单',
// Issues - Discovery
'issues.discovery.title': '问题发现',
'issues.discovery.pageTitle': '问题发现',
'issues.discovery.description': '查看和管理问题发现会话',
'issues.discovery.totalSessions': '总会话数',
'issues.discovery.completedSessions': '已完成',
'issues.discovery.runningSessions': '运行中',
'issues.discovery.totalFindings': '总发现数',
'issues.discovery.sessionList': '会话',
'issues.discovery.findingsDetail': '发现详情',
'issues.discovery.noSessions': '无会话',
'issues.discovery.noSessionsDescription': '未发现发现会话',
'issues.discovery.noSessionSelected': '选择会话以查看发现',
'issues.discovery.status.running': '运行中',
'issues.discovery.status.completed': '已完成',
'issues.discovery.status.failed': '失败',
'issues.discovery.progress': '进度',
'issues.discovery.findings': '发现',
},
};