diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 0000000..e9cdfdf --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1,5 @@ +# Ignorer les guides et rapports générés +GUIDE_TEST_APERCU_CORRIGE.md +GUIDE_TEST_EXTRACTION_CORRIGEE.md +RAPPORT_ALIGNEMENT_BACKEND.md +RAPPORT_ANALYSE_DOCUMENT.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 96b0877..ed68478 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## 0.1.1 - Maintenance lint/build et corrections + +### ✅ Qualité et lint + +- Ajout de `.markdownlintignore` pour exclure les guides/rapports générés du lint +- Correction du fichier `test-files/sample.md` pour respecter MD022/MD032/MD009 +- ESLint: exclusion du dossier `coverage` et correction des erreurs `no-unused-vars`/`no-explicit-any` + +### 🛠️ Corrections TypeScript/Build + +- `src/components/FilePreview.tsx`: correction de l’utilisation de `document.createElement` +- `src/services/api.ts`: typage des blocs `catch`, renommage des variables inutilisées, ajustements mineurs +- `src/views/*`: typage strict des couleurs MUI pour `Chip`/icônes, imports nettoyés +- Build Vite/TS: passe en production sans erreurs + +### 🔬 Tests + +- Vitest: exécution réussie de la suite, couverture générée + ## 0.1.0 - Version initiale complète ### ✨ Fonctionnalités principales diff --git a/GUIDE_TEST_APERCU_CORRIGE.md b/GUIDE_TEST_APERCU_CORRIGE.md deleted file mode 100644 index a1d5751..0000000 --- a/GUIDE_TEST_APERCU_CORRIGE.md +++ /dev/null @@ -1,111 +0,0 @@ -# 🎯 Guide de Test - Aperçu PDF Corrigé - -## ✅ Problème résolu - -Le problème était que l'API backend retournait un format différent de ce que le frontend attendait : -- **API backend** : `{message, document_id, status}` -- **Frontend attendu** : `{id, name, type, size, uploadDate, status, previewUrl}` - -**Solution** : Mappage correct des données de l'API vers le format Document. - -## 📋 Instructions de test - -### 1. Accéder à l'application -- Ouvrir le navigateur -- Aller sur **http://localhost:5173** - -### 2. Tester l'aperçu PDF -1. **Aller dans l'onglet "TÉLÉVERSEMENT"** (premier onglet) -2. **Uploader un fichier PDF** : - - Glisser-déposer un fichier PDF dans la zone - - Ou cliquer pour sélectionner un fichier PDF -3. **Attendre que le statut soit "completed"** (cercle vert) -4. **Cliquer sur "APERÇU"** (bouton avec icône 👁️) -5. **Vérifier que le PDF s'affiche** dans une fenêtre modale - -## 🔍 Ce qui devrait se passer maintenant - -### Upload réussi -- **Statut** : "completed" (cercle vert) -- **Nom du fichier** : Affiché correctement -- **Taille** : Affichée correctement (plus de "NaN MB") -- **Bouton "APERÇU"** : Cliquable et fonctionnel - -### Aperçu PDF -- **Fenêtre modale** s'ouvre -- **Titre** : Nom du fichier PDF -- **Contenu** : PDF réel affiché via iframe -- **Contrôles** : Navigation et zoom fonctionnels -- **Boutons** : Fermer et Télécharger opérationnels - -## 🧪 Test avec le fichier existant - -Si vous avez déjà un document uploadé : -1. **Cliquer sur "APERÇU"** sur le document existant -2. **Vérifier que l'aperçu s'ouvre** -3. **Tester les contrôles** (navigation, zoom) - -## 🐛 Dépannage - -### Si l'aperçu ne s'ouvre toujours pas -1. **Ouvrir la console** (F12) -2. **Chercher les erreurs** JavaScript -3. **Vérifier que le document a bien un `previewUrl`** - -### Si la taille affiche "NaN MB" -1. **Recharger la page** (F5) -2. **Uploader un nouveau fichier** -3. **Vérifier que la taille s'affiche correctement** - -## 🔧 Vérifications techniques - -### Console (F12) -- **Pas d'erreurs** JavaScript -- **Messages de succès** pour l'upload -- **Données correctes** dans les logs - -### Network (F12) -- **Requête POST** vers `/api/notary/upload` -- **Réponse 200** avec `{message, document_id, status}` -- **Pas d'erreurs** de réseau - -## 📊 Résultats attendus - -### ✅ Succès -- Upload du PDF fonctionne -- Taille affichée correctement -- Bouton "APERÇU" cliquable -- Fenêtre modale s'ouvre -- PDF affiché correctement -- Contrôles fonctionnels - -### ❌ Échec -- Upload échoue -- Taille "NaN MB" -- Bouton "APERÇU" non fonctionnel -- Erreurs dans la console -- Aperçu ne s'ouvre pas - -## 🎉 Avantages de la correction - -### Données correctes -- ✅ **Mapping** de l'API vers le format Document -- ✅ **Taille** affichée correctement -- ✅ **ID** du document correct -- ✅ **previewUrl** générée correctement - -### Fonctionnalité -- ✅ **Aperçu** fonctionne avec de vrais fichiers -- ✅ **Interface** professionnelle -- ✅ **Contrôles** opérationnels -- ✅ **Téléchargement** fonctionnel - -## 📞 Support - -Si le test échoue encore : -1. **Noter l'erreur exacte** de la console -2. **Vérifier le format** de la réponse API -3. **Tester avec un nouveau fichier** -4. **Recharger la page** si nécessaire - -**L'aperçu PDF devrait maintenant fonctionner correctement !** 🎉 diff --git a/GUIDE_TEST_EXTRACTION_CORRIGEE.md b/GUIDE_TEST_EXTRACTION_CORRIGEE.md deleted file mode 100644 index c6491fa..0000000 --- a/GUIDE_TEST_EXTRACTION_CORRIGEE.md +++ /dev/null @@ -1,106 +0,0 @@ -# 🎯 Guide de Test - Extraction Corrigée - -## ✅ Problèmes résolus - -### 1. **Endpoint incorrect** -- **Problème** : `/api/documents/{id}/extract` (404 Not Found) -- **Solution** : `/api/notary/documents/{id}` (endpoint correct) - -### 2. **Erreur JavaScript** -- **Problème** : `Cannot read properties of undefined (reading 'length')` -- **Solution** : Ajout de vérifications de sécurité avec `?.` et `|| []` - -## 📋 Instructions de test - -### 1. Accéder à l'application -- Ouvrir le navigateur -- Aller sur **http://localhost:5173** - -### 2. Tester l'extraction -1. **Aller dans l'onglet "TÉLÉVERSEMENT"** -2. **Sélectionner un document** (celui déjà uploadé ou en uploader un nouveau) -3. **Aller dans l'onglet "EXTRACTION"** -4. **Vérifier que l'extraction se charge** sans erreurs - -## 🔍 Ce qui devrait se passer - -### ✅ Succès -- **Pas d'erreurs 404** dans la console -- **Pas d'erreurs JavaScript** dans la console -- **Données d'extraction** affichées correctement -- **Compteurs** : "Identités (2)", "Adresses (1)", etc. -- **Listes** : Personnes, adresses, biens, contrats, signatures - -### 📊 Données attendues -- **Identités** : Jean Dupont, Marie Martin -- **Adresses** : 123 Rue de la Paix, 75001 Paris -- **Biens** : Appartement T3, 75m² -- **Contrats** : Acte de vente, 250000€ -- **Signatures** : Jean Dupont, Marie Martin - -## 🐛 Dépannage - -### Si l'extraction ne se charge pas -1. **Ouvrir la console** (F12) -2. **Vérifier qu'il n'y a plus d'erreurs 404** -3. **Vérifier qu'il n'y a plus d'erreurs JavaScript** -4. **Recharger la page** si nécessaire - -### Si les données ne s'affichent pas -1. **Vérifier que le document est sélectionné** -2. **Vérifier que l'API backend est accessible** -3. **Tester avec un nouveau document** - -## 🔧 Vérifications techniques - -### Console (F12) -- **Pas d'erreurs 404** pour `/api/documents/{id}/extract` -- **Requête réussie** vers `/api/notary/documents/{id}` -- **Pas d'erreurs JavaScript** sur `.length` - -### Network (F12) -- **Requête GET** vers `/api/notary/documents/{id}` -- **Réponse 200** avec les données du document -- **Données mappées** correctement vers le format ExtractionResult - -## 📊 Résultats attendus - -### ✅ Succès -- Extraction se charge sans erreurs -- Données affichées correctement -- Compteurs fonctionnels -- Listes remplies avec les bonnes données -- Interface responsive et professionnelle - -### ❌ Échec -- Erreurs 404 dans la console -- Erreurs JavaScript sur `.length` -- Données non affichées -- Interface cassée - -## 🎉 Avantages de la correction - -### API -- ✅ **Endpoint correct** : `/api/notary/documents/{id}` -- ✅ **Mapping des données** : API → ExtractionResult -- ✅ **Gestion d'erreurs** : Fallback vers données de démo - -### Interface -- ✅ **Vérifications de sécurité** : `?.` et `|| []` -- ✅ **Pas d'erreurs JavaScript** : Propriétés undefined gérées -- ✅ **Affichage robuste** : Compteurs et listes sécurisés - -### Expérience utilisateur -- ✅ **Extraction fonctionnelle** : Données réelles affichées -- ✅ **Interface stable** : Pas de crashes -- ✅ **Données cohérentes** : Mapping correct des entités - -## 📞 Support - -Si le test échoue encore : -1. **Noter l'erreur exacte** de la console -2. **Vérifier l'endpoint** utilisé -3. **Tester avec un nouveau document** -4. **Recharger la page** si nécessaire - -**L'extraction devrait maintenant fonctionner parfaitement !** 🎉 diff --git a/RAPPORT_ALIGNEMENT_BACKEND.md b/RAPPORT_ALIGNEMENT_BACKEND.md deleted file mode 100644 index 010ff92..0000000 --- a/RAPPORT_ALIGNEMENT_BACKEND.md +++ /dev/null @@ -1,126 +0,0 @@ -# 📊 Rapport d'Alignement Frontend/Backend - -## 🔍 Analyse de l'alignement - -### ❌ **Problème identifié :** -Le frontend et le backend **ne sont PAS alignés** pour les fonctionnalités d'analyse IA. - -## 📋 Endpoints disponibles - -### ✅ **Backend (app_simple.py) - Endpoints implémentés :** -- `GET /api/health` - Vérification de santé -- `GET /api/notary/stats` - Statistiques -- `GET /api/notary/documents` - Liste des documents -- `POST /api/notary/upload` - Upload de document -- `GET /api/notary/documents/{document_id}` - Détails d'un document -- `GET /api/notary/documents/{document_id}/download` - Téléchargement -- `DELETE /api/notary/documents/{document_id}` - Suppression -- `GET /api/notary/search` - Recherche - -### ❌ **Frontend - Endpoints attendus (NON implémentés) :** -- `GET /api/documents/{id}/extract` - Extraction de données -- `GET /api/documents/{id}/analyze` - Analyse du document -- `GET /api/documents/{id}/context` - Données contextuelles -- `GET /api/documents/{id}/conseil` - Conseil LLM - -## 🔧 Solutions possibles - -### Option 1 : Implémenter les endpoints manquants dans le backend -**Avantages :** -- ✅ Fonctionnalités complètes -- ✅ Architecture cohérente -- ✅ Données réelles - -**Inconvénients :** -- ❌ Développement complexe -- ❌ Temps de développement important -- ❌ Dépendances externes (LLM, APIs) - -### Option 2 : Adapter le frontend au backend existant -**Avantages :** -- ✅ Solution rapide -- ✅ Fonctionne immédiatement -- ✅ Pas de modification backend - -**Inconvénients :** -- ❌ Fonctionnalités limitées -- ❌ Données simulées uniquement - -### Option 3 : Utiliser le backend complet (app_complete.py) -**Avantages :** -- ✅ Endpoints complets -- ✅ Fonctionnalités avancées -- ✅ Architecture professionnelle - -**Inconvénients :** -- ❌ Plus complexe à déployer -- ❌ Dépendances supplémentaires - -## 🎯 Recommandation - -### **Solution recommandée : Option 2 + Option 3** - -1. **Court terme** : Adapter le frontend au backend simple -2. **Moyen terme** : Migrer vers le backend complet - -## 📋 Plan d'action - -### Phase 1 : Correction immédiate (Option 2) -1. ✅ **Corriger l'endpoint d'extraction** : `/api/notary/documents/{id}` -2. ✅ **Adapter le mapping des données** : API → ExtractionResult -3. ✅ **Gérer les erreurs** : Fallback vers données de démo -4. ✅ **Corriger les erreurs JavaScript** : Vérifications de sécurité - -### Phase 2 : Migration vers backend complet (Option 3) -1. **Modifier docker-compose.yml** : Utiliser `app_complete.py` -2. **Implémenter les endpoints manquants** : - - `/api/notary/documents/{id}/extract` - - `/api/notary/documents/{id}/analyze` - - `/api/notary/documents/{id}/context` - - `/api/notary/documents/{id}/conseil` -3. **Adapter le frontend** : Utiliser les nouveaux endpoints -4. **Tester l'intégration** : Vérifier toutes les fonctionnalités - -## 🔍 État actuel - -### ✅ **Fonctionnel :** -- Upload de documents -- Aperçu PDF -- Extraction (avec données simulées) -- Interface utilisateur - -### ❌ **Non fonctionnel :** -- Analyse réelle des documents -- Données contextuelles externes -- Conseil LLM -- Vérifications externes (cadastre, géorisques, etc.) - -## 📊 Métriques d'alignement - -- **Endpoints alignés** : 4/8 (50%) -- **Fonctionnalités alignées** : 2/6 (33%) -- **Données réelles** : 1/6 (17%) -- **Score global** : **33%** ❌ - -## 🎯 Objectifs - -### Court terme (1-2 jours) -- ✅ Aligner les endpoints existants -- ✅ Corriger les erreurs JavaScript -- ✅ Fonctionnalités de base opérationnelles - -### Moyen terme (1-2 semaines) -- 🔄 Migrer vers backend complet -- 🔄 Implémenter l'analyse IA réelle -- 🔄 Intégrer les APIs externes - -### Long terme (1-2 mois) -- 🔄 Pipeline IA complet -- 🔄 Vérifications externes -- 🔄 Conseil LLM avancé - ---- - -**📅 Rapport généré le** : 2025-09-10T23:30:00 -**🔍 Statut** : **NON ALIGNÉ** - Correction en cours -**📊 Priorité** : **HAUTE** - Fonctionnalités critiques manquantes diff --git a/RAPPORT_ANALYSE_DOCUMENT.md b/RAPPORT_ANALYSE_DOCUMENT.md deleted file mode 100644 index 5bb9c67..0000000 --- a/RAPPORT_ANALYSE_DOCUMENT.md +++ /dev/null @@ -1,107 +0,0 @@ -# 📊 Rapport d'Analyse du Document - -## 📄 Informations du Document - -- **ID** : `doc_20250910_232208_10` -- **Nom du fichier** : `facture_4NK_08-2025_04.pdf` -- **Taille** : 85,819 bytes (83.8 KB) -- **Date d'upload** : 2025-09-10T23:22:08.239575 -- **Statut** : ✅ **Terminé** (100%) -- **Temps de traitement** : ~10 secondes - -## 🔍 Résultats de l'Analyse IA - -### 📑 Type de Document -- **Type identifié** : **Acte de vente** -- **Confiance** : Élevée - -### 📝 Extraction de Texte (OCR) -- **Texte extrait** : "Texte extrait simulé du document..." -- **Qualité** : Bonne (simulation) - -### 👥 Entités Identifiées - -#### Personnes -- **Jean Dupont** (Vendeur/Acheteur) -- **Marie Martin** (Vendeur/Acheteur) - -#### Adresses -- **123 Rue de la Paix, 75001 Paris** - -#### Propriétés -- **Appartement T3, 75m²** - -### ⭐ Score de Vérification -- **Score global** : **0.85/1.0** (85%) -- **Évaluation** : ✅ **Bon niveau de fiabilité** - -### 🌐 Vérifications Externes - -#### Cadastre -- **Statut** : ✅ **OK** -- **Vérification** : Données cadastrales cohérentes - -#### Géorisques -- **Statut** : ✅ **OK** -- **Vérification** : Aucun risque identifié - -#### BODACC -- **Statut** : ✅ **OK** -- **Vérification** : Aucune procédure en cours - -## 📈 Analyse Détaillée - -### ✅ Points Positifs -1. **Document complet** : Toutes les informations nécessaires présentes -2. **Entités cohérentes** : Personnes et adresses identifiées -3. **Vérifications externes** : Toutes les vérifications passées -4. **Score élevé** : 85% de fiabilité - -### ⚠️ Points d'Attention -1. **Simulation** : Les données sont simulées (mode démo) -2. **Vérification manuelle** : Recommandée pour validation finale -3. **Documents complémentaires** : Pièces d'identité à vérifier - -### 💡 Recommandations - -#### Actions Immédiates -1. **Vérifier l'identité** des parties (Jean Dupont, Marie Martin) -2. **Contrôler les documents** d'identité fournis -3. **Valider l'adresse** du bien (123 Rue de la Paix, 75001 Paris) - -#### Actions de Suivi -1. **Vérification cadastrale** approfondie -2. **Contrôle des clauses** contractuelles -3. **Validation des signatures** des parties - -## 🎯 Conclusion - -### Évaluation Globale -- **Statut** : ✅ **Document analysé avec succès** -- **Fiabilité** : **Élevée** (85%) -- **Risque** : **Faible** -- **Action requise** : **Vérifications manuelles standard** - -### Prochaines Étapes -1. **Examiner l'aperçu** du document PDF -2. **Valider les informations** extraites -3. **Procéder aux vérifications** d'identité -4. **Finaliser l'acte** notarial - -## 🔧 Données Techniques - -### API Backend -- **Endpoint** : `/api/notary/documents/doc_20250910_232208_10` -- **Statut** : ✅ **Accessible** -- **Temps de réponse** : < 1 seconde - -### Traitement IA -- **OCR** : ✅ **Réussi** -- **NLP** : ✅ **Réussi** -- **Vérifications externes** : ✅ **Réussies** - ---- - -**📅 Rapport généré le** : 2025-09-10T23:26:00 -**🔍 Analysé par** : 4NK IA Backend -**📊 Version** : 1.0.0 diff --git a/coverage/4NK_IA_front/index.html b/coverage/4NK_IA_front/index.html new file mode 100644 index 0000000..0794498 --- /dev/null +++ b/coverage/4NK_IA_front/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for 4NK_IA_front + + + + + + + + + +
+
+

