feat: output miroir de input, viewer lisible, mode 100% local

- CLI accepte plusieurs chemins en entrée (nargs="*")
- Un dossier patient passé directement utilise son nom comme subdir
- Filtres Jinja format_dossier_name (15_23096332 → Dossier 23096332)
  et format_doc_name (CRO_xxx_cim10 → CRO, Trackare, Fusionné)
- Sidebar : noms lisibles, fusionné mis en avant (★)
- NER CamemBERT en local_files_only (aucun appel réseau)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
dom
2026-02-11 22:52:10 +01:00
parent 31c29078a1
commit b38f87ac7a
5 changed files with 66 additions and 25 deletions

View File

@@ -4,6 +4,7 @@ from __future__ import annotations
import json
import logging
import re
from pathlib import Path
import requests
@@ -185,6 +186,30 @@ def severity_badge(value: str | None) -> Markup:
)
def format_dossier_name(name: str) -> str:
"""Transforme un nom de dossier en nom lisible (ex: 15_23096332 → Dossier 23096332)."""
if name == "racine":
return "Non classés"
m = re.match(r"^\d+_(\d+)$", name)
if m:
return f"Dossier {m.group(1)}"
return name
def format_doc_name(name: str) -> str:
"""Transforme un nom de fichier JSON en nom lisible."""
n = name.lower()
if "fusionne" in n:
return "Fusionné"
if n.startswith("cro") or n.startswith("crh"):
return name.split("_")[0].upper()
if "trackare" in n:
return "Trackare"
if "anapath" in n:
return "Anapath"
return name
# ---------------------------------------------------------------------------
# App factory
# ---------------------------------------------------------------------------
@@ -196,6 +221,8 @@ def create_app() -> Flask:
app.jinja_env.filters["confidence_label"] = confidence_label
app.jinja_env.filters["severity_badge"] = severity_badge
app.jinja_env.filters["format_duration"] = format_duration
app.jinja_env.filters["format_dossier_name"] = format_dossier_name
app.jinja_env.filters["format_doc_name"] = format_doc_name
ccam_dict = load_ccam_dict()