# Trouve-KA — hachage de contenu et détection de changement # Author: Simon-Pierre Boucher # Contact: contact@spboucher.ai """Hachage de contenu pour la déduplication exacte et la détection de changement. Le hash est calculé sur le texte extrait normalisé (pas le HTML brut) pour ignorer le bruit de balisage (nonces, timestamps de rendu, etc.). """ import hashlib import re _WHITESPACE = re.compile(r"\s+") def text_fingerprint(text: str) -> str: """Texte normalisé pour hachage : espaces réduits, minuscules.""" return _WHITESPACE.sub(" ", text).strip().lower() def content_hash(title: str, body: str) -> str: """SHA-256 du contenu textuel normalisé (titre + corps).""" payload = text_fingerprint(title) + "\n" + text_fingerprint(body) return hashlib.sha256(payload.encode("utf-8")).hexdigest()