import { useState, useEffect } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Progress } from '@/components/ui/progress'; import { Separator } from '@/components/ui/separator'; import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; import { Brain, Search, Calendar, Link, FileText, Shield, CheckCircle, AlertTriangle, Eye, Users, Clock, TrendingUp, Network } from 'lucide-react'; import { useQuery } from '@tanstack/react-query'; import { queryClient } from '@/lib/queryClient'; interface AICapabilities { models: { text: { primary: string; backup: string; capabilities: string[] }; image: { primary: string; backup: string; capabilities: string[] }; audio: { primary: string; capabilities: string[] }; }; analysisTypes: string[]; patternTypes: string[]; legalFeatures: string[]; maxEvidenceItems: number; apiKeysConfigured: { anthropic: boolean; openai: boolean; }; } interface EvidenceAnalysisResult { analysisId: string; evidenceId: string; confidence: number; findings: Array<{ type: string; description: string; confidence: number; significance: 'low' | 'medium' | 'high' | 'critical'; }>; metadata: { processingTime: number; modelUsed: string; analysisDepth: string; }; } interface PatternDetectionResult { patterns: Array<{ type: string; confidence: number; description: string; evidenceIds: string[]; legalSignificance: string; }>; clusters: Array<{ id: string; name: string; evidenceItems: string[]; significance: string; }>; anomalies: Array<{ id: string; type: string; severity: 'low' | 'medium' | 'high'; description: string; recommendation: string; }>; } export function AIAnalysisDashboard() { const [selectedTab, setSelectedTab] = useState('overview'); const [recentAnalyses, setRecentAnalyses] = useState([]); const [patternResults, setPatternResults] = useState(null); // Fetch AI capabilities const { data: capabilities, isLoading: capabilitiesLoading } = useQuery({ queryKey: ['/api/v1/ai-analysis/capabilities'], retry: false, }); // Mock recent analyses for demonstration useEffect(() => { const mockAnalyses: EvidenceAnalysisResult[] = [ { analysisId: 'analysis_001', evidenceId: 'evidence_001', confidence: 0.923, findings: [ { type: 'entity_extraction', description: '3 persons, 2 organizations identified', confidence: 0.95, significance: 'high' }, { type: 'document_classification', description: 'Legal contract (commercial agreement)', confidence: 0.97, significance: 'high' }, { type: 'authenticity_check', description: 'Digital signatures verified, no tampering detected', confidence: 0.89, significance: 'critical' } ], metadata: { processingTime: 1247, modelUsed: 'claude-sonnet-4-20250514', analysisDepth: 'comprehensive' } }, { analysisId: 'analysis_002', evidenceId: 'evidence_002', confidence: 0.847, findings: [ { type: 'sentiment_analysis', description: 'Neutral tone, professional language', confidence: 0.82, significance: 'medium' }, { type: 'legal_privilege', description: 'No attorney-client privilege detected', confidence: 0.91, significance: 'high' } ], metadata: { processingTime: 892, modelUsed: 'gpt-4o', analysisDepth: 'basic' } } ]; const mockPatterns: PatternDetectionResult = { patterns: [ { type: 'temporal', confidence: 0.921, description: 'Regular communication pattern every Tuesday at 2 PM', evidenceIds: ['evidence_001', 'evidence_002', 'evidence_004'], legalSignificance: 'Establishes routine business relationship' }, { type: 'content', confidence: 0.875, description: 'Identical contract clauses in multiple documents', evidenceIds: ['evidence_001', 'evidence_003', 'evidence_005'], legalSignificance: 'Template usage or potential copy-paste' } ], clusters: [ { id: 'cluster_a', name: 'Contract Documents', evidenceItems: ['evidence_001', 'evidence_003', 'evidence_005'], significance: 'High - Core contract dispute materials' }, { id: 'cluster_b', name: 'Communications', evidenceItems: ['evidence_002', 'evidence_004'], significance: 'Medium - Supporting correspondence' } ], anomalies: [ { id: 'anomaly_001', type: 'metadata_inconsistency', severity: 'medium', description: 'File creation time predates referenced events', recommendation: 'Verify document authenticity and creation timeline' } ] }; setRecentAnalyses(mockAnalyses); setPatternResults(mockPatterns); }, []); const getConfidenceColor = (confidence: number) => { if (confidence >= 0.9) return 'text-green-600'; if (confidence >= 0.7) return 'text-yellow-600'; return 'text-red-600'; }; const getSignificanceBadge = (significance: string) => { const colors = { low: 'bg-gray-100 text-gray-800', medium: 'bg-blue-100 text-blue-800', high: 'bg-orange-100 text-orange-800', critical: 'bg-red-100 text-red-800' }; return colors[significance as keyof typeof colors] || colors.medium; }; if (capabilitiesLoading) { return (

Loading AI Analysis System...

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

AI Evidence Analysis

Advanced AI-powered analysis for legal evidence processing

{capabilities?.apiKeysConfigured.anthropic && ( Claude )} {capabilities?.apiKeysConfigured.openai && ( GPT )}
{/* System Status Alert */} {capabilities && ( System Status AI analysis system is operational with {capabilities.analysisTypes.length} analysis types and support for up to {capabilities.maxEvidenceItems} evidence items per analysis. )} {/* Main Dashboard Tabs */} Overview Evidence Analysis Pattern Detection Cross-Platform Capabilities {/* Overview Tab */}
Total Analyses
247

+23 from last week

Patterns Found
42

Across 15 cases

Avg Confidence
87.4%

+2.1% from last month

Anomalies
8

Requires review

{/* Recent Analyses */} Recent Evidence Analyses Latest AI analysis results
{recentAnalyses.map((analysis) => (
{analysis.evidenceId} {analysis.metadata.analysisDepth}
{(analysis.confidence * 100).toFixed(1)}% {analysis.metadata.modelUsed.split('-')[0]}
{analysis.findings.map((finding, idx) => (
{finding.description} {finding.significance}
))}
Processed in {analysis.metadata.processingTime}ms
))}
{/* Evidence Analysis Tab */}
Analysis Types Available AI analysis capabilities
{capabilities?.analysisTypes.map((type) => (
{type.replace('_', ' ')}
))}
Legal Features Legal compliance and analysis features
{capabilities?.legalFeatures.map((feature) => (
{feature}
))}
{/* Analysis Actions */} New Analysis Start a new evidence analysis
{/* Pattern Detection Tab */} {patternResults && ( <> {/* Detected Patterns */} Detected Patterns {patternResults.patterns.length} patterns found
{patternResults.patterns.map((pattern, idx) => (
{pattern.type} Pattern {idx + 1}
{(pattern.confidence * 100).toFixed(1)}%

{pattern.description}

Legal Significance: {pattern.legalSignificance}
Evidence: {pattern.evidenceIds.join(', ')}
))}
{/* Evidence Clusters */} Evidence Clusters {patternResults.clusters.length} clusters identified
{patternResults.clusters.map((cluster) => (

{cluster.name}

{cluster.evidenceItems.length} items

{cluster.significance}

Items: {cluster.evidenceItems.join(', ')}
))}
{/* Anomalies */} Detected Anomalies {patternResults.anomalies.length} anomalies require attention
{patternResults.anomalies.map((anomaly) => ( {anomaly.type.replace('_', ' ').toUpperCase()} {anomaly.severity}

{anomaly.description}

Recommendation: {anomaly.recommendation}

))}
)}
{/* Cross-Platform Analysis Tab */}
Ecosystem Integration AI analysis across ChittyChain platforms

Cross-Platform Analysis

Analyze evidence patterns and correlations across the ChittyChain ecosystem

Platform Connections
ChittyChainLedger
ChittyTrust
ChittyVerify
ChittyResolution
Data Synchronization
98.5%
Sync Success Rate
Cross-Platform Insights
247
Active Correlations
Across 4 platforms
{/* Capabilities Tab */} {capabilities && (
{/* Text Analysis */} Text Analysis Primary: {capabilities.models.text.primary}
{capabilities.models.text.capabilities.map((capability) => (
{capability}
))}
{/* Image Analysis */} Image Analysis Primary: {capabilities.models.image.primary}
{capabilities.models.image.capabilities.map((capability) => (
{capability}
))}
{/* Audio Analysis */} Audio Analysis Primary: {capabilities.models.audio.primary}
{capabilities.models.audio.capabilities.map((capability) => (
{capability}
))}
{/* Pattern Types */} Pattern Types Available pattern detection types
{capabilities.patternTypes.map((type) => (
{type}
))}
)}
); }