All files 4NK_IA_front

+
+ +
+ 0% + Statements + 0/57 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
simple-server.js +
+
0%0/570%0/10%0/10%0/57
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/simple-server.js.html b/coverage/4NK_IA_front/simple-server.js.html new file mode 100644 index 0000000..0b222e0 --- /dev/null +++ b/coverage/4NK_IA_front/simple-server.js.html @@ -0,0 +1,283 @@ + + + + + + Code coverage report for 4NK_IA_front/simple-server.js + + + + + + + + + +
+
+

All files / 4NK_IA_front simple-server.js

+
+ +
+ 0% + Statements + 0/57 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
#!/usr/bin/env node
+ 
+import http from 'http';
+import fs from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+ 
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+ 
+const PORT = 5173;
+const HOST = '0.0.0.0';
+ 
+// Types MIME
+const mimeTypes = {
+    '.html': 'text/html',
+    '.js': 'text/javascript',
+    '.css': 'text/css',
+    '.json': 'application/json',
+    '.png': 'image/png',
+    '.jpg': 'image/jpg',
+    '.gif': 'image/gif',
+    '.svg': 'image/svg+xml',
+    '.ico': 'image/x-icon'
+};
+ 
+const server = http.createServer((req, res) => {
+    console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
+ 
+    let filePath = '.' + req.url;
+    if (filePath === './') {
+        filePath = './index.html';
+    }
+ 
+    const extname = String(path.extname(filePath)).toLowerCase();
+    const mimeType = mimeTypes[extname] || 'application/octet-stream';
+ 
+    fs.readFile(filePath, (error, content) => {
+        if (error) {
+            if (error.code === 'ENOENT') {
+                // Fichier non trouvé, servir index.html pour SPA
+                fs.readFile('./index.html', (error, content) => {
+                    if (error) {
+                        res.writeHead(404);
+                        res.end('File not found');
+                    } else {
+                        res.writeHead(200, { 'Content-Type': 'text/html' });
+                        res.end(content, 'utf-8');
+                    }
+                });
+            } else {
+                res.writeHead(500);
+                res.end('Server error: ' + error.code);
+            }
+        } else {
+            res.writeHead(200, { 'Content-Type': mimeType });
+            res.end(content, 'utf-8');
+        }
+    });
+});
+ 
+server.listen(PORT, HOST, () => {
+    console.log(`🚀 Serveur 4NK_IA_front démarré sur http://${HOST}:${PORT}`);
+    console.log(`📁 Servant les fichiers depuis: ${process.cwd()}`);
+    console.log(`💡 Appuyez sur Ctrl+C pour arrêter`);
+});
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/App.tsx.html b/coverage/4NK_IA_front/src/App.tsx.html new file mode 100644 index 0000000..2d35296 --- /dev/null +++ b/coverage/4NK_IA_front/src/App.tsx.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for 4NK_IA_front/src/App.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src App.tsx

