feat: interface admin regles, refactoring viewer, README, pyproject.toml

- Nouveau module rules_manager.py : CRUD YAML pour les regles metier
- Nouveau blueprint bp_rules.py + template admin_rules.html :
  interface web pour activer/desactiver/ajouter/supprimer des regles
- Extraction helpers.py depuis app.py (filtres Jinja2, statistiques,
  scan dossiers, status systeme) — app.py passe de 1585 a 482 lignes
- Suppression backward-compat re-exports dans cim10_extractor et
  cpam_response (imports corriges dans les tests)
- README.md : architecture, modules, installation, utilisation
- pyproject.toml : dependencies completes, config ruff, pytest, coverage

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
dom
2026-03-07 19:11:27 +01:00
parent 2478928798
commit 1e837c2758
13 changed files with 1694 additions and 1103 deletions

View File

@@ -19,28 +19,32 @@ from src.config import (
Traitement,
)
from src.control.cpam_response import (
_assess_dossier_strength,
_build_bio_confrontation,
_build_bio_summary,
_build_correction_prompt,
_build_cpam_prompt,
_build_tagged_context,
_BIO_THRESHOLDS,
_check_das_bio_coherence,
_extraction_pass,
_format_response,
_fuzzy_match_ref,
_get_cim10_definitions,
_get_code_label,
_sanitize_unauthorized_codes,
_search_rag_for_control,
_validate_adversarial,
_validate_codes_in_response,
_validate_grounding,
_validate_references,
_assess_quality_tier,
generate_cpam_response,
)
from src.control.cpam_context import (
_assess_dossier_strength,
_build_bio_confrontation,
_build_bio_summary,
_BIO_THRESHOLDS,
_check_das_bio_coherence,
_get_cim10_definitions,
_get_code_label,
)
from src.control.cpam_validation import (
_assess_quality_tier,
_fuzzy_match_ref,
_sanitize_unauthorized_codes,
_validate_adversarial,
)
def _make_dossier() -> DossierMedical:

View File

@@ -176,8 +176,8 @@ class TestBioNormesInContext:
assert "[N: min-max]" in prompt
def test_bio_normals_exported(self):
"""BIO_NORMALS est bien exporté depuis cim10_extractor."""
from src.medical.cim10_extractor import BIO_NORMALS
"""BIO_NORMALS est bien exporté depuis bio_normals."""
from src.medical.bio_normals import BIO_NORMALS
assert "Créatinine" in BIO_NORMALS
assert BIO_NORMALS["Créatinine"] == (50, 120)

View File

@@ -3,12 +3,10 @@
import pytest
from src.config import DossierMedical, Diagnostic, Antecedent, Complication
from src.medical.cim10_extractor import (
extract_medical_info,
_lookup_cim10,
_is_abnormal,
_is_valid_antecedent,
)
from src.medical.cim10_extractor import extract_medical_info
from src.medical.diagnostic_extraction import _lookup_cim10
from src.medical.bio_normals import _is_abnormal
from src.medical.cim10_extractor import _is_valid_antecedent
from src.medical.cim10_dict import normalize_text, load_dict, lookup, reset_cache
from src.extraction.document_classifier import classify, classify_with_confidence

View File

@@ -6,7 +6,8 @@ import pytest
from pathlib import Path
from unittest.mock import patch
from src.viewer.app import create_app, compute_group_stats, severity_badge, format_duration, format_cpam_text
from src.viewer.app import create_app
from src.viewer.helpers import compute_group_stats, severity_badge, format_duration, format_cpam_text
from src.viewer.pdf_redactor import load_entities_from_report, redact_pdf, highlight_text
from src.config import DossierMedical, Diagnostic, ActeCCAM