ok error
This commit is contained in:
@@ -54,7 +54,9 @@ export const useAnonymization = ({
|
||||
const textToProcess = sourceText || fileContent || "";
|
||||
|
||||
if (!textToProcess.trim()) {
|
||||
setError("Veuillez saisir du texte à anonymiser ou télécharger un fichier");
|
||||
setError(
|
||||
"Veuillez saisir du texte à anonymiser ou télécharger un fichier"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -69,7 +71,11 @@ export const useAnonymization = ({
|
||||
const formData = new FormData();
|
||||
|
||||
if (uploadedFile) {
|
||||
console.log("📁 Traitement fichier:", uploadedFile.name);
|
||||
console.log("📁 Traitement fichier:", {
|
||||
name: uploadedFile.name,
|
||||
type: uploadedFile.type,
|
||||
size: uploadedFile.size
|
||||
});
|
||||
formData.append("file", uploadedFile);
|
||||
} else {
|
||||
console.log("📝 Traitement texte saisi");
|
||||
@@ -79,13 +85,45 @@ export const useAnonymization = ({
|
||||
}
|
||||
|
||||
console.log("🔍 Appel à /api/process-document avec Presidio...");
|
||||
console.log("📦 FormData préparée:", Array.from(formData.entries()));
|
||||
|
||||
const response = await fetch("/api/process-document", {
|
||||
method: "POST",
|
||||
body: formData,
|
||||
});
|
||||
|
||||
console.log("📡 Réponse reçue:", {
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: Object.fromEntries(response.headers.entries())
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur API: ${response.status}`);
|
||||
let errorMessage = `Erreur HTTP: ${response.status}`;
|
||||
|
||||
try {
|
||||
const responseText = await response.text();
|
||||
console.log("📄 Contenu de l'erreur:", responseText);
|
||||
|
||||
if (responseText.trim()) {
|
||||
try {
|
||||
const errorData = JSON.parse(responseText);
|
||||
if (errorData.error) {
|
||||
errorMessage = errorData.error;
|
||||
console.log("✅ Message détaillé récupéré:", errorMessage);
|
||||
}
|
||||
} catch (jsonError) {
|
||||
console.error("❌ Erreur parsing JSON:", jsonError); // ✅ Utiliser la variable
|
||||
console.error("❌ Réponse non-JSON:", responseText);
|
||||
errorMessage = `Erreur ${response.status}: Réponse invalide du serveur`;
|
||||
}
|
||||
}
|
||||
} catch (readError) {
|
||||
console.error("❌ Impossible de lire la réponse:", readError);
|
||||
}
|
||||
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
const data: ProcessDocumentResponse = await response.json();
|
||||
@@ -98,30 +136,34 @@ export const useAnonymization = ({
|
||||
if (data.anonymizedText) {
|
||||
console.log("✅ Anonymisation réussie avec Presidio");
|
||||
setOutputText(data.anonymizedText);
|
||||
|
||||
|
||||
// Extraire les mappings depuis les résultats Presidio (plus d'erreur 'any')
|
||||
if (data.analyzerResults && data.text) {
|
||||
const mappings: EntityMapping[] = data.analyzerResults.map((entity: PresidioAnalyzerResult, index: number) => ({
|
||||
originalValue: data.text!.substring(entity.start, entity.end),
|
||||
anonymizedValue: `[${entity.entity_type}${index + 1}]`,
|
||||
entityType: entity.entity_type,
|
||||
startIndex: entity.start,
|
||||
endIndex: entity.end
|
||||
}));
|
||||
const mappings: EntityMapping[] = data.analyzerResults.map(
|
||||
(entity: PresidioAnalyzerResult, index: number) => ({
|
||||
originalValue: data.text!.substring(entity.start, entity.end),
|
||||
anonymizedValue: `[${entity.entity_type}${index + 1}]`,
|
||||
entityType: entity.entity_type,
|
||||
startIndex: entity.start,
|
||||
endIndex: entity.end,
|
||||
})
|
||||
);
|
||||
setEntityMappings(mappings);
|
||||
console.log("📋 Entités détectées:", mappings.length);
|
||||
console.log("🔍 Détails des entités:", mappings);
|
||||
}
|
||||
} else if (data.text) {
|
||||
console.log("⚠️ Fallback: Presidio non disponible, texte original retourné");
|
||||
console.log(
|
||||
"⚠️ Fallback: Presidio non disponible, texte original retourné"
|
||||
);
|
||||
setOutputText(data.text);
|
||||
setError("Presidio temporairement indisponible. Texte non anonymisé.");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("❌ Erreur anonymisation:", error);
|
||||
console.error("❌ Erreur anonymisation complète:", error);
|
||||
setError(
|
||||
error instanceof Error
|
||||
? `Erreur Presidio: ${error.message}`
|
||||
? error.message
|
||||
: "Erreur lors de l'anonymisation avec Presidio"
|
||||
);
|
||||
} finally {
|
||||
@@ -130,4 +172,4 @@ export const useAnonymization = ({
|
||||
};
|
||||
|
||||
return { anonymizeData, isProcessing };
|
||||
};
|
||||
};
|
||||
|
||||
@@ -47,7 +47,29 @@ export const useFileHandler = ({
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||
// ✅ Récupérer le message d'erreur détaillé du serveur
|
||||
let errorMessage = `Erreur HTTP: ${response.status}`;
|
||||
|
||||
try {
|
||||
const responseText = await response.text();
|
||||
console.log("🔍 Réponse brute du serveur:", responseText);
|
||||
|
||||
try {
|
||||
const errorData = JSON.parse(responseText);
|
||||
if (errorData.error) {
|
||||
errorMessage = errorData.error;
|
||||
console.log("✅ Message détaillé récupéré:", errorMessage);
|
||||
}
|
||||
} catch (jsonError) {
|
||||
console.error("❌ Erreur parsing JSON:", jsonError);
|
||||
console.error("❌ Réponse non-JSON:", responseText);
|
||||
errorMessage = `Erreur ${response.status}: ${responseText || 'Réponse invalide du serveur'}`;
|
||||
}
|
||||
} catch (readError) {
|
||||
console.error("❌ Impossible de lire la réponse:", readError);
|
||||
}
|
||||
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
Reference in New Issue
Block a user