// ======================================== // Issue Discovery Page // ======================================== // Track discovery sessions and view findings from multiple perspectives import { useIntl } from 'react-intl'; import { Radar, AlertCircle, Loader2 } from 'lucide-react'; import { Card } from '@/components/ui/Card'; import { Badge } from '@/components/ui/Badge'; import { useIssueDiscovery } from '@/hooks/useIssues'; import { DiscoveryCard } from '@/components/issue/discovery/DiscoveryCard'; import { DiscoveryDetail } from '@/components/issue/discovery/DiscoveryDetail'; export function DiscoveryPage() { const { formatMessage } = useIntl(); const { sessions, activeSession, findings, isLoadingSessions, isLoadingFindings, error, filters, setFilters, selectSession, exportFindings, } = useIssueDiscovery({ refetchInterval: 3000 }); if (error) { return (

{formatMessage({ id: 'issues.discovery.title' })}

{formatMessage({ id: 'common.error' })}

{error.message}

); } return (
{/* Page Header */}

{formatMessage({ id: 'issues.discovery.title' })}

{formatMessage({ id: 'issues.discovery.description' })}

{/* Stats Cards */}
{sessions.length}

{formatMessage({ id: 'issues.discovery.totalSessions' })}

{sessions.filter(s => s.status === 'completed').length} {sessions.filter(s => s.status === 'completed').length}

{formatMessage({ id: 'issues.discovery.completedSessions' })}

{sessions.filter(s => s.status === 'running').length} {sessions.filter(s => s.status === 'running').length}

{formatMessage({ id: 'issues.discovery.runningSessions' })}

{sessions.reduce((sum, s) => sum + s.findings_count, 0)}

{formatMessage({ id: 'issues.discovery.totalFindings' })}

{/* Main Content: Split Pane */}
{/* Left: Session List */}

{formatMessage({ id: 'issues.discovery.sessionList' })}

{isLoadingSessions ? (
{[1, 2, 3].map((i) => (
))}
) : sessions.length === 0 ? (

{formatMessage({ id: 'issues.discovery.noSessions' })}

{formatMessage({ id: 'issues.discovery.noSessionsDescription' })}

) : (
{sessions.map((session) => ( selectSession(session.id)} /> ))}
)}
{/* Right: Findings Detail */}

{formatMessage({ id: 'issues.discovery.findingsDetail' })}

{isLoadingFindings ? (
) : ( )}
); } export default DiscoveryPage;