"""Multi-language AI translation for interviews, feedback, and prep."""

from app.schemas.common import JobStatus
from app.schemas.translate import (
    I18nTranslateRequest,
    I18nTranslateResponse,
    TranslatedItem,
)
from app.services.ai_generate import generate_json


class I18nAiService:
    async def translate(self, payload: I18nTranslateRequest) -> I18nTranslateResponse:
        system = (
            "Translate hiring/interview content accurately. Preserve meaning. "
            "If cultural_sensitivity is true, avoid idioms that do not travel well. "
            "Return JSON: {\"translations\":[{\"source\",\"translated\",\"notes\"}]}"
        )
        user = (
            f"From {payload.source_language} to {payload.target_language}\n"
            f"Content type: {payload.content_type}\n"
            f"Cultural sensitivity: {payload.cultural_sensitivity}\n"
            f"Texts: {payload.texts}"
        )

        def local() -> dict:
            tag = payload.target_language.upper()
            items = []
            for t in payload.texts:
                note = None
                if payload.cultural_sensitivity and any(
                    w in t.lower() for w in ("guys", "rockstar", "ninja")
                ):
                    note = "Softened culturally sensitive phrasing"
                items.append(
                    {
                        "source": t,
                        "translated": f"[{tag}] {t}",
                        "notes": note,
                    }
                )
            return {"translations": items}

        data, stub, provider = await generate_json(
            system=system, user=user, local_factory=local
        )
        translations = [
            TranslatedItem(
                source=str(row.get("source", "")),
                translated=str(row.get("translated", "")),
                notes=row.get("notes"),
            )
            for row in data.get("translations") or []
            if isinstance(row, dict) and row.get("translated")
        ]
        return I18nTranslateResponse(
            correlation_id=payload.correlation_id,
            source_language=payload.source_language,
            target_language=payload.target_language,
            status=JobStatus.SUCCEEDED,
            stub=stub,
            message=f"i18n translate via {provider}",
            translations=translations,
        )
