"""Форматирование коротких ответов для режимов not_found, ambiguous, insufficient."""

from __future__ import annotations


class RuntimeShortAnswerFormatter:
    def open_file_not_found(self, target: str) -> str:
        return f"Файл {target} не найден."

    def entity_not_found(self, target: str, alternatives: list[str]) -> str:
        base = f"Сущность {target} не найдена в доступном коде."
        suffix = self._alternatives(alternatives)
        return f"{base} {suffix}".strip()

    def entity_ambiguous(self, target: str, alternatives: list[str]) -> str:
        base = f"Сущность {target} не удалось однозначно разрешить."
        suffix = self._alternatives(alternatives)
        return f"{base} {suffix}".strip()

    def insufficient(self, message: str) -> str:
        normalized = (message or "").strip()
        if normalized:
            return normalized
        return "Недостаточно подтверждённых данных для уверенного ответа."

    def related_only(self, target: str, alternatives: list[str]) -> str:
        base = f"Прямых подтверждений для сущности {target} не найдено."
        suffix = self._alternatives(alternatives)
        return f"{base} {suffix}".strip()

    def _alternatives(self, alternatives: list[str]) -> str:
        items = [item.strip() for item in alternatives if item and item.strip()]
        if not items:
            return ""
        return f"Близкие варианты: {', '.join(items[:3])}."
