"""Dictée opt-in (R5 D5, ADR-004 §5) : off par défaut (aucune dépendance audio requise), déterministe en CI/tests. Le vrai moteur (faster-whisper) se vérifie en recette réelle (convention R5.1 — pas de mesure préalable demandée par le référent, 22/07/2026).""" import pytest from siop_ai.config import charger_reglages from siop_ai.transcription import TranscripteurDeterministe, construire_transcripteur def test_off_par_defaut_ne_construit_rien(): assert construire_transcripteur("off", "small") is None def test_deterministe_stable_et_derive_la_taille(): transcripteur = construire_transcripteur("deterministe", "small") assert isinstance(transcripteur, TranscripteurDeterministe) texte = transcripteur.transcrire(b"12345", "m4a") assert "5 octets" in texte assert ".m4a" in texte assert transcripteur.transcrire(b"12345", "m4a") == texte # stable def test_mode_inconnu_refuse_au_boot(monkeypatch): monkeypatch.setenv("AI_TRANSCRIPTION", "toujours") with pytest.raises(ValueError, match="AI_TRANSCRIPTION"): charger_reglages() def test_modele_configurable(monkeypatch): monkeypatch.setenv("AI_TRANSCRIPTION", "deterministe") monkeypatch.setenv("AI_TRANSCRIPTION_MODEL", "medium") reglages = charger_reglages() assert reglages.ai_transcription == "deterministe" assert reglages.ai_transcription_model == "medium"