feat: mode hybride Ollama — gemma3:27b pour CPAM, 12b pour codage

Le pipeline utilise désormais gemma3:12b (rapide) pour le codage CIM-10
et gemma3:27b (meilleur raisonnement) pour la contre-argumentation CPAM.
Configurable via OLLAMA_MODEL_CPAM et OLLAMA_TIMEOUT_CPAM.

Inclut aussi : traçabilité source/page DAS, niveaux CMA ATIH, sévérité,
page tracker PDF, améliorations fusion et filtres DAS.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
dom
2026-02-17 17:53:53 +01:00
parent 4ef42dd3d3
commit 01d47f3c4b
20 changed files with 1025 additions and 98 deletions

View File

@@ -192,7 +192,7 @@ class TestSplitDocuments:
# --- Test intégration process_pdf ---
class TestProcessPdfMulti:
@patch("src.main.extract_text")
@patch("src.main.extract_text_with_pages")
@patch("src.main.extract_medical_info")
@patch("src.main._run_edsnlp", return_value=None)
@patch("src.main._use_edsnlp", False)
@@ -202,9 +202,10 @@ class TestProcessPdfMulti:
from pathlib import Path
from src.main import process_pdf
from src.config import DossierMedical, Diagnostic
from src.extraction.page_tracker import PageTracker
# Mock extract_text retournant un texte multi-épisodes Trackare
mock_extract.return_value = TRACKARE_MULTI
# Mock extract_text_with_pages retournant un texte multi-épisodes Trackare
mock_extract.return_value = (TRACKARE_MULTI, PageTracker([(0, len(TRACKARE_MULTI))]))
# Mock extract_medical_info retournant un DossierMedical minimal
mock_medical.return_value = DossierMedical(