This commit is contained in:
nBiqoz
2025-09-12 16:54:40 +02:00
parent d7d3a3c7e9
commit 130929b756
4 changed files with 41 additions and 52 deletions

View File

@@ -175,8 +175,8 @@ export async function POST(req: NextRequest) {
// ✅ Définir l'URL AVANT de l'utiliser
const presidioAnalyzerUrl =
// "http://analyzer.151.80.20.211.sslip.io/analyze";
"http://localhost:5001/analyze";
"http://analyzer.151.80.20.211.sslip.io/analyze";
// "http://localhost:5001/analyze";
try {
const analyzeResponse = await fetch(presidioAnalyzerUrl, {
method: "POST",
@@ -213,8 +213,8 @@ export async function POST(req: NextRequest) {
console.log("🔍 Appel à Presidio Anonymizer...");
const presidioAnonymizerUrl =
// "http://analyzer.151.80.20.211.sslip.io/anonymize";
"http://localhost:5001/anonymize";
"http://analyzer.151.80.20.211.sslip.io/anonymize";
// "http://localhost:5001/anonymize";
const anonymizeResponse = await fetch(presidioAnonymizerUrl, {
method: "POST",
@@ -253,36 +253,33 @@ export async function POST(req: NextRequest) {
) => {
const replacementMap: Record<string, string> = {};
// Extraire tous les remplacements [XXX] du texte anonymisé
const replacementPattern = /\[[^\]]+\]/g;
const foundReplacements =
anonymizedText.match(replacementPattern) || [];
console.log(
"🔍 Remplacements trouvés dans le texte anonymisé:",
foundReplacements
);
// Trier les entités par position
const sortedResults = [...analyzerResults].sort(
(a, b) => a.start - b.start
);
// Associer chaque entité avec son remplacement correspondant
sortedResults.forEach((result, index) => {
// Pour chaque entité, trouver son remplacement dans le texte anonymisé
let searchOffset = 0;
sortedResults.forEach((result) => {
const originalValue = originalText.substring(
result.start,
result.end
);
if (index < foundReplacements.length) {
// Utiliser le remplacement correspondant par ordre d'apparition
replacementMap[originalValue] = foundReplacements[index];
// Chercher le prochain remplacement [XXX] après la position courante
const replacementPattern = /\[[^\]]+\]/g;
replacementPattern.lastIndex = searchOffset;
const match = replacementPattern.exec(anonymizedText);
if (match) {
replacementMap[originalValue] = match[0];
searchOffset = match.index + match[0].length;
console.log(
`✅ Mapping ordonné: "${originalValue}" -> "${foundReplacements[index]}"`
`✅ Mapping positionnel: "${originalValue}" -> "${match[0]}"`
);
} else {
// Fallback si pas assez de remplacements trouvés
// Fallback
const fallbackValue = `[${result.entity_type.toUpperCase()}]`;
replacementMap[originalValue] = fallbackValue;
console.log(

View File

@@ -48,11 +48,8 @@ export const AnonymizationInterface = ({
anonymizedTypes.add("Adresses");
}
// FLEXIBLE_DATE ou DATE_TIME -> Dates
if (
outputText.includes("<FLEXIBLE_DATE>") ||
outputText.includes("<DATE_TIME>")
) {
// DATE -> Dates
if (outputText.includes("<DATE>") || outputText.includes("<DATE>")) {
anonymizedTypes.add("Dates");
}

View File

@@ -80,7 +80,7 @@ export const useAnonymization = ({
presidioResults: presidioResults,
replacementValues: replacementValues,
replacementValuesKeys: Object.keys(replacementValues),
replacementValuesEntries: Object.entries(replacementValues)
replacementValuesEntries: Object.entries(replacementValues),
});
// ÉTAPE 2 : Passer le texte ORIGINAL à l'état de sortie.
@@ -102,7 +102,7 @@ export const useAnonymization = ({
entity_type,
detectedText,
replacementFromMap: replacementValues[detectedText],
fallback: `[${entity_type}]`
fallback: `[${entity_type}]`,
});
mappings.push({
@@ -110,8 +110,8 @@ export const useAnonymization = ({
start: start,
end: end,
text: detectedText,
replacementValue: replacementValues[detectedText] || `[${entity_type}]`,
displayName: replacementValues[detectedText], // CORRECTION: Supprimer le fallback
replacementValue: replacementValues[detectedText],
displayName: replacementValues[detectedText],
customColor: undefined,
});
}

View File

@@ -46,17 +46,11 @@ export const useTextParsing = (
});
}
// Utiliser displayName au lieu de entity_type
// Ligne 45 - Ajouter du debug
console.log("useTextParsing - mapping:", {
text: mapping.text,
displayName: mapping.displayName,
entity_type: mapping.entity_type,
});
const anonymizedText =
mapping.displayName || `[${mapping.entity_type.toUpperCase()}]`;
// Utiliser displayName directement SANS fallback
const anonymizedText = mapping.displayName;
// Ne créer le segment que si displayName existe
if (anonymizedText) {
segments.push({
text: mapping.text,
displayText: anonymizedText,
@@ -67,6 +61,7 @@ export const useTextParsing = (
entityIndex: mappingIndex,
mapping: mapping,
});
}
currentIndex = mapping.end; // CORRECTION: utiliser 'end'
});