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) => (
))}
)
}