# backend/app/multimodal/factory.py — get_stt()/get_vision() (env 주입 + auto 폴백)
from ..config import get_settings
from .stt import HeuristicSTT, OllamaWhisperSTT, STTProvider
from .vision import HeuristicVision, OllamaVisionVision, VisionProvider


def get_stt(force: str | None = None) -> STTProvider:
    mode = force or get_settings().stt_provider  # auto|ollama|heuristic
    if mode == "heuristic":
        return HeuristicSTT()
    if mode == "ollama":
        return OllamaWhisperSTT()
    p = OllamaWhisperSTT()  # auto
    return p if p.health().get("reachable") else HeuristicSTT()


def get_vision(force: str | None = None) -> VisionProvider:
    mode = force or get_settings().vision_provider
    if mode == "heuristic":
        return HeuristicVision()
    if mode == "ollama":
        return OllamaVisionVision()
    p = OllamaVisionVision()
    return p if p.health().get("reachable") else HeuristicVision()
