feat(wiki-glossary): Workflow de dédoublonnage (chaîne + embeddings) pour concepts proposés
Provenance : adapté depuis
fyl-guidelines#13(généralisé). Fait partie de l'EPIC #3. Dépend de la sous-issue "Hook optionnel d'extraction de glossaire" (même fichier, schéma partagé).
Contexte
Pour les concepts métier sans source machine-lisible, l'agent ingest propose aujourd'hui de nouvelles pages concept sans aucun dédoublonnage — une dérive terminologique ou une fusion sémantique incorrecte n'est détectée, au mieux, qu'au batch hebdomadaire de consolidate.
Détails d'implémentation
- Toute nouvelle entrée de concept proposée par
ingestportestatus: "llm-proposed". - Check bloquant (similarité de chaînes) : comparer le nouveau terme/alias à tous les alias existants (Levenshtein normalisé ou Jaccard sur tokens). Au-dessus d'un seuil calibrable, rejet automatique — force une décision explicite (fusion ou nouvelle entrée justifiée).
- Check de signal (embeddings) : comparer la description du nouveau terme aux descriptions existantes. Non bloquant (faux positifs possibles) — flague pour révision humaine les concepts sémantiquement proches mais lexicalement différents.
- Validation humaine explicite requise pour passer de
"llm-proposed"à"human-approved". - Champ
deprecated_aliasesavecreasonpour tracer les corrections historiques.
Critères d'acceptation
-
Check de similarité de chaînes opérationnel et bloquant à la proposition d'un nouvel alias -
Check de similarité d'embeddings opérationnel, produisant un flag de révision (non bloquant) -
Workflow de validation humaine llm-proposed→human-approveddocumenté et testé -
Test : proposer un alias quasi-identique à un existant — doit être rejeté automatiquement -
Test : proposer un terme sémantiquement proche mais lexicalement différent — doit être flagué pour révision, pas rejeté ni accepté silencieusement