logs good, replacement good

This commit is contained in:
nBiqoz
2025-09-07 18:01:14 +02:00
parent 3a84da5c74
commit 0360e1ca9f
3 changed files with 147 additions and 74 deletions

View File

@@ -251,58 +251,33 @@ export async function POST(req: NextRequest) {
analyzerResults: AnalyzerResult[]
) => {
const replacementMap: Record<string, string> = {};
// Approche simple : comparer caractère par caractère
let originalIndex = 0;
let anonymizedIndex = 0;
// Trier les résultats par position
const sortedResults = [...analyzerResults].sort(
(a, b) => a.start - b.start
);
for (const result of sortedResults) {
const originalValue = originalText.substring(
result.start,
result.end
);
// Avancer jusqu'à la position de l'entité dans le texte original
while (originalIndex < result.start) {
originalIndex++;
anonymizedIndex++;
}
// Maintenant on est au début de l'entité
// Dans le texte anonymisé, on doit avoir un remplacement qui commence par '['
if (anonymizedText[anonymizedIndex] === "[") {
// Trouver la fin du remplacement (le ']')
let endBracket = anonymizedIndex;
while (
endBracket < anonymizedText.length &&
anonymizedText[endBracket] !== "]"
) {
endBracket++;
}
endBracket++; // Inclure le ']'
const replacementValue = anonymizedText.substring(
anonymizedIndex,
endBracket
);
replacementMap[originalValue] = replacementValue;
// Avancer les index
originalIndex = result.end;
anonymizedIndex = endBracket;
// 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) => {
const originalValue = originalText.substring(result.start, result.end);
if (index < foundReplacements.length) {
// Utiliser le remplacement correspondant par ordre d'apparition
replacementMap[originalValue] = foundReplacements[index];
console.log(`✅ Mapping ordonné: "${originalValue}" -> "${foundReplacements[index]}"`);
} else {
// Si pas de '[', avancer normalement
originalIndex = result.end;
anonymizedIndex += result.end - result.start;
// Fallback si pas assez de remplacements trouvés
const fallbackValue = `[${result.entity_type.toUpperCase()}]`;
replacementMap[originalValue] = fallbackValue;
console.log(`⚠️ Fallback: "${originalValue}" -> "${fallbackValue}"`);
}
}
console.log("🔧 Valeurs de remplacement extraites:", replacementMap);
});
console.log("🔧 Mapping final:", replacementMap);
return replacementMap;
};