import { useEffect } from 'react'
import {
Box,
Typography,
Paper,
Card,
CardContent,
Chip,
List,
ListItem,
ListItemText,
Alert,
CircularProgress,
} from '@mui/material'
import {
Person,
LocationOn,
Home,
Description,
Language,
Verified,
} from '@mui/icons-material'
import { useAppDispatch, useAppSelector } from '../store'
import { extractDocument } from '../store/documentSlice'
import { Layout } from '../components/Layout'
export default function ExtractionView() {
const dispatch = useAppDispatch()
const { currentDocument, extractionResult, loading } = useAppSelector(
(state) => state.document
)
useEffect(() => {
if (currentDocument && !extractionResult) {
dispatch(extractDocument(currentDocument.id))
}
}, [currentDocument, extractionResult, dispatch])
if (!currentDocument) {
return (
Veuillez d'abord téléverser et sélectionner un document.
)
}
if (loading) {
return (
Extraction en cours...
)
}
if (!extractionResult) {
return (
Aucun résultat d'extraction disponible.
)
}
return (
Extraction des données
{/* Informations générales */}
Informations générales
}
label={`Langue: ${extractionResult.language}`}
color="primary"
variant="outlined"
/>
}
label={`Type: ${extractionResult.documentType}`}
color="secondary"
variant="outlined"
/>
}
label={`Confiance: ${(extractionResult.confidence * 100).toFixed(1)}%`}
color={extractionResult.confidence > 0.8 ? 'success' : 'warning'}
variant="outlined"
/>
{/* Identités */}
Identités ({extractionResult.identities.length})
{extractionResult.identities.map((identity, index) => (
Type: {identity.type}
{identity.birthDate && (
Naissance: {identity.birthDate}
)}
{identity.nationality && (
Nationalité: {identity.nationality}
)}
Confiance: {(identity.confidence * 100).toFixed(1)}%
}
/>
))}
{/* Adresses */}
Adresses ({extractionResult.addresses.length})
{extractionResult.addresses.map((address, index) => (
))}
{/* Biens */}
Biens ({extractionResult.properties.length})
{extractionResult.properties.map((property, index) => (
{property.address.street}
{property.surface && (
Surface: {property.surface} m²
)}
{property.cadastralReference && (
Cadastre: {property.cadastralReference}
)}
}
/>
))}
{/* Contrats */}
Contrats ({extractionResult.contracts.length})
{extractionResult.contracts.map((contract, index) => (
Parties: {contract.parties.length}
{contract.date && (
Date: {contract.date}
)}
Clauses: {contract.clauses.length}
}
/>
))}
{/* Signatures */}
Signatures détectées ({extractionResult.signatures.length})
{extractionResult.signatures.map((signature, index) => (
))}
{/* Texte extrait */}
Texte extrait
{extractionResult.text}
)
}