import { useEffect } from 'react'
import {
Box,
Typography,
Paper,
Card,
CardContent,
List,
ListItem,
ListItemText,
ListItemIcon,
Alert,
Chip,
Button,
CircularProgress,
} from '@mui/material'
import {
Lightbulb,
Warning,
CheckCircle,
TrendingUp,
Schedule,
Psychology,
} from '@mui/icons-material'
import { useAppDispatch, useAppSelector } from '../store'
import { getConseil } from '../store/documentSlice'
import { Layout } from '../components/Layout'
export default function ConseilView() {
const dispatch = useAppDispatch()
const { currentDocument, conseilResult, loading } = useAppSelector(
(state) => state.document
)
useEffect(() => {
if (currentDocument && !conseilResult) {
dispatch(getConseil(currentDocument.id))
}
}, [currentDocument, conseilResult, dispatch])
if (!currentDocument) {
return (
Veuillez d'abord téléverser et sélectionner un document.
)
}
if (loading) {
return (
Génération des conseils LLM...
)
}
if (!conseilResult) {
return (
Aucun conseil disponible.
)
}
const getRiskColor = (risk: string) => {
if (risk.toLowerCase().includes('élevé') || risk.toLowerCase().includes('critique')) {
return 'error'
}
if (risk.toLowerCase().includes('moyen') || risk.toLowerCase().includes('modéré')) {
return 'warning'
}
return 'info'
}
return (
Conseil LLM
{/* Analyse LLM */}
Analyse LLM
{conseilResult.analysis}
Généré le {new Date(conseilResult.generatedAt).toLocaleString()}
{/* Recommandations */}
Recommandations ({conseilResult.recommendations.length})
{conseilResult.recommendations.map((recommendation, index) => (
))}
{/* Risques identifiés */}
Risques identifiés ({conseilResult.risks.length})
{conseilResult.risks.map((risk, index) => (
))}
{/* Prochaines étapes */}
Prochaines étapes recommandées
{conseilResult.nextSteps.map((step, index) => (
))}
{/* Actions */}
Actions
{/* Résumé exécutif */}
Résumé exécutif
Cette analyse LLM a été générée automatiquement et doit être validée par un expert notarial.
)
}