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:
44
src/main.py
44
src/main.py
@@ -144,9 +144,9 @@ def main(input_path: str | None = None) -> None:
|
||||
)
|
||||
parser.add_argument(
|
||||
"input",
|
||||
nargs="?",
|
||||
default=input_path or "input/",
|
||||
help="Chemin vers un PDF ou un dossier de PDFs (défaut: input/)",
|
||||
nargs="*",
|
||||
default=[input_path or "input/"],
|
||||
help="Chemin(s) vers des PDFs, dossiers patients, ou le dossier racine (défaut: input/)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-ner",
|
||||
@@ -209,28 +209,34 @@ def main(input_path: str | None = None) -> None:
|
||||
if args.no_rag:
|
||||
_use_rag = False
|
||||
|
||||
input_p = Path(args.input)
|
||||
input_paths = args.input
|
||||
|
||||
# Collecte des groupes (pdfs, subdir) à traiter
|
||||
groups: list[tuple[list[Path], str | None]] = []
|
||||
|
||||
if input_p.is_file():
|
||||
groups.append(([input_p], None))
|
||||
elif input_p.is_dir():
|
||||
# PDFs à la racine
|
||||
root_pdfs = sorted(input_p.glob("*.pdf"))
|
||||
if root_pdfs:
|
||||
groups.append((root_pdfs, None))
|
||||
for p in input_paths:
|
||||
input_p = Path(p)
|
||||
if input_p.is_file():
|
||||
# Fichier unique → subdir = nom du dossier parent (si ce n'est pas input/)
|
||||
subdir = input_p.parent.name if input_p.parent.name != "input" else None
|
||||
groups.append(([input_p], subdir))
|
||||
elif input_p.is_dir():
|
||||
# Vérifier s'il y a des PDFs directement dans ce dossier
|
||||
root_pdfs = sorted(input_p.glob("*.pdf"))
|
||||
# Vérifier s'il y a des sous-dossiers avec PDFs
|
||||
sub_dirs = [c for c in sorted(input_p.iterdir()) if c.is_dir() and list(c.glob("*.pdf"))]
|
||||
|
||||
# Sous-dossiers directs (un seul niveau)
|
||||
for child in sorted(input_p.iterdir()):
|
||||
if child.is_dir():
|
||||
sub_pdfs = sorted(child.glob("*.pdf"))
|
||||
if sub_pdfs:
|
||||
if sub_dirs:
|
||||
# C'est un dossier racine (comme input/) → traiter chaque sous-dossier
|
||||
for child in sub_dirs:
|
||||
sub_pdfs = sorted(child.glob("*.pdf"))
|
||||
groups.append((sub_pdfs, child.name))
|
||||
else:
|
||||
logger.error("Chemin introuvable : %s", input_p)
|
||||
sys.exit(1)
|
||||
elif root_pdfs:
|
||||
# C'est un dossier patient directement → utiliser son nom comme subdir
|
||||
groups.append((root_pdfs, input_p.name))
|
||||
else:
|
||||
logger.error("Chemin introuvable : %s", input_p)
|
||||
sys.exit(1)
|
||||
|
||||
total = sum(len(pdfs) for pdfs, _ in groups)
|
||||
if total == 0:
|
||||
|
||||
Reference in New Issue
Block a user