feat: lint_audit.py calibre + TYPES_CANONIQUES source unique

- lint_audit.py : moteur d'audit groupe par data quality dimensions
  (completeness, accuracy, consistency, validity, uniqueness, freshness)
- charger() : passe #type globale (voit tous les types reels, dont les intrus)
- VAL-type : valide le label type contre la liste canonique (ignore container)
- dependDe elargi (domaine +service, portee +outil) : faux positif supprime
- TYPES_CANONIQUES dans trilium_api.py : source unique partagee Lint + create_entite
- create_entite aligne sur TYPES_CANONIQUES, couvre les 10 types connaissance/technique
Etage 1 lecture seule : 348 notes, 29 anomalies reelles, 0 faux positif.
This commit is contained in:
2026-07-03 13:05:27 +02:00
parent f883af4dcc
commit ced9b37d4a
5 changed files with 836 additions and 2 deletions
+15 -2
View File
@@ -504,14 +504,27 @@ def tool_create_entite(type, projet, titre, contenu=None, definition=None):
via trilium_ids.json. Garde-fou anti-doublon sur le titre dans le dossier cible.
La permission projet est comportementale (le tool accepte tout projet)."""
import json, os
from trilium_api import create_note, get_note_id, set_label, find_note_by_title
from trilium_api import create_note, get_note_id, set_label, find_note_by_title, TYPES_CANONIQUES
# Routage dossier : uniquement la couche connaissance/technique.
# Les types de pilotage (backlogItem, decision...) ont leurs tools dedies.
MAPPING = {
"concept": "Concepts",
"composantLogiciel": "EnvironnementTechnique",
"service": "EnvironnementTechnique",
"infrastructure": "EnvironnementTechnique",
"outil": "EnvironnementTechnique",
"contrainte": "EnvironnementTechnique",
"principe": "EnvironnementTechnique",
"convention": "EnvironnementTechnique",
"methode": "Methodes",
"version": "EnvironnementTechnique",
}
# 1. Validite du type (source unique : ontologie via TYPES_CANONIQUES)
if type not in TYPES_CANONIQUES:
return {"error": "Type inconnu : %s. Types canoniques : %s" % (type, ", ".join(TYPES_CANONIQUES))}
# 2. Ce tool ne cree que la couche connaissance/technique
if type not in MAPPING:
return {"error": "Type non supporte : %s. Types valides : %s" % (type, ", ".join(MAPPING.keys()))}
return {"error": "Type '%s' valide mais non creable ici (type de pilotage : utiliser son tool dedie add_*)." % type}
with open(os.path.expanduser("~/App/Context_continuity/trilium_ids.json")) as f:
ids = json.load(f)
dossier_cle = MAPPING[type]