import { useEffect } from 'react' import { Box, Typography, Paper, Card, CardContent, Chip, List, ListItem, ListItemText, ListItemIcon, Alert, LinearProgress, } from '@mui/material' import { CheckCircle, Error, Warning, Flag, Security, Assessment, Info, } from '@mui/icons-material' import type { ChipProps, LinearProgressProps } from '@mui/material' import { useAppDispatch, useAppSelector } from '../store' import { analyzeDocument } from '../store/documentSlice' import { Layout } from '../components/Layout' export default function AnalyseView() { const dispatch = useAppDispatch() const { currentDocument, analysisResult, loading } = useAppSelector( (state) => state.document ) useEffect(() => { if (currentDocument && !analysisResult) { dispatch(analyzeDocument(currentDocument.id)) } }, [currentDocument, analysisResult, dispatch]) if (!currentDocument) { return ( Veuillez d'abord téléverser et sélectionner un document. ) } if (loading) { return ( Analyse en cours... ) } if (!analysisResult) { return ( Aucun résultat d'analyse disponible. ) } const getScoreColor = (score: number): ChipProps['color'] => { if (score >= 0.8) return 'success' if (score >= 0.6) return 'warning' return 'error' } const getScoreIcon = (score: number) => { if (score >= 0.8) return if (score >= 0.6) return return } return ( Analyse du document {/* Résumé général */} Résumé de l'analyse } label={`Score de vraisemblance: ${(analysisResult.credibilityScore * 100).toFixed(1)}%`} color={getScoreColor(analysisResult.credibilityScore)} variant="filled" /> } label={`Type: ${analysisResult.documentType}`} color="primary" variant="outlined" /> {analysisResult.isCNI && ( } label={`Pays: ${analysisResult.country}`} color="secondary" variant="outlined" /> )} {/* Cas CNI */} {analysisResult.isCNI && ( Vérification CNI {analysisResult.verificationResult && ( {analysisResult.verificationResult.numberValid ? ( ) : ( )} {analysisResult.verificationResult.formatValid ? ( ) : ( )} {analysisResult.verificationResult.checksumValid ? ( ) : ( )} )} )} {/* Score de vraisemblance */} Score de vraisemblance {getScoreIcon(analysisResult.credibilityScore)} {(analysisResult.credibilityScore * 100).toFixed(1)}% {analysisResult.credibilityScore >= 0.8 ? 'Document très fiable' : analysisResult.credibilityScore >= 0.6 ? 'Document moyennement fiable' : 'Document peu fiable - vérification recommandée'} {/* Synthèse */} Synthèse {analysisResult.summary} {/* Recommandations */} Recommandations {analysisResult.recommendations.map((recommendation, index) => ( ))} ) }