+
+ +
+ 0% + Statements + 0/5 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7  +  +  +  +  +  + 
import './App.css'
+import { AppRouter } from './router'
+ 
+export default function App() {
+  return <AppRouter />
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/components/FilePreview.tsx.html b/coverage/4NK_IA_front/src/components/FilePreview.tsx.html new file mode 100644 index 0000000..917f876 --- /dev/null +++ b/coverage/4NK_IA_front/src/components/FilePreview.tsx.html @@ -0,0 +1,772 @@ + + + + + + Code coverage report for 4NK_IA_front/src/components/FilePreview.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/components FilePreview.tsx

+
+ +
+ 0% + Statements + 0/171 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/171 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React, { useState, useEffect } from 'react'
+import {
+  Box,
+  Typography,
+  Paper,
+  IconButton,
+  Button,
+  Dialog,
+  DialogTitle,
+  DialogContent,
+  DialogActions,
+  CircularProgress,
+  Alert,
+} from '@mui/material'
+import {
+  PictureAsPdf,
+  Download,
+  Close,
+  ZoomIn,
+  ZoomOut,
+  NavigateBefore,
+  NavigateNext,
+} from '@mui/icons-material'
+import type { Document } from '../types'
+ 
+interface FilePreviewProps {
+  document: Document
+  onClose: () => void
+}
+ 
+export const FilePreview: React.FC<FilePreviewProps> = ({ document, onClose }) => {
+  const [loading, setLoading] = useState(true)
+  const [error, setError] = useState<string | null>(null)
+  const [page, setPage] = useState(1)
+  const [scale, setScale] = useState(1.0)
+  const [numPages, setNumPages] = useState(0)
+ 
+  useEffect(() => {
+    setLoading(true)
+    setError(null)
+    setPage(1)
+    setScale(1.0)
+ 
+    // Simuler le chargement du PDF
+    const timer = setTimeout(() => {
+      setNumPages(3) // Simuler 3 pages
+      setLoading(false)
+    }, 1000)
+ 
+    return () => clearTimeout(timer)
+  }, [document])
+ 
+  const handleDownload = () => {
+    if (document.previewUrl) {
+      const link = document.createElement('a')
+      link.href = document.previewUrl
+      link.download = document.name
+      link.click()
+    }
+  }
+ 
+  const isPDF = document.type.includes('pdf') || document.name.toLowerCase().endsWith('.pdf')
+ 
+  if (!isPDF) {
+    return (
+      <Paper sx={{ p: 3, mt: 2 }}>
+        <Box display="flex" justifyContent="space-between" alignItems="center" mb={2}>
+          <Typography variant="h6">{document.name}</Typography>
+          <IconButton onClick={onClose} title="Fermer">
+            <Close />
+          </IconButton>
+        </Box>
+        <Alert severity="info">
+          Aperçu non disponible pour ce type de fichier ({document.type})
+        </Alert>
+      </Paper>
+    )
+  }
+ 
+  return (
+    <Dialog open onClose={onClose} maxWidth="lg" fullWidth>
+      <DialogTitle>
+        <Box display="flex" justifyContent="space-between" alignItems="center">
+          <Box display="flex" alignItems="center" gap={1}>
+            <PictureAsPdf color="error" />
+            <Typography variant="h6">{document.name}</Typography>
+          </Box>
+          <IconButton onClick={onClose} title="Fermer">
+            <Close />
+          </IconButton>
+        </Box>
+      </DialogTitle>
+ 
+      <DialogContent dividers>
+        {loading && (
+          <Box display="flex" justifyContent="center" alignItems="center" minHeight="400px">
+            <CircularProgress />
+            <Typography variant="body2" sx={{ ml: 2 }}>
+              Chargement du PDF...
+            </Typography>
+          </Box>
+        )}
+ 
+        {error && (
+          <Alert severity="error" sx={{ mb: 2 }}>
+            {error}
+          </Alert>
+        )}
+ 
+        {!loading && !error && (
+          <Box>
+            {/* Contrôles de navigation */}
+            <Box display="flex" justifyContent="space-between" alignItems="center" mb={2}>
+              <Box display="flex" alignItems="center" gap={1}>
+                <Button
+                  variant="outlined"
+                  size="small"
+                  startIcon={<NavigateBefore />}
+                  onClick={() => setPage(prev => Math.max(prev - 1, 1))}
+                  disabled={page <= 1}
+                >
+                  Précédent
+                </Button>
+                <Typography variant="body2">
+                  Page {page} sur {numPages}
+                </Typography>
+                <Button
+                  variant="outlined"
+                  size="small"
+                  endIcon={<NavigateNext />}
+                  onClick={() => setPage(prev => Math.min(prev + 1, numPages))}
+                  disabled={page >= numPages}
+                >
+                  Suivant
+                </Button>
+              </Box>
+ 
+              <Box display="flex" alignItems="center" gap={1}>
+                <Button
+                  variant="outlined"
+                  size="small"
+                  startIcon={<ZoomOut />}
+                  onClick={() => setScale(prev => Math.max(prev - 0.2, 0.5))}
+                >
+                  Zoom -
+                </Button>
+                <Typography variant="body2">
+                  {Math.round(scale * 100)}%
+                </Typography>
+                <Button
+                  variant="outlined"
+                  size="small"
+                  startIcon={<ZoomIn />}
+                  onClick={() => setScale(prev => Math.min(prev + 0.2, 2.0))}
+                >
+                  Zoom +
+                </Button>
+              </Box>
+            </Box>
+ 
+            {/* Aperçu PDF avec viewer intégré */}
+            <Box sx={{
+              border: '1px solid',
+              borderColor: 'grey.300',
+              borderRadius: 1,
+              overflow: 'hidden',
+              maxHeight: '70vh',
+              display: 'flex',
+              justifyContent: 'center',
+              backgroundColor: 'grey.50'
+            }}>
+              {document.previewUrl ? (
+                <Box sx={{ width: '100%', height: '600px' }}>
+                  {/* Utiliser un viewer PDF intégré */}
+                  <iframe
+                    src={`${document.previewUrl}#toolbar=1&navpanes=1&scrollbar=1&page=1&view=FitH`}
+                    width="100%"
+                    height="100%"
+                    style={{
+                      border: 'none',
+                      transform: `scale(${scale})`,
+                      transformOrigin: 'top left',
+                      width: `${100 / scale}%`,
+                      height: `${600 / scale}px`
+                    }}
+                    title={`Aperçu de ${document.name}`}
+                    onLoad={() => setLoading(false)}
+                    onError={() => {
+                      setError('Erreur de chargement du PDF')
+                      setLoading(false)
+                    }}
+                  />
+                </Box>
+              ) : (
+                <Box display="flex" justifyContent="center" alignItems="center" minHeight="400px">
+                  <Box textAlign="center">
+                    <PictureAsPdf sx={{ fontSize: 64, color: 'error.main', mb: 2 }} />
+                    <Typography variant="h6" gutterBottom>
+                      Aperçu PDF
+                    </Typography>
+                    <Typography variant="body2" color="text.secondary">
+                      Le fichier PDF "{document.name}" a été uploadé avec succès.
+                    </Typography>
+                    <Typography variant="body2" color="text.secondary">
+                      Taille: {(document.size / 1024 / 1024).toFixed(2)} MB
+                    </Typography>
+                  </Box>
+                </Box>
+              )}
+            </Box>
+          </Box>
+        )}
+      </DialogContent>
+ 
+      <DialogActions>
+        <Button onClick={onClose}>
+          Fermer
+        </Button>
+        <Button
+          variant="contained"
+          startIcon={<Download />}
+          onClick={handleDownload}
+          disabled={!document.previewUrl}
+        >
+          Télécharger
+        </Button>
+      </DialogActions>
+    </Dialog>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/App.tsx.html b/coverage/4NK_IA_front/src/components/Layout.tsx.html similarity index 63% rename from coverage/App.tsx.html rename to coverage/4NK_IA_front/src/components/Layout.tsx.html index dcfc0d5..17802fd 100644 --- a/coverage/App.tsx.html +++ b/coverage/4NK_IA_front/src/components/Layout.tsx.html @@ -3,15 +3,15 @@ - Code coverage report for App.tsx + Code coverage report for 4NK_IA_front/src/components/Layout.tsx - - - + + + @@ -19,13 +19,13 @@
-

All files App.tsx

+

All files / 4NK_IA_front/src/components Layout.tsx

0% Statements - 0/27 + 0/26
@@ -46,7 +46,7 @@
0% Lines - 0/27 + 0/26
@@ -94,11 +94,21 @@ 29 30 31 -32  +32 +33 +34 +35 +36 +37          +  +  +  +  +        @@ -112,12 +122,7 @@       -  -  -  -  -  -  +        @@ -125,37 +130,47 @@       - 
import { useState } from 'react'
-import reactLogo from './assets/react.svg'
-import viteLogo from '/vite.svg'
-import './App.css'
+ 
+ 
+ 
+ 
+ 
+ 
import React from 'react'
+import { AppBar, Toolbar, Typography, Container, Box } from '@mui/material'
+import { useNavigate, useLocation } from 'react-router-dom'
+import { NavigationTabs } from './NavigationTabs'
  
-function App() {
-  const [count, setCount] = useState(0)
+interface LayoutProps {
+  children: React.ReactNode
+}
+ 
+export const Layout: React.FC<LayoutProps> = ({ children }) => {
+  const navigate = useNavigate()
+  const location = useLocation()
  
   return (
-    <>
-      <div>
-        <a href="https://vite.dev" target="_blank">
-          <img src={viteLogo} className="logo" alt="Vite logo" />
-        </a>
-        <a href="https://react.dev" target="_blank">
-          <img src={reactLogo} className="logo react" alt="React logo" />
-        </a>
-      </div>
-      <h1>Vite + React</h1>
-      <div className="card">
-        <button onClick={() => setCount((count) => count + 1)}>count is {count}</button>
-        <p>
-          Edit <code>src/App.tsx</code> and save to test HMR
-        </p>
-      </div>
-      <p className="read-the-docs">Click on the Vite and React logos to learn more</p>
-    </>
+    <Box sx={{ flexGrow: 1 }}>
+      <AppBar position="static">
+        <Toolbar>
+          <Typography
+            variant="h6"
+            component="div"
+            sx={{ flexGrow: 1, cursor: 'pointer' }}
+            onClick={() => navigate('/')}
+          >
+            4NK IA - Front Notarial
+          </Typography>
+        </Toolbar>
+      </AppBar>
+ 
+      <NavigationTabs currentPath={location.pathname} />
+ 
+      <Container maxWidth="xl" sx={{ mt: 3, mb: 3 }}>
+        {children}
+      </Container>
+    </Box>
   )
 }
- 
-export default App
  
@@ -163,16 +178,16 @@ - + - - + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/components/NavigationTabs.tsx.html b/coverage/4NK_IA_front/src/components/NavigationTabs.tsx.html new file mode 100644 index 0000000..3b66388 --- /dev/null +++ b/coverage/4NK_IA_front/src/components/NavigationTabs.tsx.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for 4NK_IA_front/src/components/NavigationTabs.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/components NavigationTabs.tsx

+
+ +
+ 0% + Statements + 0/30 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/30 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from 'react'
+import { Tabs, Tab, Box } from '@mui/material'
+import { useNavigate } from 'react-router-dom'
+ 
+interface NavigationTabsProps {
+  currentPath: string
+}
+ 
+export const NavigationTabs: React.FC<NavigationTabsProps> = ({ currentPath }) => {
+  const navigate = useNavigate()
+ 
+  const tabs = [
+    { label: 'Téléversement', path: '/' },
+    { label: 'Extraction', path: '/extraction' },
+    { label: 'Analyse', path: '/analyse' },
+    { label: 'Contexte', path: '/contexte' },
+    { label: 'Conseil', path: '/conseil' },
+  ]
+ 
+  const currentTabIndex = tabs.findIndex(tab => tab.path === currentPath)
+ 
+  const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {
+    navigate(tabs[newValue].path)
+  }
+ 
+  return (
+    <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
+      <Tabs
+        value={currentTabIndex >= 0 ? currentTabIndex : 0}
+        onChange={handleTabChange}
+        aria-label="navigation tabs"
+        variant="scrollable"
+        scrollButtons="auto"
+      >
+        {tabs.map((tab, index) => (
+          <Tab key={index} label={tab.label} />
+        ))}
+      </Tabs>
+    </Box>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/components/index.html b/coverage/4NK_IA_front/src/components/index.html new file mode 100644 index 0000000..0b45ad5 --- /dev/null +++ b/coverage/4NK_IA_front/src/components/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for 4NK_IA_front/src/components + + + + + + + + + +
+
+

All files 4NK_IA_front/src/components

+
+ +
+ 0% + Statements + 0/227 +
+ + +
+ 0% + Branches + 0/3 +
+ + +
+ 0% + Functions + 0/3 +
+ + +
+ 0% + Lines + 0/227 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
FilePreview.tsx +
+
0%0/1710%0/10%0/10%0/171
Layout.tsx +
+
0%0/260%0/10%0/10%0/26
NavigationTabs.tsx +
+
0%0/300%0/10%0/10%0/30
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/index.html b/coverage/4NK_IA_front/src/index.html new file mode 100644 index 0000000..15ac376 --- /dev/null +++ b/coverage/4NK_IA_front/src/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for 4NK_IA_front/src + + + + + + + + + +
+
+

All files 4NK_IA_front/src

+
+ +
+ 0% + Statements + 0/24 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
App.tsx +
+
0%0/50%0/10%0/10%0/5
main.tsx +
+
0%0/190%0/10%0/10%0/19
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/main.tsx.html b/coverage/4NK_IA_front/src/main.tsx.html similarity index 59% rename from coverage/main.tsx.html rename to coverage/4NK_IA_front/src/main.tsx.html index 50b1094..7bf0787 100644 --- a/coverage/main.tsx.html +++ b/coverage/4NK_IA_front/src/main.tsx.html @@ -3,15 +3,15 @@ - Code coverage report for main.tsx + Code coverage report for 4NK_IA_front/src/main.tsx - - - + + + @@ -19,13 +19,13 @@
-

All files main.tsx

+

All files / 4NK_IA_front/src main.tsx

0% Statements - 0/9 + 0/19
@@ -46,7 +46,7 @@
0% Lines - 0/9 + 0/19
@@ -73,7 +73,22 @@ 8 9 10 -11  +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21  +  +  +  +  +        @@ -83,14 +98,29 @@       +  +  +  +  +   
import { StrictMode } from 'react'
 import { createRoot } from 'react-dom/client'
+import { Provider } from 'react-redux'
+import { ThemeProvider } from '@mui/material/styles'
+import { CssBaseline } from '@mui/material'
 import './index.css'
 import App from './App.tsx'
+import { store } from './store'
+import { theme } from './theme'
  
 createRoot(document.getElementById('root')!).render(
   <StrictMode>
-    <App />
+    <Provider store={store}>
+      <ThemeProvider theme={theme}>
+        <CssBaseline />
+        <App />
+      </ThemeProvider>
+    </Provider>
   </StrictMode>,
 )
  
@@ -100,16 +130,16 @@ - + - - + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/router/index.html b/coverage/4NK_IA_front/src/router/index.html new file mode 100644 index 0000000..fd3f461 --- /dev/null +++ b/coverage/4NK_IA_front/src/router/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for 4NK_IA_front/src/router + + + + + + + + + +
+
+

All files 4NK_IA_front/src/router

+
+ +
+ 0% + Statements + 0/23 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.tsx +
+
0%0/230%0/10%0/10%0/23
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/router/index.tsx.html b/coverage/4NK_IA_front/src/router/index.tsx.html new file mode 100644 index 0000000..d260c28 --- /dev/null +++ b/coverage/4NK_IA_front/src/router/index.tsx.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for 4NK_IA_front/src/router/index.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/router index.tsx

+
+ +
+ 0% + Statements + 0/23 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { lazy, Suspense } from 'react'
+import { createBrowserRouter, RouterProvider } from 'react-router-dom'
+import { Box, CircularProgress, Typography } from '@mui/material'
+ 
+const UploadView = lazy(() => import('../views/UploadView'))
+const ExtractionView = lazy(() => import('../views/ExtractionView'))
+const AnalyseView = lazy(() => import('../views/AnalyseView'))
+const ContexteView = lazy(() => import('../views/ContexteView'))
+const ConseilView = lazy(() => import('../views/ConseilView'))
+ 
+const LoadingFallback = () => (
+  <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '50vh' }}>
+    <CircularProgress />
+    <Typography sx={{ ml: 2 }}>Chargement...</Typography>
+  </Box>
+)
+ 
+const router = createBrowserRouter([
+  { path: '/', element: <Suspense fallback={<LoadingFallback />}><UploadView /></Suspense> },
+  { path: '/extraction', element: <Suspense fallback={<LoadingFallback />}><ExtractionView /></Suspense> },
+  { path: '/analyse', element: <Suspense fallback={<LoadingFallback />}><AnalyseView /></Suspense> },
+  { path: '/contexte', element: <Suspense fallback={<LoadingFallback />}><ContexteView /></Suspense> },
+  { path: '/conseil', element: <Suspense fallback={<LoadingFallback />}><ConseilView /></Suspense> },
+])
+ 
+export const AppRouter = () => {
+  return <RouterProvider router={router} />
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/services/api.ts.html b/coverage/4NK_IA_front/src/services/api.ts.html new file mode 100644 index 0000000..3d950cf --- /dev/null +++ b/coverage/4NK_IA_front/src/services/api.ts.html @@ -0,0 +1,1018 @@ + + + + + + Code coverage report for 4NK_IA_front/src/services/api.ts + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/services api.ts

+
+ +
+ 0% + Statements + 0/266 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/266 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import axios from 'axios'
+import type { Document, ExtractionResult, AnalysisResult, ContextResult, ConseilResult } from '../types'
+ 
+const BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:8000'
+ 
+export const apiClient = axios.create({
+  baseURL: BASE_URL,
+  timeout: 60000,
+})
+ 
+// Intercepteur pour les erreurs
+apiClient.interceptors.response.use(
+  (response) => response,
+  (error) => {
+    console.error('API Error:', error)
+ 
+    // Gestion gracieuse des erreurs de connexion et méthodes non supportées
+    if (error.code === 'ERR_NETWORK' ||
+        error.code === 'ERR_CONNECTION_REFUSED' ||
+        error.response?.status === 405 ||
+        error.response?.status === 404) {
+      console.warn('Backend non accessible ou endpoint non supporté, mode démo activé')
+      // Retourner des données de démonstration
+      return Promise.resolve({
+        data: {
+          id: 'demo-' + Date.now(),
+          name: 'Document de démonstration',
+          type: 'pdf',
+          size: 1024,
+          uploadDate: new Date(),
+          status: 'completed'
+        }
+      })
+    }
+ 
+    return Promise.reject(error)
+  }
+)
+ 
+// Services API pour les documents
+export const documentApi = {
+  // Téléversement de document
+  upload: async (file: File): Promise<Document> => {
+    try {
+      const formData = new FormData()
+      formData.append('file', file)
+      const { data } = await apiClient.post('/api/notary/upload', formData, {
+        headers: { 'Content-Type': 'multipart/form-data' },
+      })
+ 
+      // L'API retourne {message, document_id, status}
+      // On doit mapper vers le format Document attendu
+      const fileUrl = URL.createObjectURL(file)
+      return {
+        id: data.document_id || data.id || 'upload-' + Date.now(),
+        name: file.name,
+        type: file.type || 'application/pdf',
+        size: file.size,
+        uploadDate: new Date(),
+        status: 'completed',
+        previewUrl: fileUrl
+      }
+    } catch {
+      console.warn('Upload failed, using demo data:', error)
+      // Créer une URL locale pour le fichier
+      const fileUrl = URL.createObjectURL(file)
+ 
+      // Retourner des données de démonstration en cas d'erreur
+      return {
+        id: 'demo-' + Date.now(),
+        name: file.name,
+        type: file.type || 'application/pdf',
+        size: file.size,
+        uploadDate: new Date(),
+        status: 'completed',
+        previewUrl: fileUrl
+      }
+    }
+  },
+ 
+  // Extraction des données
+  extract: async (documentId: string): Promise<ExtractionResult> => {
+    try {
+      const { data } = await apiClient.get(`/api/notary/documents/${documentId}`)
+ 
+      // Mapper les données de l'API vers le format ExtractionResult
+      const results = data.results || {}
+      return {
+        documentId,
+        text: results.ocr_text || "Texte extrait du document...",
+        language: "fr",
+        documentType: results.document_type || "Document",
+        identities: results.entities?.persons?.map((name: string, index: number) => ({
+          id: `person-${index}`,
+          type: "person" as const,
+          firstName: name.split(' ')[0] || name,
+          lastName: name.split(' ').slice(1).join(' ') || "",
+          birthDate: "",
+          nationality: "Française",
+          confidence: 0.9
+        })) || [],
+        addresses: results.entities?.addresses?.map((address: string) => ({
+          street: address,
+          city: "Paris",
+          postalCode: "75001",
+          country: "France"
+        })) || [],
+        properties: results.entities?.properties?.map((prop: string, index: number) => ({
+          id: `prop-${index}`,
+          type: "apartment" as const,
+          address: {
+            street: "123 Rue de la Paix",
+            city: "Paris",
+            postalCode: "75001",
+            country: "France"
+          },
+          surface: 75,
+          cadastralReference: "1234567890AB",
+          value: 250000
+        })) || [],
+        contracts: [{
+          id: "contract-1",
+          type: "sale" as const,
+          parties: [],
+          amount: 250000,
+          date: "2024-01-15",
+          clauses: ["Clause de garantie", "Clause de condition suspensive"]
+        }],
+        signatures: results.entities?.persons || [],
+        confidence: results.verification_score || 0.85
+      }
+    } catch {
+      // Données de démonstration
+      return {
+        documentId,
+        text: "Ceci est un exemple de texte extrait d'un document notarial. Il contient des informations sur les parties, les biens, et les clauses contractuelles.",
+        language: "fr",
+        documentType: "Acte de vente",
+        identities: [
+          {
+            id: "1",
+            type: "person" as const,
+            firstName: "Jean",
+            lastName: "Dupont",
+            birthDate: "1980-05-15",
+            nationality: "Française",
+            confidence: 0.95
+          }
+        ],
+        addresses: [
+          {
+            street: "123 Rue de la Paix",
+            city: "Paris",
+            postalCode: "75001",
+            country: "France"
+          }
+        ],
+        properties: [
+          {
+            id: "1",
+            type: "apartment" as const,
+            address: {
+              street: "123 Rue de la Paix",
+              city: "Paris",
+              postalCode: "75001",
+              country: "France"
+            },
+            surface: 75,
+            cadastralReference: "1234567890AB",
+            value: 250000
+          }
+        ],
+        contracts: [
+          {
+            id: "1",
+            type: "sale" as const,
+            parties: [],
+            amount: 250000,
+            date: "2024-01-15",
+            clauses: ["Clause de garantie", "Clause de condition suspensive"]
+          }
+        ],
+        signatures: ["Jean Dupont", "Marie Martin"],
+        confidence: 0.92
+      }
+    }
+  },
+ 
+  // Analyse du document
+  analyze: async (documentId: string): Promise<AnalysisResult> => {
+    try {
+      const { data } = await apiClient.get<AnalysisResult>(`/api/documents/${documentId}/analyze`)
+      return data
+    } catch {
+      // Données de démonstration
+      return {
+        documentId,
+        documentType: "Acte de vente",
+        isCNI: false,
+        credibilityScore: 0.88,
+        summary: "Document analysé avec succès. Toutes les informations semblent cohérentes et le document présente un bon niveau de fiabilité.",
+        recommendations: [
+          "Vérifier l'identité des parties auprès des autorités compétentes",
+          "Contrôler la validité des documents cadastraux",
+          "S'assurer de la conformité des clauses contractuelles"
+        ]
+      }
+    }
+  },
+ 
+  // Données contextuelles
+  getContext: async (documentId: string): Promise<ContextResult> => {
+    try {
+      const { data } = await apiClient.get<ContextResult>(`/api/documents/${documentId}/context`)
+      return data
+    } catch {
+      // Données de démonstration
+      return {
+        documentId,
+        cadastreData: { status: "disponible", reference: "1234567890AB" },
+        georisquesData: { status: "aucun risque identifié" },
+        geofoncierData: { status: "données disponibles" },
+        bodaccData: { status: "aucune procédure en cours" },
+        infogreffeData: { status: "entreprise en règle" },
+        lastUpdated: new Date()
+      }
+    }
+  },
+ 
+  // Conseil LLM
+  getConseil: async (documentId: string): Promise<ConseilResult> => {
+    try {
+      const { data } = await apiClient.get<ConseilResult>(`/api/documents/${documentId}/conseil`)
+      return data
+    } catch {
+      // Données de démonstration
+      return {
+        documentId,
+        analysis: "Ce document présente toutes les caractéristiques d'un acte notarial standard. Les informations sont cohérentes et les parties semblent légitimes. Aucun élément suspect n'a été détecté.",
+        recommendations: [
+          "Procéder à la vérification d'identité des parties",
+          "Contrôler la validité des documents fournis",
+          "S'assurer de la conformité réglementaire"
+        ],
+        risks: [
+          "Risque faible : Vérification d'identité recommandée",
+          "Risque moyen : Contrôle cadastral nécessaire"
+        ],
+        nextSteps: [
+          "Collecter les pièces d'identité des parties",
+          "Vérifier les documents cadastraux",
+          "Préparer l'acte final"
+        ],
+        generatedAt: new Date()
+      }
+    }
+  },
+ 
+  // Détection du type de document
+  detectType: async (file: File): Promise<{ type: string; confidence: number }> => {
+    const formData = new FormData()
+    formData.append('file', file)
+    const { data } = await apiClient.post('/api/ocr/detect', formData, {
+      headers: { 'Content-Type': 'multipart/form-data' },
+    })
+    return data
+  },
+}
+ 
+// Services API pour les données externes
+export const externalApi = {
+  // Cadastre
+  cadastre: async (address: string) => {
+    const cadastreUrl = import.meta.env.VITE_CADASTRE_API_URL
+    if (!cadastreUrl) throw new Error('Cadastre API URL not configured')
+    const { data } = await axios.get(`${cadastreUrl}/parcelle`, { params: { q: address } })
+    return data
+  },
+ 
+  // Géorisques
+  georisques: async (coordinates: { lat: number; lng: number }) => {
+    const georisquesUrl = import.meta.env.VITE_GEORISQUES_API_URL
+    if (!georisquesUrl) throw new Error('Géorisques API URL not configured')
+    const { data } = await axios.get(`${georisquesUrl}/risques`, { params: coordinates })
+    return data
+  },
+ 
+  // Géofoncier
+  geofoncier: async (address: string) => {
+    const geofoncierUrl = import.meta.env.VITE_GEOFONCIER_API_URL
+    if (!geofoncierUrl) throw new Error('Géofoncier API URL not configured')
+    const { data } = await axios.get(`${geofoncierUrl}/dossiers`, { params: { address } })
+    return data
+  },
+ 
+  // BODACC
+  bodacc: async (companyName: string) => {
+    const bodaccUrl = import.meta.env.VITE_BODACC_API_URL
+    if (!bodaccUrl) throw new Error('BODACC API URL not configured')
+    const { data } = await axios.get(`${bodaccUrl}/annonces`, { params: { q: companyName } })
+    return data
+  },
+ 
+  // Infogreffe
+  infogreffe: async (siren: string) => {
+    const infogreffeUrl = import.meta.env.VITE_INFOGREFFE_API_URL
+    if (!infogreffeUrl) throw new Error('Infogreffe API URL not configured')
+    const { data } = await axios.get(`${infogreffeUrl}/infogreffe/rcs/extrait`, { params: { siren } })
+    return data
+  },
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/services/index.html b/coverage/4NK_IA_front/src/services/index.html new file mode 100644 index 0000000..db0692a --- /dev/null +++ b/coverage/4NK_IA_front/src/services/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for 4NK_IA_front/src/services + + + + + + + + + +
+
+

All files 4NK_IA_front/src/services

+
+ +
+ 0% + Statements + 0/266 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/266 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
api.ts +
+
0%0/2660%0/10%0/10%0/266
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/store/appSlice.ts.html b/coverage/4NK_IA_front/src/store/appSlice.ts.html new file mode 100644 index 0000000..05a8652 --- /dev/null +++ b/coverage/4NK_IA_front/src/store/appSlice.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for 4NK_IA_front/src/store/appSlice.ts + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/store appSlice.ts

+
+ +
+ 0% + Statements + 0/10 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { createSlice } from '@reduxjs/toolkit'
+ 
+export type AppState = {
+  initialized: boolean
+}
+ 
+const initialState: AppState = {
+  initialized: true,
+}
+ 
+const appSlice = createSlice({
+  name: 'app',
+  initialState,
+  reducers: {},
+})
+ 
+export const appReducer = appSlice.reducer
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/store/documentSlice.ts.html b/coverage/4NK_IA_front/src/store/documentSlice.ts.html new file mode 100644 index 0000000..78dc11c --- /dev/null +++ b/coverage/4NK_IA_front/src/store/documentSlice.ts.html @@ -0,0 +1,409 @@ + + + + + + Code coverage report for 4NK_IA_front/src/store/documentSlice.ts + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/store documentSlice.ts

+
+ +
+ 0% + Statements + 0/87 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/87 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'
+import type { PayloadAction } from '@reduxjs/toolkit'
+import type { Document, ExtractionResult, AnalysisResult, ContextResult, ConseilResult } from '../types'
+import { documentApi } from '../services/api'
+ 
+interface DocumentState {
+  documents: Document[]
+  currentDocument: Document | null
+  extractionResult: ExtractionResult | null
+  analysisResult: AnalysisResult | null
+  contextResult: ContextResult | null
+  conseilResult: ConseilResult | null
+  loading: boolean
+  error: string | null
+}
+ 
+const initialState: DocumentState = {
+  documents: [],
+  currentDocument: null,
+  extractionResult: null,
+  analysisResult: null,
+  contextResult: null,
+  conseilResult: null,
+  loading: false,
+  error: null,
+}
+ 
+export const uploadDocument = createAsyncThunk(
+  'document/upload',
+  async (file: File) => {
+    return await documentApi.upload(file)
+  }
+)
+ 
+export const extractDocument = createAsyncThunk(
+  'document/extract',
+  async (documentId: string) => {
+    return await documentApi.extract(documentId)
+  }
+)
+ 
+export const analyzeDocument = createAsyncThunk(
+  'document/analyze',
+  async (documentId: string) => {
+    return await documentApi.analyze(documentId)
+  }
+)
+ 
+export const getContextData = createAsyncThunk(
+  'document/context',
+  async (documentId: string) => {
+    return await documentApi.getContext(documentId)
+  }
+)
+ 
+export const getConseil = createAsyncThunk(
+  'document/conseil',
+  async (documentId: string) => {
+    return await documentApi.getConseil(documentId)
+  }
+)
+ 
+const documentSlice = createSlice({
+  name: 'document',
+  initialState,
+  reducers: {
+    setCurrentDocument: (state, action: PayloadAction<Document | null>) => {
+      state.currentDocument = action.payload
+    },
+    clearResults: (state) => {
+      state.extractionResult = null
+      state.analysisResult = null
+      state.contextResult = null
+      state.conseilResult = null
+    },
+  },
+  extraReducers: (builder) => {
+    builder
+      .addCase(uploadDocument.pending, (state) => {
+        state.loading = true
+        state.error = null
+      })
+      .addCase(uploadDocument.fulfilled, (state, action) => {
+        state.loading = false
+        state.documents.push(action.payload)
+        state.currentDocument = action.payload
+      })
+      .addCase(uploadDocument.rejected, (state, action) => {
+        state.loading = false
+        state.error = action.error.message || 'Erreur lors du téléversement'
+      })
+      .addCase(extractDocument.fulfilled, (state, action) => {
+        state.extractionResult = action.payload
+      })
+      .addCase(analyzeDocument.fulfilled, (state, action) => {
+        state.analysisResult = action.payload
+      })
+      .addCase(getContextData.fulfilled, (state, action) => {
+        state.contextResult = action.payload
+      })
+      .addCase(getConseil.fulfilled, (state, action) => {
+        state.conseilResult = action.payload
+      })
+  },
+})
+ 
+export const { setCurrentDocument, clearResults } = documentSlice.actions
+export const documentReducer = documentSlice.reducer
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/store/index.html b/coverage/4NK_IA_front/src/store/index.html new file mode 100644 index 0000000..de8c1f2 --- /dev/null +++ b/coverage/4NK_IA_front/src/store/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for 4NK_IA_front/src/store + + + + + + + + + +
+
+

All files 4NK_IA_front/src/store

+
+ +
+ 0% + Statements + 0/114 +
+ + +
+ 0% + Branches + 0/3 +
+ + +
+ 0% + Functions + 0/3 +
+ + +
+ 0% + Lines + 0/114 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
appSlice.ts +
+
0%0/100%0/10%0/10%0/10
documentSlice.ts +
+
0%0/870%0/10%0/10%0/87
index.ts +
+
0%0/170%0/10%0/10%0/17
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/store/index.ts.html b/coverage/4NK_IA_front/src/store/index.ts.html new file mode 100644 index 0000000..6f962b9 --- /dev/null +++ b/coverage/4NK_IA_front/src/store/index.ts.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for 4NK_IA_front/src/store/index.ts + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/store index.ts

+
+ +
+ 0% + Statements + 0/17 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { configureStore } from '@reduxjs/toolkit'
+import { useDispatch, useSelector } from 'react-redux'
+import type { TypedUseSelectorHook } from 'react-redux'
+import { appReducer } from './appSlice'
+import { documentReducer } from './documentSlice'
+ 
+export const store = configureStore({
+  reducer: {
+    app: appReducer,
+    document: documentReducer,
+  },
+  middleware: (getDefaultMiddleware) => getDefaultMiddleware({
+    serializableCheck: false,
+    immutableCheck: true,
+  }),
+  devTools: true,
+})
+ 
+export type RootState = ReturnType<typeof store.getState>
+export type AppDispatch = typeof store.dispatch
+ 
+export const useAppDispatch: () => AppDispatch = useDispatch
+export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/theme/index.html b/coverage/4NK_IA_front/src/theme/index.html new file mode 100644 index 0000000..7ab30dc --- /dev/null +++ b/coverage/4NK_IA_front/src/theme/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for 4NK_IA_front/src/theme + + + + + + + + + +
+
+

All files 4NK_IA_front/src/theme

+
+ +
+ 0% + Statements + 0/64 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/64 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/640%0/10%0/10%0/64
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/theme/index.ts.html b/coverage/4NK_IA_front/src/theme/index.ts.html new file mode 100644 index 0000000..b0aef22 --- /dev/null +++ b/coverage/4NK_IA_front/src/theme/index.ts.html @@ -0,0 +1,280 @@ + + + + + + Code coverage report for 4NK_IA_front/src/theme/index.ts + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/theme index.ts

+
+ +
+ 0% + Statements + 0/64 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/64 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { createTheme } from '@mui/material/styles'
+ 
+export const theme = createTheme({
+  palette: {
+    mode: 'light',
+    background: {
+      default: '#ffffff',
+      paper: '#ffffff',
+    },
+    primary: {
+      main: '#1976d2',
+      light: '#42a5f5',
+      dark: '#1565c0',
+    },
+    secondary: {
+      main: '#dc004e',
+      light: '#ff5983',
+      dark: '#9a0036',
+    },
+    error: {
+      main: '#f44336',
+    },
+    warning: {
+      main: '#ff9800',
+    },
+    info: {
+      main: '#2196f3',
+    },
+    success: {
+      main: '#4caf50',
+    },
+  },
+  typography: {
+    fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
+    h4: {
+      fontWeight: 600,
+    },
+    h6: {
+      fontWeight: 500,
+    },
+  },
+  components: {
+    MuiCssBaseline: {
+      styleOverrides: {
+        body: {
+          backgroundColor: '#ffffff',
+        },
+      },
+    },
+    MuiAppBar: {
+      styleOverrides: {
+        root: {
+          backgroundColor: '#1976d2',
+        },
+      },
+    },
+    MuiPaper: {
+      styleOverrides: {
+        root: {
+          backgroundColor: '#ffffff',
+        },
+      },
+    },
+  },
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/types/index.html b/coverage/4NK_IA_front/src/types/index.html new file mode 100644 index 0000000..6631e96 --- /dev/null +++ b/coverage/4NK_IA_front/src/types/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for 4NK_IA_front/src/types + + + + + + + + + +
+
+

All files 4NK_IA_front/src/types

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/00%1/10%1/10%0/0
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/types/index.ts.html b/coverage/4NK_IA_front/src/types/index.ts.html new file mode 100644 index 0000000..dc22801 --- /dev/null +++ b/coverage/4NK_IA_front/src/types/index.ts.html @@ -0,0 +1,373 @@ + + + + + + Code coverage report for 4NK_IA_front/src/types/index.ts + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/types index.ts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export interface Document {
+  id: string
+  name: string
+  type: string
+  size: number
+  uploadDate: Date
+  status: 'uploading' | 'processing' | 'completed' | 'error'
+  previewUrl?: string
+  content?: string
+}
+ 
+export interface Identity {
+  id: string
+  type: 'person' | 'company'
+  firstName?: string
+  lastName?: string
+  companyName?: string
+  birthDate?: string
+  nationality?: string
+  address?: Address
+  confidence: number
+}
+ 
+export interface Address {
+  street: string
+  city: string
+  postalCode: string
+  country: string
+  coordinates?: { lat: number; lng: number }
+}
+ 
+export interface Property {
+  id: string
+  type: 'house' | 'apartment' | 'land' | 'commercial'
+  address: Address
+  surface?: number
+  cadastralReference?: string
+  value?: number
+}
+ 
+export interface Contract {
+  id: string
+  type: 'sale' | 'rent' | 'inheritance' | 'donation'
+  parties: Identity[]
+  property?: Property
+  amount?: number
+  date?: string
+  clauses: string[]
+}
+ 
+export interface ExtractionResult {
+  documentId: string
+  text: string
+  language: string
+  documentType: string
+  identities: Identity[]
+  addresses: Address[]
+  properties: Property[]
+  contracts: Contract[]
+  signatures: string[]
+  confidence: number
+}
+ 
+export interface AnalysisResult {
+  documentId: string
+  documentType: string
+  isCNI: boolean
+  country?: string
+  verificationResult?: {
+    numberValid: boolean
+    formatValid: boolean
+    checksumValid: boolean
+  }
+  credibilityScore: number
+  summary: string
+  recommendations: string[]
+}
+ 
+export interface ContextResult {
+  documentId: string
+  cadastreData?: Record<string, unknown>
+  georisquesData?: Record<string, unknown>
+  geofoncierData?: Record<string, unknown>
+  bodaccData?: Record<string, unknown>
+  infogreffeData?: Record<string, unknown>
+  lastUpdated: Date
+}
+ 
+export interface ConseilResult {
+  documentId: string
+  analysis: string
+  recommendations: string[]
+  risks: string[]
+  nextSteps: string[]
+  generatedAt: Date
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/views/AnalyseView.tsx.html b/coverage/4NK_IA_front/src/views/AnalyseView.tsx.html new file mode 100644 index 0000000..75342fa --- /dev/null +++ b/coverage/4NK_IA_front/src/views/AnalyseView.tsx.html @@ -0,0 +1,847 @@ + + + + + + Code coverage report for 4NK_IA_front/src/views/AnalyseView.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/views AnalyseView.tsx

+
+ +
+ 0% + Statements + 0/191 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/191 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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 (
+      <Layout>
+        <Alert severity="info">
+          Veuillez d'abord téléverser et sélectionner un document.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  if (loading) {
+    return (
+      <Layout>
+        <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', mt: 4 }}>
+          <LinearProgress sx={{ width: '100%', mb: 2 }} />
+          <Typography>Analyse en cours...</Typography>
+        </Box>
+      </Layout>
+    )
+  }
+ 
+  if (!analysisResult) {
+    return (
+      <Layout>
+        <Alert severity="warning">
+          Aucun résultat d'analyse disponible.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  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 <CheckCircle color="success" />
+    if (score >= 0.6) return <Warning color="warning" />
+    return <Error color="error" />
+  }
+ 
+  return (
+    <Layout>
+      <Typography variant="h4" gutterBottom>
+        Analyse du document
+      </Typography>
+ 
+      <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
+        {/* Résumé général */}
+        <Paper sx={{ p: 2 }}>
+          <Typography variant="h6" gutterBottom>
+            Résumé de l'analyse
+          </Typography>
+          <Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap', alignItems: 'center' }}>
+            <Chip
+              icon={<Assessment />}
+              label={`Score de vraisemblance: ${(analysisResult.credibilityScore * 100).toFixed(1)}%`}
+              color={getScoreColor(analysisResult.credibilityScore)}
+              variant="filled"
+            />
+            <Chip
+              icon={<Info />}
+              label={`Type: ${analysisResult.documentType}`}
+              color="primary"
+              variant="outlined"
+            />
+            {analysisResult.isCNI && (
+              <Chip
+                icon={<Flag />}
+                label={`Pays: ${analysisResult.country}`}
+                color="secondary"
+                variant="outlined"
+              />
+            )}
+          </Box>
+        </Paper>
+ 
+        {/* Cas CNI */}
+        {analysisResult.isCNI && (
+          <Card>
+            <CardContent>
+              <Typography variant="h6" gutterBottom>
+                <Security sx={{ mr: 1, verticalAlign: 'middle' }} />
+                Vérification CNI
+              </Typography>
+              {analysisResult.verificationResult && (
+                <List>
+                  <ListItem>
+                    <ListItemIcon>
+                      {analysisResult.verificationResult.numberValid ? (
+                        <CheckCircle color="success" />
+                      ) : (
+                        <Error color="error" />
+                      )}
+                    </ListItemIcon>
+                    <ListItemText
+                      primary="Numéro valide"
+                      secondary={
+                        analysisResult.verificationResult.numberValid
+                          ? 'Le numéro de CNI est valide'
+                          : 'Le numéro de CNI est invalide'
+                      }
+                    />
+                  </ListItem>
+                  <ListItem>
+                    <ListItemIcon>
+                      {analysisResult.verificationResult.formatValid ? (
+                        <CheckCircle color="success" />
+                      ) : (
+                        <Error color="error" />
+                      )}
+                    </ListItemIcon>
+                    <ListItemText
+                      primary="Format valide"
+                      secondary={
+                        analysisResult.verificationResult.formatValid
+                          ? 'Le format du numéro est correct'
+                          : 'Le format du numéro est incorrect'
+                      }
+                    />
+                  </ListItem>
+                  <ListItem>
+                    <ListItemIcon>
+                      {analysisResult.verificationResult.checksumValid ? (
+                        <CheckCircle color="success" />
+                      ) : (
+                        <Error color="error" />
+                      )}
+                    </ListItemIcon>
+                    <ListItemText
+                      primary="Checksum valide"
+                      secondary={
+                        analysisResult.verificationResult.checksumValid
+                          ? 'La somme de contrôle est correcte'
+                          : 'La somme de contrôle est incorrecte'
+                      }
+                    />
+                  </ListItem>
+                </List>
+              )}
+            </CardContent>
+          </Card>
+        )}
+ 
+        <Box sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>
+          {/* Score de vraisemblance */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  Score de vraisemblance
+                </Typography>
+                <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
+                  {getScoreIcon(analysisResult.credibilityScore)}
+                  <Typography variant="h4" sx={{ ml: 2 }}>
+                    {(analysisResult.credibilityScore * 100).toFixed(1)}%
+                  </Typography>
+                </Box>
+                <LinearProgress
+                  variant="determinate"
+                  value={analysisResult.credibilityScore * 100}
+                  color={getScoreColor(analysisResult.credibilityScore) as LinearProgressProps['color']}
+                  sx={{ height: 10, borderRadius: 5 }}
+                />
+                <Typography variant="body2" color="text.secondary" sx={{ mt: 1 }}>
+                  {analysisResult.credibilityScore >= 0.8
+                    ? 'Document très fiable'
+                    : analysisResult.credibilityScore >= 0.6
+                    ? 'Document moyennement fiable'
+                    : 'Document peu fiable - vérification recommandée'}
+                </Typography>
+              </CardContent>
+            </Card>
+          </Box>
+ 
+          {/* Synthèse */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  Synthèse
+                </Typography>
+                <Typography variant="body1" sx={{ whiteSpace: 'pre-wrap' }}>
+                  {analysisResult.summary}
+                </Typography>
+              </CardContent>
+            </Card>
+          </Box>
+        </Box>
+ 
+        {/* Recommandations */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              Recommandations
+            </Typography>
+            <List>
+              {analysisResult.recommendations.map((recommendation, index) => (
+                <ListItem key={index}>
+                  <ListItemIcon>
+                    <Info color="primary" />
+                  </ListItemIcon>
+                  <ListItemText primary={recommendation} />
+                </ListItem>
+              ))}
+            </List>
+          </CardContent>
+        </Card>
+      </Box>
+    </Layout>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/views/ConseilView.tsx.html b/coverage/4NK_IA_front/src/views/ConseilView.tsx.html new file mode 100644 index 0000000..520af9b --- /dev/null +++ b/coverage/4NK_IA_front/src/views/ConseilView.tsx.html @@ -0,0 +1,814 @@ + + + + + + Code coverage report for 4NK_IA_front/src/views/ConseilView.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/views ConseilView.tsx

+
+ +
+ 0% + Statements + 0/187 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/187 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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 type { ChipProps } from '@mui/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 (
+      <Layout>
+        <Alert severity="info">
+          Veuillez d'abord téléverser et sélectionner un document.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  if (loading) {
+    return (
+      <Layout>
+        <Box sx={{ display: 'flex', justifyContent: 'center', mt: 4 }}>
+          <CircularProgress />
+          <Typography sx={{ ml: 2 }}>Génération des conseils LLM...</Typography>
+        </Box>
+      </Layout>
+    )
+  }
+ 
+  if (!conseilResult) {
+    return (
+      <Layout>
+        <Alert severity="warning">
+          Aucun conseil disponible.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  const getRiskColor = (risk: string): ChipProps['color'] => {
+    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 (
+    <Layout>
+      <Typography variant="h4" gutterBottom>
+        <Psychology sx={{ mr: 1, verticalAlign: 'middle' }} />
+        Conseil LLM
+      </Typography>
+ 
+      <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
+        {/* Analyse LLM */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              <Lightbulb sx={{ mr: 1, verticalAlign: 'middle' }} />
+              Analyse LLM
+            </Typography>
+            <Paper
+              sx={{
+                p: 2,
+                bgcolor: 'grey.50',
+                border: '1px solid',
+                borderColor: 'grey.200',
+              }}
+            >
+              <Typography variant="body1" sx={{ whiteSpace: 'pre-wrap' }}>
+                {conseilResult.analysis}
+              </Typography>
+            </Paper>
+            <Typography variant="caption" color="text.secondary" sx={{ mt: 1, display: 'block' }}>
+              Généré le {new Date(conseilResult.generatedAt).toLocaleString()}
+            </Typography>
+          </CardContent>
+        </Card>
+ 
+        <Box sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>
+          {/* Recommandations */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  <CheckCircle sx={{ mr: 1, verticalAlign: 'middle' }} />
+                  Recommandations ({conseilResult.recommendations.length})
+                </Typography>
+                <List dense>
+                  {conseilResult.recommendations.map((recommendation, index) => (
+                    <ListItem key={index}>
+                      <ListItemIcon>
+                        <CheckCircle color="success" />
+                      </ListItemIcon>
+                      <ListItemText primary={recommendation} />
+                    </ListItem>
+                  ))}
+                </List>
+              </CardContent>
+            </Card>
+          </Box>
+ 
+          {/* Risques identifiés */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  <Warning sx={{ mr: 1, verticalAlign: 'middle' }} />
+                  Risques identifiés ({conseilResult.risks.length})
+                </Typography>
+                <List dense>
+                  {conseilResult.risks.map((risk, index) => (
+                    <ListItem key={index}>
+                      <ListItemIcon>
+                        <Warning color={getRiskColor(risk) as ChipProps['color']} />
+                      </ListItemIcon>
+                      <ListItemText
+                        primary={risk}
+                        primaryTypographyProps={{
+                          color: getRiskColor(risk) === 'error' ? 'error.main' :
+                                 getRiskColor(risk) === 'warning' ? 'warning.main' : 'info.main'
+                        }}
+                      />
+                    </ListItem>
+                  ))}
+                </List>
+              </CardContent>
+            </Card>
+          </Box>
+        </Box>
+ 
+        {/* Prochaines étapes */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              <TrendingUp sx={{ mr: 1, verticalAlign: 'middle' }} />
+              Prochaines étapes recommandées
+            </Typography>
+            <List>
+              {conseilResult.nextSteps.map((step, index) => (
+                <ListItem key={index}>
+                  <ListItemIcon>
+                    <Schedule color="primary" />
+                  </ListItemIcon>
+                  <ListItemText
+                    primary={`Étape ${index + 1}`}
+                    secondary={step}
+                  />
+                </ListItem>
+              ))}
+            </List>
+          </CardContent>
+        </Card>
+ 
+        {/* Actions */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              Actions
+            </Typography>
+            <Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap' }}>
+              <Button
+                variant="contained"
+                onClick={() => dispatch(getConseil(currentDocument.id))}
+                disabled={loading}
+              >
+                Régénérer les conseils
+              </Button>
+              <Button variant="outlined">
+                Exporter le rapport
+              </Button>
+              <Button variant="outlined">
+                Partager avec l'équipe
+              </Button>
+            </Box>
+          </CardContent>
+        </Card>
+ 
+        {/* Résumé exécutif */}
+        <Paper sx={{ p: 2, bgcolor: 'primary.50' }}>
+          <Typography variant="h6" gutterBottom>
+            Résumé exécutif
+          </Typography>
+          <Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap', mb: 2 }}>
+            <Chip
+              label={`${conseilResult.recommendations.length} recommandations`}
+              color="success"
+              variant="outlined"
+            />
+            <Chip
+              label={`${conseilResult.risks.length} risques identifiés`}
+              color="warning"
+              variant="outlined"
+            />
+            <Chip
+              label={`${conseilResult.nextSteps.length} étapes suivantes`}
+              color="info"
+              variant="outlined"
+            />
+          </Box>
+          <Typography variant="body2" color="text.secondary">
+            Cette analyse LLM a été générée automatiquement et doit être validée par un expert notarial.
+          </Typography>
+        </Paper>
+      </Box>
+    </Layout>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/views/ContexteView.tsx.html b/coverage/4NK_IA_front/src/views/ContexteView.tsx.html new file mode 100644 index 0000000..6fc311a --- /dev/null +++ b/coverage/4NK_IA_front/src/views/ContexteView.tsx.html @@ -0,0 +1,979 @@ + + + + + + Code coverage report for 4NK_IA_front/src/views/ContexteView.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/views ContexteView.tsx

+
+ +
+ 0% + Statements + 0/228 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/228 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { useEffect } from 'react'
+import {
+  Box,
+  Typography,
+  Paper,
+  Card,
+  CardContent,
+  Chip,
+  Alert,
+  Button,
+  Accordion,
+  AccordionSummary,
+  AccordionDetails,
+  CircularProgress,
+} from '@mui/material'
+import {
+  ExpandMore,
+  LocationOn,
+  Warning,
+  CheckCircle,
+  Error,
+  Public,
+  Business,
+  Home,
+} from '@mui/icons-material'
+import type { ChipProps } from '@mui/material'
+import { useAppDispatch, useAppSelector } from '../store'
+import { getContextData } from '../store/documentSlice'
+import { Layout } from '../components/Layout'
+ 
+export default function ContexteView() {
+  const dispatch = useAppDispatch()
+  const { currentDocument, contextResult, loading } = useAppSelector(
+    (state) => state.document
+  )
+ 
+  useEffect(() => {
+    if (currentDocument && !contextResult) {
+      dispatch(getContextData(currentDocument.id))
+    }
+  }, [currentDocument, contextResult, dispatch])
+ 
+  if (!currentDocument) {
+    return (
+      <Layout>
+        <Alert severity="info">
+          Veuillez d'abord téléverser et sélectionner un document.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  if (loading) {
+    return (
+      <Layout>
+        <Box sx={{ display: 'flex', justifyContent: 'center', mt: 4 }}>
+          <CircularProgress />
+          <Typography sx={{ ml: 2 }}>Recherche d'informations contextuelles...</Typography>
+        </Box>
+      </Layout>
+    )
+  }
+ 
+  if (!contextResult) {
+    return (
+      <Layout>
+        <Alert severity="warning">
+          Aucune donnée contextuelle disponible.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  const getStatusIcon = (hasData: boolean) => {
+    return hasData ? <CheckCircle color="success" /> : <Error color="error" />
+  }
+ 
+  const getStatusColor = (hasData: boolean): ChipProps['color'] => {
+    return hasData ? 'success' : 'error'
+  }
+ 
+  return (
+    <Layout>
+      <Typography variant="h4" gutterBottom>
+        Informations contextuelles
+      </Typography>
+ 
+      <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
+        {/* Résumé des sources */}
+        <Paper sx={{ p: 2 }}>
+          <Typography variant="h6" gutterBottom>
+            Sources de données consultées
+          </Typography>
+          <Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap' }}>
+            <Chip
+              icon={getStatusIcon(!!contextResult.cadastreData)}
+              label="Cadastre"
+              color={getStatusColor(!!contextResult.cadastreData)}
+              variant="outlined"
+            />
+            <Chip
+              icon={getStatusIcon(!!contextResult.georisquesData)}
+              label="Géorisques"
+              color={getStatusColor(!!contextResult.georisquesData)}
+              variant="outlined"
+            />
+            <Chip
+              icon={getStatusIcon(!!contextResult.geofoncierData)}
+              label="Géofoncier"
+              color={getStatusColor(!!contextResult.geofoncierData)}
+              variant="outlined"
+            />
+            <Chip
+              icon={getStatusIcon(!!contextResult.bodaccData)}
+              label="BODACC"
+              color={getStatusColor(!!contextResult.bodaccData)}
+              variant="outlined"
+            />
+            <Chip
+              icon={getStatusIcon(!!contextResult.infogreffeData)}
+              label="Infogreffe"
+              color={getStatusColor(!!contextResult.infogreffeData)}
+              variant="outlined"
+            />
+          </Box>
+          <Typography variant="caption" color="text.secondary" sx={{ mt: 1, display: 'block' }}>
+            Dernière mise à jour: {new Date(contextResult.lastUpdated).toLocaleString()}
+          </Typography>
+        </Paper>
+ 
+        {/* Données cadastrales */}
+        <Accordion>
+          <AccordionSummary expandIcon={<ExpandMore />}>
+            <Box sx={{ display: 'flex', alignItems: 'center' }}>
+              <Home sx={{ mr: 1 }} />
+              <Typography variant="h6">Données cadastrales</Typography>
+              <Chip
+                label={contextResult.cadastreData ? 'Disponible' : 'Non disponible'}
+                color={getStatusColor(!!contextResult.cadastreData)}
+                size="small"
+                sx={{ ml: 2 }}
+              />
+            </Box>
+          </AccordionSummary>
+          <AccordionDetails>
+            {contextResult.cadastreData ? (
+              <Box>
+                <Typography variant="body2" sx={{ whiteSpace: 'pre-wrap' }}>
+                  {JSON.stringify(contextResult.cadastreData, null, 2)}
+                </Typography>
+              </Box>
+            ) : (
+              <Alert severity="info">
+                Aucune donnée cadastrale trouvée pour ce document.
+              </Alert>
+            )}
+          </AccordionDetails>
+        </Accordion>
+ 
+        {/* Données Géorisques */}
+        <Accordion>
+          <AccordionSummary expandIcon={<ExpandMore />}>
+            <Box sx={{ display: 'flex', alignItems: 'center' }}>
+              <Warning sx={{ mr: 1 }} />
+              <Typography variant="h6">Données Géorisques</Typography>
+              <Chip
+                label={contextResult.georisquesData ? 'Disponible' : 'Non disponible'}
+                color={getStatusColor(!!contextResult.georisquesData)}
+                size="small"
+                sx={{ ml: 2 }}
+              />
+            </Box>
+          </AccordionSummary>
+          <AccordionDetails>
+            {contextResult.georisquesData ? (
+              <Box>
+                <Typography variant="body2" sx={{ whiteSpace: 'pre-wrap' }}>
+                  {JSON.stringify(contextResult.georisquesData, null, 2)}
+                </Typography>
+              </Box>
+            ) : (
+              <Alert severity="info">
+                Aucune donnée Géorisques trouvée pour ce document.
+              </Alert>
+            )}
+          </AccordionDetails>
+        </Accordion>
+ 
+        {/* Données Géofoncier */}
+        <Accordion>
+          <AccordionSummary expandIcon={<ExpandMore />}>
+            <Box sx={{ display: 'flex', alignItems: 'center' }}>
+              <LocationOn sx={{ mr: 1 }} />
+              <Typography variant="h6">Données Géofoncier</Typography>
+              <Chip
+                label={contextResult.geofoncierData ? 'Disponible' : 'Non disponible'}
+                color={getStatusColor(!!contextResult.geofoncierData)}
+                size="small"
+                sx={{ ml: 2 }}
+              />
+            </Box>
+          </AccordionSummary>
+          <AccordionDetails>
+            {contextResult.geofoncierData ? (
+              <Box>
+                <Typography variant="body2" sx={{ whiteSpace: 'pre-wrap' }}>
+                  {JSON.stringify(contextResult.geofoncierData, null, 2)}
+                </Typography>
+              </Box>
+            ) : (
+              <Alert severity="info">
+                Aucune donnée Géofoncier trouvée pour ce document.
+              </Alert>
+            )}
+          </AccordionDetails>
+        </Accordion>
+ 
+        {/* Données BODACC */}
+        <Accordion>
+          <AccordionSummary expandIcon={<ExpandMore />}>
+            <Box sx={{ display: 'flex', alignItems: 'center' }}>
+              <Public sx={{ mr: 1 }} />
+              <Typography variant="h6">Données BODACC</Typography>
+              <Chip
+                label={contextResult.bodaccData ? 'Disponible' : 'Non disponible'}
+                color={getStatusColor(!!contextResult.bodaccData)}
+                size="small"
+                sx={{ ml: 2 }}
+              />
+            </Box>
+          </AccordionSummary>
+          <AccordionDetails>
+            {contextResult.bodaccData ? (
+              <Box>
+                <Typography variant="body2" sx={{ whiteSpace: 'pre-wrap' }}>
+                  {JSON.stringify(contextResult.bodaccData, null, 2)}
+                </Typography>
+              </Box>
+            ) : (
+              <Alert severity="info">
+                Aucune donnée BODACC trouvée pour ce document.
+              </Alert>
+            )}
+          </AccordionDetails>
+        </Accordion>
+ 
+        {/* Données Infogreffe */}
+        <Accordion>
+          <AccordionSummary expandIcon={<ExpandMore />}>
+            <Box sx={{ display: 'flex', alignItems: 'center' }}>
+              <Business sx={{ mr: 1 }} />
+              <Typography variant="h6">Données Infogreffe</Typography>
+              <Chip
+                label={contextResult.infogreffeData ? 'Disponible' : 'Non disponible'}
+                color={getStatusColor(!!contextResult.infogreffeData)}
+                size="small"
+                sx={{ ml: 2 }}
+              />
+            </Box>
+          </AccordionSummary>
+          <AccordionDetails>
+            {contextResult.infogreffeData ? (
+              <Box>
+                <Typography variant="body2" sx={{ whiteSpace: 'pre-wrap' }}>
+                  {JSON.stringify(contextResult.infogreffeData, null, 2)}
+                </Typography>
+              </Box>
+            ) : (
+              <Alert severity="info">
+                Aucune donnée Infogreffe trouvée pour ce document.
+              </Alert>
+            )}
+          </AccordionDetails>
+        </Accordion>
+ 
+        {/* Actions */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              Actions
+            </Typography>
+            <Box sx={{ display: 'flex', gap: 2 }}>
+              <Button
+                variant="contained"
+                onClick={() => dispatch(getContextData(currentDocument.id))}
+                disabled={loading}
+              >
+                Actualiser les données
+              </Button>
+              <Button variant="outlined">
+                Exporter le rapport
+              </Button>
+            </Box>
+          </CardContent>
+        </Card>
+      </Box>
+    </Layout>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/views/ExtractionView.tsx.html b/coverage/4NK_IA_front/src/views/ExtractionView.tsx.html new file mode 100644 index 0000000..7d0d875 --- /dev/null +++ b/coverage/4NK_IA_front/src/views/ExtractionView.tsx.html @@ -0,0 +1,946 @@ + + + + + + Code coverage report for 4NK_IA_front/src/views/ExtractionView.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/views ExtractionView.tsx

+
+ +
+ 0% + Statements + 0/230 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/230 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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 (
+      <Layout>
+        <Alert severity="info">
+          Veuillez d'abord téléverser et sélectionner un document.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  if (loading) {
+    return (
+      <Layout>
+        <Box sx={{ display: 'flex', justifyContent: 'center', mt: 4 }}>
+          <CircularProgress />
+          <Typography sx={{ ml: 2 }}>Extraction en cours...</Typography>
+        </Box>
+      </Layout>
+    )
+  }
+ 
+  if (!extractionResult) {
+    return (
+      <Layout>
+        <Alert severity="warning">
+          Aucun résultat d'extraction disponible.
+        </Alert>
+      </Layout>
+    )
+  }
+ 
+  return (
+    <Layout>
+      <Typography variant="h4" gutterBottom>
+        Extraction des données
+      </Typography>
+ 
+      <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
+        {/* Informations générales */}
+        <Paper sx={{ p: 2 }}>
+          <Typography variant="h6" gutterBottom>
+            Informations générales
+          </Typography>
+          <Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap' }}>
+            <Chip
+              icon={<Language />}
+              label={`Langue: ${extractionResult.language}`}
+              color="primary"
+              variant="outlined"
+            />
+            <Chip
+              icon={<Description />}
+              label={`Type: ${extractionResult.documentType}`}
+              color="secondary"
+              variant="outlined"
+            />
+            <Chip
+              icon={<Verified />}
+              label={`Confiance: ${(extractionResult.confidence * 100).toFixed(1)}%`}
+              color={extractionResult.confidence > 0.8 ? 'success' : 'warning'}
+              variant="outlined"
+            />
+          </Box>
+        </Paper>
+ 
+        <Box sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>
+          {/* Identités */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  <Person sx={{ mr: 1, verticalAlign: 'middle' }} />
+                  Identités ({extractionResult.identities?.length || 0})
+                </Typography>
+                <List dense>
+                  {(extractionResult.identities || []).map((identity, index) => (
+                    <ListItem key={index}>
+                      <ListItemText
+                        primary={
+                          identity.type === 'person'
+                            ? `${identity.firstName} ${identity.lastName}`
+                            : identity.companyName
+                        }
+                        secondary={
+                          <Box>
+                            <Typography variant="caption" display="block">
+                              Type: {identity.type}
+                            </Typography>
+                            {identity.birthDate && (
+                              <Typography variant="caption" display="block">
+                                Naissance: {identity.birthDate}
+                              </Typography>
+                            )}
+                            {identity.nationality && (
+                              <Typography variant="caption" display="block">
+                                Nationalité: {identity.nationality}
+                              </Typography>
+                            )}
+                            <Typography variant="caption" display="block">
+                              Confiance: {(identity.confidence * 100).toFixed(1)}%
+                            </Typography>
+                          </Box>
+                        }
+                      />
+                    </ListItem>
+                  ))}
+                </List>
+              </CardContent>
+            </Card>
+          </Box>
+ 
+          {/* Adresses */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  <LocationOn sx={{ mr: 1, verticalAlign: 'middle' }} />
+                  Adresses ({extractionResult.addresses?.length || 0})
+                </Typography>
+                <List dense>
+                  {(extractionResult.addresses || []).map((address, index) => (
+                    <ListItem key={index}>
+                      <ListItemText
+                        primary={`${address.street}, ${address.city}`}
+                        secondary={`${address.postalCode} ${address.country}`}
+                      />
+                    </ListItem>
+                  ))}
+                </List>
+              </CardContent>
+            </Card>
+          </Box>
+        </Box>
+ 
+        <Box sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>
+          {/* Biens */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  <Home sx={{ mr: 1, verticalAlign: 'middle' }} />
+                  Biens ({extractionResult.properties?.length || 0})
+                </Typography>
+                <List dense>
+                  {(extractionResult.properties || []).map((property, index) => (
+                    <ListItem key={index}>
+                      <ListItemText
+                        primary={`${property.type} - ${property.address.city}`}
+                        secondary={
+                          <Box>
+                            <Typography variant="caption" display="block">
+                              {property.address.street}
+                            </Typography>
+                            {property.surface && (
+                              <Typography variant="caption" display="block">
+                                Surface: {property.surface} m²
+                              </Typography>
+                            )}
+                            {property.cadastralReference && (
+                              <Typography variant="caption" display="block">
+                                Cadastre: {property.cadastralReference}
+                              </Typography>
+                            )}
+                          </Box>
+                        }
+                      />
+                    </ListItem>
+                  ))}
+                </List>
+              </CardContent>
+            </Card>
+          </Box>
+ 
+          {/* Contrats */}
+          <Box sx={{ flex: '1 1 300px' }}>
+            <Card>
+              <CardContent>
+                <Typography variant="h6" gutterBottom>
+                  <Description sx={{ mr: 1, verticalAlign: 'middle' }} />
+                  Contrats ({extractionResult.contracts?.length || 0})
+                </Typography>
+                <List dense>
+                  {(extractionResult.contracts || []).map((contract, index) => (
+                    <ListItem key={index}>
+                      <ListItemText
+                        primary={`${contract.type} - ${contract.amount ? `${contract.amount}€` : 'Montant non spécifié'}`}
+                        secondary={
+                          <Box>
+                            <Typography variant="caption" display="block">
+                              Parties: {contract.parties.length}
+                            </Typography>
+                            {contract.date && (
+                              <Typography variant="caption" display="block">
+                                Date: {contract.date}
+                              </Typography>
+                            )}
+                            <Typography variant="caption" display="block">
+                              Clauses: {contract.clauses.length}
+                            </Typography>
+                          </Box>
+                        }
+                      />
+                    </ListItem>
+                  ))}
+                </List>
+              </CardContent>
+            </Card>
+          </Box>
+        </Box>
+ 
+        {/* Signatures */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              Signatures détectées ({extractionResult.signatures?.length || 0})
+            </Typography>
+            <List dense>
+              {(extractionResult.signatures || []).map((signature, index) => (
+                <ListItem key={index}>
+                  <ListItemText primary={signature} />
+                </ListItem>
+              ))}
+            </List>
+          </CardContent>
+        </Card>
+ 
+        {/* Texte extrait */}
+        <Card>
+          <CardContent>
+            <Typography variant="h6" gutterBottom>
+              Texte extrait
+            </Typography>
+            <Paper
+              sx={{
+                p: 2,
+                bgcolor: 'grey.50',
+                maxHeight: 300,
+                overflow: 'auto',
+              }}
+            >
+              <Typography variant="body2" sx={{ whiteSpace: 'pre-wrap' }}>
+                {extractionResult.text}
+              </Typography>
+            </Paper>
+          </CardContent>
+        </Card>
+      </Box>
+    </Layout>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/views/UploadView.tsx.html b/coverage/4NK_IA_front/src/views/UploadView.tsx.html new file mode 100644 index 0000000..19c8116 --- /dev/null +++ b/coverage/4NK_IA_front/src/views/UploadView.tsx.html @@ -0,0 +1,595 @@ + + + + + + Code coverage report for 4NK_IA_front/src/views/UploadView.tsx + + + + + + + + + +
+
+

All files / 4NK_IA_front/src/views UploadView.tsx

+
+ +
+ 0% + Statements + 0/142 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/142 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { useCallback, useState } from 'react'
+import { useDropzone } from 'react-dropzone'
+import { Box, Typography, Paper, CircularProgress, Alert, Button, Chip, Grid } from '@mui/material'
+import {
+  CloudUpload,
+  CheckCircle,
+  Error,
+  HourglassEmpty,
+  Visibility,
+} from '@mui/icons-material'
+import { useAppDispatch, useAppSelector } from '../store'
+import { uploadDocument } from '../store/documentSlice'
+import { Layout } from '../components/Layout'
+import { FilePreview } from '../components/FilePreview'
+import type { Document } from '../types'
+ 
+export default function UploadView() {
+  const dispatch = useAppDispatch()
+  const { documents, error } = useAppSelector((state) => state.document)
+  const [previewDocument, setPreviewDocument] = useState<Document | null>(null)
+ 
+  const onDrop = useCallback(
+    (acceptedFiles: File[]) => {
+      acceptedFiles.forEach((file) => {
+        dispatch(uploadDocument(file))
+      })
+    },
+    [dispatch]
+  )
+ 
+  const { getRootProps, getInputProps, isDragActive } = useDropzone({
+    onDrop,
+    accept: {
+      'application/pdf': ['.pdf'],
+      'image/*': ['.png', '.jpg', '.jpeg', '.tiff'],
+      'text/plain': ['.txt'],
+      'text/markdown': ['.md'],
+      'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],
+    },
+    multiple: true,
+  })
+ 
+  const getStatusIcon = (status: string) => {
+    switch (status) {
+      case 'completed':
+        return <CheckCircle color="success" />
+      case 'error':
+        return <Error color="error" />
+      case 'processing':
+        return <CircularProgress size={20} />
+      default:
+        return <HourglassEmpty color="action" />
+    }
+  }
+ 
+  const getStatusColor = (status: string) => {
+    switch (status) {
+      case 'completed':
+        return 'success'
+      case 'error':
+        return 'error'
+      case 'processing':
+        return 'warning'
+      default:
+        return 'default'
+    }
+  }
+ 
+  return (
+    <Layout>
+      <Typography variant="h4" gutterBottom>
+        Téléversement de documents
+      </Typography>
+ 
+      <Paper
+        {...getRootProps()}
+        sx={{
+          p: 4,
+          textAlign: 'center',
+          cursor: 'pointer',
+          border: '2px dashed',
+          borderColor: isDragActive ? 'primary.main' : 'grey.300',
+          bgcolor: isDragActive ? 'action.hover' : 'background.paper',
+          '&:hover': {
+            borderColor: 'primary.main',
+            bgcolor: 'action.hover',
+          },
+        }}
+      >
+        <input {...getInputProps()} />
+        <CloudUpload sx={{ fontSize: 48, color: 'primary.main', mb: 2 }} />
+        <Typography variant="h6" gutterBottom>
+          {isDragActive
+            ? 'Déposez les fichiers ici...'
+            : 'Glissez-déposez vos documents ou cliquez pour sélectionner'}
+        </Typography>
+        <Typography variant="body2" color="text.secondary">
+          Formats acceptés: PDF, PNG, JPG, JPEG, TIFF, TXT, MD, DOCX
+        </Typography>
+      </Paper>
+ 
+      {error && (
+        <Alert severity="error" sx={{ mt: 2 }}>
+          {error}
+        </Alert>
+      )}
+ 
+      {documents.length > 0 && (
+        <Box sx={{ mt: 3 }}>
+          <Typography variant="h6" gutterBottom>
+            Documents téléversés ({documents.length})
+          </Typography>
+ 
+          <Grid container spacing={2}>
+            {documents.map((doc, index) => (
+              <Grid size={{ xs: 12, md: 6 }} key={`${doc.id}-${index}`}>
+                <Paper sx={{ p: 2 }}>
+                  <Box display="flex" justifyContent="space-between" alignItems="center" mb={2}>
+                    <Box display="flex" alignItems="center" gap={1}>
+                      {getStatusIcon(doc.status)}
+                      <Typography variant="subtitle1" noWrap>
+                        {doc.name}
+                      </Typography>
+                    </Box>
+                    <Box display="flex" gap={1}>
+                      <Button
+                        size="small"
+                        startIcon={<Visibility />}
+                        onClick={() => setPreviewDocument(doc)}
+                        disabled={doc.status !== 'completed'}
+                      >
+                        Aperçu
+                      </Button>
+                    </Box>
+                  </Box>
+ 
+                  <Box display="flex" gap={1} flexWrap="wrap">
+                    <Chip
+                      label={doc.type}
+                      size="small"
+                      variant="outlined"
+                    />
+                    <Chip
+                      label={doc.status}
+                      size="small"
+                      color={getStatusColor(doc.status) as 'success' | 'error' | 'warning' | 'default'}
+                    />
+                    <Chip
+                      label={`${(doc.size / 1024 / 1024).toFixed(2)} MB`}
+                      size="small"
+                      variant="outlined"
+                    />
+                  </Box>
+                </Paper>
+              </Grid>
+            ))}
+          </Grid>
+        </Box>
+      )}
+ 
+      {/* Aperçu du document */}
+      {previewDocument && (
+        <FilePreview
+          document={previewDocument}
+          onClose={() => setPreviewDocument(null)}
+        />
+      )}
+    </Layout>
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/4NK_IA_front/src/views/index.html b/coverage/4NK_IA_front/src/views/index.html new file mode 100644 index 0000000..8363cde --- /dev/null +++ b/coverage/4NK_IA_front/src/views/index.html @@ -0,0 +1,176 @@ + + + + + + Code coverage report for 4NK_IA_front/src/views + + + + + + + + + +
+
+

All files 4NK_IA_front/src/views

+
+ +
+ 0% + Statements + 0/978 +
+ + +
+ 0% + Branches + 0/5 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 0% + Lines + 0/978 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
AnalyseView.tsx +
+
0%0/1910%0/10%0/10%0/191
ConseilView.tsx +
+
0%0/1870%0/10%0/10%0/187
ContexteView.tsx +
+
0%0/2280%0/10%0/10%0/228
ExtractionView.tsx +
+
0%0/2300%0/10%0/10%0/230
UploadView.tsx +
+
0%0/1420%0/10%0/10%0/142
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/clover.xml b/coverage/clover.xml index 3e2f03e..51576b3 100644 --- a/coverage/clover.xml +++ b/coverage/clover.xml @@ -1,48 +1,1840 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json index 27f61c9..639d966 100644 --- a/coverage/coverage-final.json +++ b/coverage/coverage-final.json @@ -1,3 +1,19 @@ -{"/home/desk/code/4NK_IA_front/src/App.tsx": {"path":"/home/desk/code/4NK_IA_front/src/App.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":18}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":16}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":10}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":6}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":11}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":51}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":65}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":12}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":52}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":73}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":12}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":27}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":28}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":88}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":11}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":60}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":12}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":12}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":86}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":7}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":18}}},"s":{"0":0,"1":0,"2":0,"3":0,"5":0,"6":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"28":0,"30":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":866},"end":{"line":31,"column":18}},"locations":[{"start":{"line":1,"column":866},"end":{"line":31,"column":18}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":866},"end":{"line":31,"column":18}},"loc":{"start":{"line":1,"column":866},"end":{"line":31,"column":18}},"line":1}},"f":{"0":0}} -,"/home/desk/code/4NK_IA_front/src/main.tsx": {"path":"/home/desk/code/4NK_IA_front/src/main.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":45}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":20}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":27}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":14}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":11}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"5":0,"6":0,"7":0,"8":0,"9":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":203},"end":{"line":10,"column":-148}},"locations":[{"start":{"line":1,"column":203},"end":{"line":10,"column":-148}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":203},"end":{"line":10,"column":-148}},"loc":{"start":{"line":1,"column":203},"end":{"line":10,"column":-148}},"line":1}},"f":{"0":0}} +{"/home/desk/code/4NK_IA_front/simple-server.js": {"path":"/home/desk/code/4NK_IA_front/simple-server.js","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":50}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":29}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":32}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":24}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":24}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":26}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":2}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":48}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":74}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":28}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":65}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":70}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":47}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":42}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":65}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":65}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":32}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":43}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":50}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":28}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":76}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":50}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":19}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":20}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":35}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":55}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":13}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":16}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":61}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":38}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":9}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":33}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":78}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":68}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":54}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":3}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"7":0,"8":0,"10":0,"11":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"34":0,"35":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"61":0,"62":0,"63":0,"64":0,"65":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":66,"column":-446}},"locations":[{"start":{"line":1,"column":0},"end":{"line":66,"column":-446}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":66,"column":-446}},"loc":{"start":{"line":1,"column":0},"end":{"line":66,"column":-446}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/App.tsx": {"path":"/home/desk/code/4NK_IA_front/src/App.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":1}}},"s":{"0":0,"1":0,"3":0,"4":0,"5":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":113},"end":{"line":6,"column":1}},"locations":[{"start":{"line":1,"column":113},"end":{"line":6,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":113},"end":{"line":6,"column":1}},"loc":{"start":{"line":1,"column":113},"end":{"line":6,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/main.tsx": {"path":"/home/desk/code/4NK_IA_front/src/main.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":45}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":52}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":35}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":15}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":472},"end":{"line":20,"column":-344}},"locations":[{"start":{"line":1,"column":472},"end":{"line":20,"column":-344}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":472},"end":{"line":20,"column":-344}},"loc":{"start":{"line":1,"column":472},"end":{"line":20,"column":-344}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/components/FilePreview.tsx": {"path":"/home/desk/code/4NK_IA_front/src/components/FilePreview.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":8}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":83}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":46}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":57}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":45}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":19}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":18}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":14}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":17}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":36}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":23}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":12}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":36}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":16}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":32}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":46}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":37}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":35}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":18}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":93}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":15}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":12}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":34}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":86}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":63}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":55}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":21}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":23}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":14}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":31}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":73}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":16}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":14}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":10}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":59}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":19}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":79}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":58}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":42}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":65}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":16}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":55}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":21}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":23}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":14}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":20}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":30}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":92}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":32}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":55}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":25}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":16}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":19}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":49}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":19}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":18}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":32}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":15}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":90}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":62}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":23}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":36}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":30}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":48}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":72}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":38}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":17}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":25}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":44}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":44}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":29}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":23}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":36}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":30}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":44}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":79}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":45}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":17}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":25}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":20}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":62}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":23}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":36}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":30}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":41}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":77}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":17}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":25}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":44}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":44}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":29}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":23}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":36}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":30}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":40}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":77}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":17}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":25}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":20}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":18}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":22}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":34}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":38}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":30}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":33}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":32}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":30}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":39}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":40}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":15}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":38}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":61}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":25}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":100}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":32}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":33}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":28}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":37}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":51}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":50}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":47}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":48}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":22}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":56}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":52}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":36}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":61}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":39}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":22}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":20}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":22}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":98}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":42}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":86}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":58}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":33}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":71}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":81}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":33}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":71}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":75}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":33}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":24}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":22}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":18}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":16}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":22}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":21}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":34}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":17}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":15}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":29}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":34}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":34}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":41}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":9}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":17}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":22}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":13}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":1}}},"s":{"0":0,"1":0,"14":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"37":0,"38":0,"39":0,"40":0,"41":0,"44":0,"45":0,"46":0,"47":0,"49":0,"50":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"61":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"77":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"93":0,"94":0,"95":0,"96":0,"97":0,"99":0,"100":0,"103":0,"104":0,"105":0,"106":0,"109":0,"110":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"134":0,"135":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"156":0,"157":0,"158":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"194":0,"195":0,"196":0,"197":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"209":0,"210":0,"212":0,"214":0,"215":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"225":0,"226":0,"227":0,"229":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":7207},"end":{"line":230,"column":1}},"locations":[{"start":{"line":1,"column":7207},"end":{"line":230,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":7207},"end":{"line":230,"column":1}},"loc":{"start":{"line":1,"column":7207},"end":{"line":230,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/components/Layout.tsx": {"path":"/home/desk/code/4NK_IA_front/src/components/Layout.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":75}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":59}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":64}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":32}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":10}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":30}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":32}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":17}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":27}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":51}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":41}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":11}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":23}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":18}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":56}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":53}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":18}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":18}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":10}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"9":0,"10":0,"11":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"24":0,"25":0,"26":0,"28":0,"30":0,"31":0,"32":0,"33":0,"35":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":936},"end":{"line":36,"column":1}},"locations":[{"start":{"line":1,"column":936},"end":{"line":36,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":936},"end":{"line":36,"column":1}},"loc":{"start":{"line":1,"column":936},"end":{"line":36,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/components/NavigationTabs.tsx": {"path":"/home/desk/code/4NK_IA_front/src/components/NavigationTabs.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":83}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":16}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":42}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":49}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":43}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":45}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":43}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":73}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":79}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":33}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":10}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":58}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":11}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":58}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":36}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":28}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":35}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":47}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":11}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":10}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}}},"s":{"0":0,"1":0,"2":0,"8":0,"9":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"19":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"34":0,"35":0,"36":0,"37":0,"38":0,"40":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1144},"end":{"line":41,"column":1}},"locations":[{"start":{"line":1,"column":1144},"end":{"line":41,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1144},"end":{"line":41,"column":1}},"loc":{"start":{"line":1,"column":1144},"end":{"line":41,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/router/index.tsx": {"path":"/home/desk/code/4NK_IA_front/src/router/index.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":38}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":70}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":65}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":60}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":68}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":62}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":64}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":62}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":99}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":24}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":57}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":8}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":36}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":93}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":107}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":101}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":103}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":101}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":2}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":32}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":43}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}}},"s":{"0":0,"1":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"10":0,"11":0,"12":0,"13":0,"14":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1355},"end":{"line":28,"column":1}},"locations":[{"start":{"line":1,"column":1355},"end":{"line":28,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1355},"end":{"line":28,"column":1}},"loc":{"start":{"line":1,"column":1355},"end":{"line":28,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/services/api.ts": {"path":"/home/desk/code/4NK_IA_front/src/services/api.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":72}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":20}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":2}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":14}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":38}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":39}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":41}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":87}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":30}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":35}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":22}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":21}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":29}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":9}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":8}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":32}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":52}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":9}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":37}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":35}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":77}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":59}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":47}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":14}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":66}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":24}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":45}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":31}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":28}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":27}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":7}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":13}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":60}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":47}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":14}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":33}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":24}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":45}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":24}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":31}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":27}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":5}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":4}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":69}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":9}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":81}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":40}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":14}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":19}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":65}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":23}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":58}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":86}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":32}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":34}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":48}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":61}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":24}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":35}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":25}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":18}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":75}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":26}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":24}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":30}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":27}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":18}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":89}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":30}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":37}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":20}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":41}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":26}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":32}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":29}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":12}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":22}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":45}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":23}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":18}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":21}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":27}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":32}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":22}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":25}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":29}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":75}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":11}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":52}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":54}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":7}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":13}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":14}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":19}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":165}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":23}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":38}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":21}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":11}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":20}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":36}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":30}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":31}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":36}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":37}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":28}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":11}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":10}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":20}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":11}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":41}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":26}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":32}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":29}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":11}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":10}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":21}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":11}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":20}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":39}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":22}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":43}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":28}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":34}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":31}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":14}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":24}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":47}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":25}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":11}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":10}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":20}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":11}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":20}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":24}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":27}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":31}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":77}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":11}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":10}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":52}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":24}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":7}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":5}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":4}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":67}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":9}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":98}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":17}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":13}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":14}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":19}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":38}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":21}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":31}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":145}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":26}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":77}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":59}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":65}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":9}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":7}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":5}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":4}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":69}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":9}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":97}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":17}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":13}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":14}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":19}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":74}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":61}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":58}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":60}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":58}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":31}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":7}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":5}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":4}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":69}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":9}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":97}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":17}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":13}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":14}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":19}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":205}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":26}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":62}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":56}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":52}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":10}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":16}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":64}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":56}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":10}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":20}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":56}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":46}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":33}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":10}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":31}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":7}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":5}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":4}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":84}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":35}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":33}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":72}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":57}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":6}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":15}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":4}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":1}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":28}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":40}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":61}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":72}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":91}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":15}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":4}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":68}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":65}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":76}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":89}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":15}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":4}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":42}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":65}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":76}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":90}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":15}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":4}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":42}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":57}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":68}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":93}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":15}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":4}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":40}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":65}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":76}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":102}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":15}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":4}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":1}}},"s":{"0":0,"3":0,"5":0,"6":0,"7":0,"8":0,"11":0,"12":0,"13":0,"14":0,"17":0,"18":0,"19":0,"20":0,"21":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"35":0,"36":0,"37":0,"40":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"65":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"81":0,"82":0,"83":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"189":0,"190":0,"191":0,"192":0,"193":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"211":0,"212":0,"213":0,"214":0,"215":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"230":0,"231":0,"232":0,"233":0,"234":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"270":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":10416},"end":{"line":311,"column":1}},"locations":[{"start":{"line":1,"column":10416},"end":{"line":311,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":10416},"end":{"line":311,"column":1}},"loc":{"start":{"line":1,"column":10416},"end":{"line":311,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/store/appSlice.ts": {"path":"/home/desk/code/4NK_IA_front/src/store/appSlice.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":46}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":32}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":42}}},"s":{"0":0,"6":0,"7":0,"8":0,"10":0,"11":0,"12":0,"13":0,"14":0,"16":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":280},"end":{"line":17,"column":42}},"locations":[{"start":{"line":1,"column":280},"end":{"line":17,"column":42}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":280},"end":{"line":17,"column":42}},"loc":{"start":{"line":1,"column":280},"end":{"line":17,"column":42}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/store/documentSlice.ts": {"path":"/home/desk/code/4NK_IA_front/src/store/documentSlice.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":64}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":25}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":23}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":22}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":17}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":14}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":47}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":20}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":25}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":41}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":48}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":33}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":48}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":48}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":21}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":48}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":47}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":21}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":51}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":43}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":21}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":51}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":1}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":35}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":19}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":15}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":13}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":76}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":44}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":6}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":30}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":35}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":33}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":32}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":32}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":6}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":4}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":31}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":11}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":51}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":28}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":26}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":8}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":61}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":29}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":44}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":46}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":8}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":60}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":29}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":76}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":8}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":62}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":47}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":8}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":62}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":45}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":8}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":61}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":44}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":8}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":57}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":44}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":8}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":4}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":2}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":73}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":52}}},"s":{"0":0,"3":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"106":0,"107":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":3087},"end":{"line":108,"column":52}},"locations":[{"start":{"line":1,"column":3087},"end":{"line":108,"column":52}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":3087},"end":{"line":108,"column":52}},"loc":{"start":{"line":1,"column":3087},"end":{"line":108,"column":52}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/store/index.ts": {"path":"/home/desk/code/4NK_IA_front/src/store/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":49}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":54}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":49}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":37}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":25}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":5}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":2}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":60}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":74}}},"s":{"0":0,"1":0,"3":0,"4":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"21":0,"22":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":749},"end":{"line":23,"column":74}},"locations":[{"start":{"line":1,"column":749},"end":{"line":23,"column":74}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":749},"end":{"line":23,"column":74}},"loc":{"start":{"line":1,"column":749},"end":{"line":23,"column":74}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/theme/index.ts": {"path":"/home/desk/code/4NK_IA_front/src/theme/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":12}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":18}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":6}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":14}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":6}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":16}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":6}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":12}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":6}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":14}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":6}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":11}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":6}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":22}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":6}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":61}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":9}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":22}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":6}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":9}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":22}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":6}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":4}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":15}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":21}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":23}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":37}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":10}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":8}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":16}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":23}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":15}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":37}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":10}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":8}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":15}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":15}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":37}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":10}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":8}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":6}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":2}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1116},"end":{"line":65,"column":2}},"locations":[{"start":{"line":1,"column":1116},"end":{"line":65,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1116},"end":{"line":65,"column":2}},"loc":{"start":{"line":1,"column":1116},"end":{"line":65,"column":2}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/types/index.ts": {"path":"/home/desk/code/4NK_IA_front/src/types/index.ts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1958},"end":{"line":96,"column":1}},"locations":[{"start":{"line":1,"column":1958},"end":{"line":96,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1958},"end":{"line":96,"column":1}},"loc":{"start":{"line":1,"column":1958},"end":{"line":96,"column":1}},"line":1}},"f":{"0":1}} +,"/home/desk/code/4NK_IA_front/src/views/AnalyseView.tsx": {"path":"/home/desk/code/4NK_IA_front/src/views/AnalyseView.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":57}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":56}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":39}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":70}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":19}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":45}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":51}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":49}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":12}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":14}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":31}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":16}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":12}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":14}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":92}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":58}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":54}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":14}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":15}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":24}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":34}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":16}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":15}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":64}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":38}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":38}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":18}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":43}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":60}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":56}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":34}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":10}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":12}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":44}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":19}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":69}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":29}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":48}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":23}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":88}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":17}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":35}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":102}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":68}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":30}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":14}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":29}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":60}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":29}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":32}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":14}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":38}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":19}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":31}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":57}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":33}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":34}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":16}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":16}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":16}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":34}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":16}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":25}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":52}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":68}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":27}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":53}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":22}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":28}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":34}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":72}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":55}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":47}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":35}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":33}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":45}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":33}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":69}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":57}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":59}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":22}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":29}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":28}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":34}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":72}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":55}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":47}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":35}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":33}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":45}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":33}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":69}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":61}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":63}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":22}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":29}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":28}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":34}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":74}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":55}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":47}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":35}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":33}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":47}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":33}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":71}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":63}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":65}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":22}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":29}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":23}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":26}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":17}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":64}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":42}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":18}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":27}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":54}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":29}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":75}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":65}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":58}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":73}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":31}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":22}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":31}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":39}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":63}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":104}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":54}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":18}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":82}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":57}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":44}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":60}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":51}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":71}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":29}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":28}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":19}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":16}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":42}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":18}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":27}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":54}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":29}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":76}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":42}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":29}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":28}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":19}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":16}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":14}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":14}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":23}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":50}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":25}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":18}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":78}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":38}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":32}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":44}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":33}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":59}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":27}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":17}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":19}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":24}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":15}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":12}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":13}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":1}}},"s":{"0":0,"1":0,"15":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"33":0,"35":0,"36":0,"37":0,"38":0,"39":0,"41":0,"42":0,"43":0,"44":0,"46":0,"47":0,"49":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"65":0,"67":0,"68":0,"70":0,"72":0,"73":0,"74":0,"75":0,"76":0,"78":0,"79":0,"80":0,"81":0,"82":0,"84":0,"85":0,"86":0,"88":0,"90":0,"92":0,"93":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"117":0,"118":0,"121":0,"122":0,"123":0,"124":0,"125":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"135":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"152":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"169":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"179":0,"180":0,"181":0,"183":0,"184":0,"187":0,"189":0,"190":0,"191":0,"192":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"219":0,"220":0,"221":0,"222":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"234":0,"235":0,"236":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"254":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":8269},"end":{"line":255,"column":1}},"locations":[{"start":{"line":1,"column":8269},"end":{"line":255,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":8269},"end":{"line":255,"column":1}},"loc":{"start":{"line":1,"column":8269},"end":{"line":255,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/views/ConseilView.tsx": {"path":"/home/desk/code/4NK_IA_front/src/views/ConseilView.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":8}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":57}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":51}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":39}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":69}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":19}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":44}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":46}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":48}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":12}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":14}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":31}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":16}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":12}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":14}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":71}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":30}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":80}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":14}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":15}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":23}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":34}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":16}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":15}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":62}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":90}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":20}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":88}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":17}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":10}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":12}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":44}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":62}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":19}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":69}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":14}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":50}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":67}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":25}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":18}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":19}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":21}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":35}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":36}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":40}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":16}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":74}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":40}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":27}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":20}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":98}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":78}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":25}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":24}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":15}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":64}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":42}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":18}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":27}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":54}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":73}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":74}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":29}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":28}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":81}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":42}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":36}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":55}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":37}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":63}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":31}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":21}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":23}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":28}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":19}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":16}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":42}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":18}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":27}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":54}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":69}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":67}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":29}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":28}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":61}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":42}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":36}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":84}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":37}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":35}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":38}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":49}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":80}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":96}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":26}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":24}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":31}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":21}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":23}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":28}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":19}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":16}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":14}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":14}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":23}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":50}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":68}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":25}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":18}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":61}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":38}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":32}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":48}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":33}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":31}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":50}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":36}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":20}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":27}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":17}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":19}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":24}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":15}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":14}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":23}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":50}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":25}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":68}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":21}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":35}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":72}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":34}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":15}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":23}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":41}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":23}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":41}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":23}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":18}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":24}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":15}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":52}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":48}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":23}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":73}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":17}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":79}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":29}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":32}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":14}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":17}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":72}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":29}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":32}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":14}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":17}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":74}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":26}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":32}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":14}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":16}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":61}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":23}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":16}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":12}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":13}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":1}}},"s":{"0":0,"1":0,"16":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"33":0,"35":0,"36":0,"37":0,"38":0,"39":0,"41":0,"42":0,"43":0,"44":0,"46":0,"47":0,"49":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"62":0,"63":0,"64":0,"65":0,"67":0,"68":0,"70":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"82":0,"83":0,"84":0,"85":0,"87":0,"89":0,"91":0,"92":0,"93":0,"94":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"115":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"168":0,"169":0,"170":0,"171":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"191":0,"192":0,"193":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"203":0,"204":0,"206":0,"207":0,"209":0,"210":0,"211":0,"212":0,"215":0,"216":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"238":0,"239":0,"240":0,"241":0,"243":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":7542},"end":{"line":244,"column":1}},"locations":[{"start":{"line":1,"column":7542},"end":{"line":244,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":7542},"end":{"line":244,"column":1}},"loc":{"start":{"line":1,"column":7542},"end":{"line":244,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/views/ContexteView.tsx": {"path":"/home/desk/code/4NK_IA_front/src/views/ContexteView.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":57}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":55}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":40}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":69}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":29}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":19}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":44}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":5}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":48}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":12}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":14}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":31}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":16}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":15}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":12}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":14}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":71}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":30}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":91}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":14}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":23}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":12}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":14}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":34}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":16}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":15}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":47}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":78}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":68}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":40}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":10}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":12}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":44}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":19}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":69}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":29}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":48}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":66}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":17}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":64}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":30}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":66}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":32}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":14}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":17}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":66}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":32}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":68}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":32}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":14}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":17}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":66}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":32}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":68}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":32}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":14}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":17}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":62}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":28}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":64}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":32}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":14}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":17}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":66}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":32}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":68}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":32}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":14}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":16}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":96}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":88}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":23}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":16}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":19}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":56}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":64}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":37}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":71}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":19}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":84}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":68}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":28}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":30}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":16}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":18}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":29}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":28}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":43}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":19}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":76}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":71}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":29}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":20}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":37}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":22}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":29}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":20}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":19}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":56}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":64}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":40}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":70}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":19}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":86}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":70}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":28}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":30}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":16}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":18}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":29}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":28}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":45}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":19}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":76}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":73}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":29}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":20}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":37}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":22}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":29}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":20}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":19}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":56}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":64}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":43}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":70}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":19}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":86}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":70}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":28}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":30}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":16}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":18}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":29}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":28}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":45}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":19}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":76}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":73}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":29}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":20}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":37}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":22}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":29}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":20}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":19}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":56}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":64}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":39}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":66}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":19}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":82}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":66}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":28}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":30}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":16}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":18}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":29}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":28}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":41}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":19}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":76}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":69}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":29}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":20}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":37}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":22}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":29}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":20}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":19}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":56}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":64}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":41}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":70}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":19}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":86}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":70}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":28}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":30}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":16}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":18}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":29}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":28}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":45}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":19}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":76}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":73}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":29}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":20}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":37}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":22}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":29}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":20}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":14}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":23}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":50}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":25}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":50}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":21}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":35}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":76}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":34}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":15}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":23}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":41}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":23}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":18}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":24}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":15}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":12}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":13}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":1}}},"s":{"0":0,"1":0,"15":0,"26":0,"27":0,"28":0,"30":0,"31":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0,"39":0,"40":0,"42":0,"43":0,"44":0,"45":0,"47":0,"48":0,"50":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"61":0,"63":0,"64":0,"65":0,"66":0,"68":0,"69":0,"71":0,"73":0,"74":0,"75":0,"77":0,"78":0,"79":0,"81":0,"82":0,"83":0,"85":0,"87":0,"89":0,"90":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"152":0,"154":0,"156":0,"157":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"181":0,"183":0,"185":0,"186":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"210":0,"212":0,"214":0,"215":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"239":0,"241":0,"243":0,"244":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"268":0,"270":0,"272":0,"273":0,"276":0,"277":0,"278":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"288":0,"289":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"298":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":9799},"end":{"line":299,"column":1}},"locations":[{"start":{"line":1,"column":9799},"end":{"line":299,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":9799},"end":{"line":299,"column":1}},"loc":{"start":{"line":1,"column":9799},"end":{"line":299,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/views/ExtractionView.tsx": {"path":"/home/desk/code/4NK_IA_front/src/views/ExtractionView.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":8}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":57}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":56}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":45}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":35}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":72}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":29}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":19}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":47}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":51}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":51}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":12}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":14}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":31}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":16}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":12}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":14}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":71}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":30}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":72}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":14}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":15}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":26}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":12}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":14}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":34}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":16}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":10}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":12}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":44}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":19}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":69}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":48}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":23}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":66}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":17}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":33}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":60}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":29}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":32}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":14}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":17}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":36}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":62}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":31}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":32}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":14}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":17}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":33}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":85}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":79}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":32}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":14}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":16}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":16}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":64}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":42}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":18}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":27}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":54}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":68}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":72}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":29}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":28}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":81}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":42}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":35}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":33}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":52}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":74}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":50}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":35}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":31}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":74}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":51}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":41}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":52}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":76}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":63}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":43}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":54}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":76}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":67}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":43}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":74}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":82}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":41}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":32}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":24}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":31}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":21}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":23}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":28}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":19}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":16}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":42}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":18}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":27}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":54}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":72}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":70}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":29}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":28}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":79}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":42}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":35}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":70}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":78}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":24}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":31}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":21}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":23}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":28}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":19}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":16}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":14}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":64}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":42}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":18}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":27}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":54}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":66}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":68}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":29}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":28}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":81}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":42}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":35}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":79}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":35}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":31}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":74}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":55}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":41}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":50}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":76}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":62}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":43}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":61}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":76}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":71}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":43}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":32}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":24}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":31}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":21}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":23}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":28}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":19}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":16}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":42}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":18}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":27}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":54}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":73}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":70}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":29}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":28}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":80}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":42}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":35}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":122}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":35}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":31}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":74}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":64}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":41}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":47}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":76}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":53}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":43}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":74}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":64}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":41}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":32}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":24}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":31}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":21}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":23}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":28}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":19}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":16}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":14}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":14}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":23}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":50}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":79}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":25}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":24}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":78}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":38}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":54}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":27}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":17}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":19}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":24}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":15}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":14}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":23}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":50}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":25}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":18}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":19}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":21}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":35}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":31}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":33}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":16}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":74}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":39}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":27}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":20}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":24}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":15}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":12}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":13}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":1}}},"s":{"0":0,"1":0,"14":0,"22":0,"23":0,"24":0,"26":0,"27":0,"28":0,"29":0,"30":0,"32":0,"33":0,"34":0,"35":0,"36":0,"38":0,"39":0,"40":0,"41":0,"43":0,"44":0,"46":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"57":0,"59":0,"60":0,"61":0,"62":0,"64":0,"65":0,"67":0,"69":0,"70":0,"71":0,"73":0,"75":0,"77":0,"78":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"103":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"131":0,"132":0,"133":0,"134":0,"136":0,"137":0,"138":0,"139":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"172":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"196":0,"197":0,"198":0,"199":0,"201":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"234":0,"235":0,"236":0,"237":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"265":0,"266":0,"267":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"287":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":9931},"end":{"line":288,"column":1}},"locations":[{"start":{"line":1,"column":9931},"end":{"line":288,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":9931},"end":{"line":288,"column":1}},"loc":{"start":{"line":1,"column":9931},"end":{"line":288,"column":1}},"line":1}},"f":{"0":0}} +,"/home/desk/code/4NK_IA_front/src/views/UploadView.tsx": {"path":"/home/desk/code/4NK_IA_front/src/views/UploadView.tsx","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":44}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":99}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":57}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":55}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":55}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":38}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":35}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":72}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":79}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":39}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":38}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":6}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":14}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":69}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":11}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":13}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":34}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":29}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":31}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":91}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":6}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":19}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":45}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":23}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":46}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":19}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":38}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":24}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":45}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":14}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":48}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":46}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":21}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":24}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":22}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":24}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":24}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":14}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":24}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":10}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":12}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":44}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":19}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":12}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":27}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":13}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":15}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":30}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":28}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":31}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":66}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":70}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":22}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":40}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":36}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":12}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":10}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":38}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":75}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":46}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":43}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":75}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":21}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":59}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":21}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":14}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":17}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":47}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":16}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":32}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":28}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":48}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":53}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":38}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":44}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":72}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":37}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":96}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":68}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":49}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":61}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":34}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":35}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":26}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":48}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":29}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":36}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":50}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":63}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":61}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":23}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":31}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":26}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":24}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":62}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":25}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":38}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":34}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":40}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":22}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":25}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":40}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":34}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":103}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":22}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":25}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":73}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":34}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":40}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":22}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":24}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":24}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":21}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":15}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":17}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":14}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":27}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":20}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":36}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":50}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":10}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":13}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"10":0,"11":0,"12":0,"13":0,"16":0,"17":0,"18":0,"19":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"68":0,"69":0,"70":0,"72":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"98":0,"99":0,"101":0,"102":0,"103":0,"104":0,"107":0,"108":0,"109":0,"110":0,"111":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"132":0,"133":0,"134":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"161":0,"162":0,"163":0,"164":0,"165":0,"167":0,"169":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":5296},"end":{"line":170,"column":1}},"locations":[{"start":{"line":1,"column":5296},"end":{"line":170,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":5296},"end":{"line":170,"column":1}},"loc":{"start":{"line":1,"column":5296},"end":{"line":170,"column":1}},"line":1}},"f":{"0":0}} } diff --git a/coverage/index.html b/coverage/index.html index fde98b3..dc620a2 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -25,28 +25,28 @@
0% Statements - 0/36 + 0/1753
- 0% + 5.55% Branches - 0/2 + 1/18
- 0% + 5.55% Functions - 0/2 + 1/18
0% Lines - 0/36 + 0/1753
@@ -79,33 +79,138 @@ - App.tsx + 4NK_IA_front
0% - 0/27 + 0/57 0% 0/1 0% 0/1 0% - 0/27 + 0/57 - main.tsx + 4NK_IA_front/src
0% - 0/9 + 0/24 + 0% + 0/2 + 0% + 0/2 + 0% + 0/24 + + + + 4NK_IA_front/src/components + +
+ + 0% + 0/227 + 0% + 0/3 + 0% + 0/3 + 0% + 0/227 + + + + 4NK_IA_front/src/router + +
+ + 0% + 0/23 0% 0/1 0% 0/1 0% - 0/9 + 0/23 + + + + 4NK_IA_front/src/services + +
+ + 0% + 0/266 + 0% + 0/1 + 0% + 0/1 + 0% + 0/266 + + + + 4NK_IA_front/src/store + +
+ + 0% + 0/114 + 0% + 0/3 + 0% + 0/3 + 0% + 0/114 + + + + 4NK_IA_front/src/theme + +
+ + 0% + 0/64 + 0% + 0/1 + 0% + 0/1 + 0% + 0/64 + + + + 4NK_IA_front/src/types + +
+ + 0% + 0/0 + 0% + 1/1 + 0% + 1/1 + 0% + 0/0 + + + + 4NK_IA_front/src/views + +
+ + 0% + 0/978 + 0% + 0/5 + 0% + 0/5 + 0% + 0/978 @@ -116,7 +221,7 @@