"""Şablon havuzu — LLM kapalıyken veya DeepSeek erişilemezse yedek içerik.

140+ varyasyon. Her olay tipi için çok sayıda alternatif tutulur ve rastgele
seçilir; böylece aynı olay tipi arka arkaya gelse bile metin tekrarı olmaz.

Yer tutucular:
  {home} {away} {player} {minute} {score} {detail} {assist} {league} {count}
"""
import random

# ---------------------------------------------------------------- GOL
GOAL = [
    "⚽ GOOOL! {minute}' {player} fileleri sarstı! {home} {score} {away} 🔥",
    "⚽ {minute}' {player} sahneye çıktı ve golü buldu! {home} {score} {away}",
    "GOL! 🎯 {player} {minute}'de skoru değiştirdi. {home} {score} {away}",
    "⚽ Ağlar havalandı! {player} ({minute}') | {home} {score} {away}",
    "⚽ {player} affetmedi! {minute}'de topu ağlara gönderdi. {home} {score} {away}",
    "🔥 GOL! {minute}' — {player} tabelayı değiştirdi: {home} {score} {away}",
    "⚽ {minute}'de {player}! Kaleci çaresiz kaldı. {home} {score} {away}",
    "GOOOL! ⚡ {player} {minute}'de sahnede. {home} {score} {away}",
    "⚽ Topu ağlarla buluşturan isim {player} ({minute}'). {home} {score} {away}",
    "🎯 {minute}' {player} fırsatı değerlendirdi! {home} {score} {away}",
    "⚽ {player} sessizliği bozdu, {minute}'de gol geldi. {home} {score} {away}",
    "GOL VAR! ⚽ {minute}' {player} — {home} {score} {away}",
]
GOAL_LATE = [
    "⚽ SON DAKİKA GOLÜ! {minute}' {player}!! {home} {score} {away} 🤯",
    "😱 {minute}'de {player}! İnanılmaz bir final. {home} {score} {away}",
    "⚽ Maçın son saniyelerinde {player}! {home} {score} {away} 🔥",
    "🚨 {minute}' {player} son anda vurdu! {home} {score} {away}",
]
PENALTY_GOAL = [
    "⚽ PENALTIDAN GOL! {minute}' {player} noktadan yanılmadı. {home} {score} {away}",
    "🎯 {minute}' penaltı... {player} gole çevirdi! {home} {score} {away}",
    "⚽ Beyaz noktada {player} soğukkanlıydı ({minute}'). {home} {score} {away}",
    "🥅 {minute}' penaltı golü! {player} kaleciyi ters köşe bıraktı. {home} {score} {away}",
    "⚽ {player} penaltıyı gole çevirdi ({minute}'). {home} {score} {away}",
    "🎯 Penaltı! {minute}' {player} tereddüt etmedi. {home} {score} {away}",
]
OWN_GOAL = [
    "😳 Kendi kalesine! {minute}' {player} talihsiz bir gol. {home} {score} {away}",
    "⚽ Kendi kalesinde {minute}'... {home} {score} {away}",
    "😖 {minute}' {player} kendi ağlarını havalandırdı. {home} {score} {away}",
    "⚽ Talihsizlik! {minute}'de kendi kalesine gol. {home} {score} {away}",
    "😬 {player} istemeden ağları buldu ({minute}'). {home} {score} {away}",
]
HAT_TRICK = [
    "🎩 HAT-TRICK! {player} bu maçta 3 gol attı! {home} {score} {away} 👏",
    "🔥 {player} durdurulamıyor — hat-trick! {home} {score} {away}",
    "🎩⚽⚽⚽ {player} adına yazdığı maç. Hat-trick! {home} {score} {away}",
    "👏 {player} tek başına farkı yarattı: hat-trick! {home} {score} {away}",
]
BRACE = [
    "⚽⚽ {player} bu akşam ikinci golünü attı! {home} {score} {away}",
    "🔥 {player} yine sahnede — maçtaki 2. golü. {home} {score} {away}",
    "⚽ {minute}' {player} ikiledi! {home} {score} {away}",
]

# ---------------------------------------------------------------- KARTLAR
YELLOW = [
    "🟨 {minute}' {player} sarı kart gördü. {home} {score} {away}",
    "🟨 Sarı kart! {player} ({minute}') — {home} {score} {away}",
    "🟨 {player} {minute}'de defterine yazıldı.",
    "🟨 Hakem {minute}'de {player}'a sarı kartı gösterdi.",
    "🟨 {minute}' sarı kart: {player}",
    "🟨 {player} sert müdahalesiyle sarı gördü ({minute}').",
]
SECOND_YELLOW = [
    "🟨🟥 {minute}' {player} ikinci sarıdan kırmızı gördü! {home} {score} {away}",
    "🟨🟥 {player} ikinci sarıyla oyun dışı ({minute}'). {home} 10 kişi mi kaldı?",
    "🟨➡️🟥 {minute}' {player} için maç bitti. {home} {score} {away}",
    "🟥 İkinci sarı! {player} soyunma odasına gidiyor ({minute}').",
    "🟨🟥 {minute}'de {player} ikinci sarısını gördü ve çıktı.",
]
RED = [
    "🟥 KIRMIZI KART! {minute}' {player} oyun dışı. {home} {score} {away}",
    "🟥 {minute}' {player} direkt kırmızı! Sayısal dezavantaj kapıda.",
    "🟥 Hakem {minute}'de {player}'ı oyundan attı! {home} {score} {away}",
    "🟥 KIRMIZI! {player} erken duş alıyor ({minute}'). {home} {score} {away}",
    "🟥 {minute}' — {player} için maç sona erdi. Kırmızı kart!",
    "🚨🟥 {minute}'de {player} kırmızı kart gördü. Dengeler değişti!",
    "🟥 Direkt kırmızı: {player} ({minute}'). {home} {score} {away}",
]
PENALTY_MISSED = [
    "❌ Penaltı kaçtı! {minute}' {player} fırsatı değerlendiremedi. {home} {score} {away}",
    "😱 {minute}' {player} penaltıdan yararlanamadı! {home} {score} {away}",
    "🥅 Kaleci kurtardı! {player}'ın penaltısı gitmedi ({minute}').",
    "❌ {minute}'de büyük fırsat kaçtı — {player} penaltıyı atamadı.",
    "😖 {player} beyaz noktadan yanıldı ({minute}'). {home} {score} {away}",
]
VAR = [
    "📺 VAR incelemesi: {detail} ({minute}')",
    "🖥️ VAR devrede... {detail}",
    "📺 {minute}' — VAR kontrolü sonrası karar: {detail}",
    "🔍 VAR'a gidildi. Sonuç: {detail} ({minute}')",
    "📺 Hakem monitöre gitti. {detail}",
]
INJURY = [
    "🤕 {minute}' {player} sakatlandı, oyuna devam edemiyor.",
    "🚑 {player} için sağlık ekibi sahada ({minute}').",
    "🤕 Kötü haber: {player} {minute}'de sakatlanarak çıktı.",
    "🚑 {minute}' {player} sakatlık nedeniyle oyundan alındı.",
]
SUBSTITUTION = [
    "🔄 {minute}' değişiklik: {detail}",
    "🔁 {minute}'de hamle geldi — {detail}",
    "🔄 Teknik direktörden müdahale ({minute}'): {detail}",
    "🔁 {minute}' oyuncu değişikliği: {detail}",
    "🔄 Taze güç sahada ({minute}'): {detail}",
]

# ---------------------------------------------------------------- MAÇ AKIŞI
KICKOFF = [
    "🟢 Maç başladı! {home} - {away} 👊 #CanlıAnlatım",
    "🔵 Düdük çaldı, top sahada! {home} - {away}",
    "🟢 Başladı! {home} - {away} karşı karşıya. Keyifli maçlar! ⚽",
    "⚽ Heyecan başlıyor: {home} - {away} 🔥",
    "🟢 İlk düdük! {home} ve {away} sahada.",
    "🚀 {home} - {away} maçı başladı! Anlatım burada 👇",
    "⚽ Top yuvarlanmaya başladı: {home} - {away}",
    "🟢 Mücadele başladı! {home} - {away} #CanlıAnlatım",
]
HT = [
    "⏸️ İlk yarı sona erdi. {home} {score} {away}",
    "⏸️ Devre arası | {home} {score} {away}",
    "🔵 İlk 45 dakika tamamlandı: {home} {score} {away}",
    "⏸️ Soyunma odasına giderken skor: {home} {score} {away}",
    "⏱️ Devre arası düdüğü! {home} {score} {away}",
    "⏸️ İlk yarının sonucu: {home} {score} {away}. İkinci yarı birazdan.",
    "🟡 Devre arası. {home} {score} {away} — ikinci yarıda neler olacak?",
]
SECOND_HALF = [
    "🟢 İkinci yarı başladı! {home} {score} {away}",
    "⚽ Top yeniden sahada — 2. yarı! {home} {score} {away}",
    "🔵 İkinci 45 dakika başlıyor. {home} {score} {away}",
]
FT = [
    "🏁 Maç bitti! {home} {score} {away} ✅",
    "🔚 Düdük çaldı. Sonuç: {home} {score} {away}",
    "🏁 Karşılaşma tamamlandı: {home} {score} {away}",
    "⏹️ Maç sona erdi | {home} {score} {away}",
    "🏁 Son düdük! {home} {score} {away}",
    "🔚 90 dakika geride kaldı: {home} {score} {away}",
    "🏁 Mücadele bitti. Nihai skor: {home} {score} {away}",
    "⚽ Maç sonucu: {home} {score} {away} 🏁",
    "🔚 Perde kapandı: {home} {score} {away}",
    "🏁 Ve bitti! {home} {score} {away}",
]
COMEBACK = [
    "🔥 GERİ DÖNÜŞ! {home} {score} {away} — inanılmaz bir mücadele!",
    "🤯 Skoru çevirdiler! {home} {score} {away}",
    "💪 Geriye düştüler ama pes etmediler: {home} {score} {away}",
    "🔄 Maçın kaderi değişti! {home} {score} {away}",
]
SHOOTOUT = [
    "🥅 Penaltı atışlarına gidiliyor! {home} {score} {away}",
    "😰 Kader penaltılarda belirlenecek: {home} - {away}",
    "🎯 Penaltı seansı başlıyor! {home} - {away}",
    "🥅 Uzatmalar yetmedi, sıra penaltılarda: {home} - {away}",
]

# ---------------------------------------------------------------- MAÇ ÖNCESİ
PREVIEW = [
    "📅 Bugün sahada: {home} - {away} ⚽ {detail}",
    "🔜 Yaklaşan maç: {home} - {away} | {detail}",
    "⚽ {home} - {away} karşılaşması için geri sayım başladı! {detail}",
    "🏟️ {home} sahasında {away} ile karşılaşıyor. {detail}",
    "📢 Maç saati yaklaşıyor: {home} - {away} {detail}",
    "🔥 Bugünün öne çıkan maçı: {home} - {away} {detail}",
    "⏰ Az sonra: {home} - {away} ⚽ {detail}",
    "👀 Gözler bu maçta: {home} - {away} | {detail}",
]
LINEUP = [
    "📋 İlk 11'ler açıklandı!\n{detail}",
    "🧩 İşte sahaya çıkacak kadrolar:\n{detail}",
    "📝 Kadrolar belli oldu:\n{detail}",
    "👥 İlk 11'ler:\n{detail}",
    "📋 Sahaya çıkacak isimler:\n{detail}",
]

# ---------------------------------------------------------------- GÜNLÜK İÇERİK
DAILY_FIXTURE = [
    "📅 Bugünün programı:\n{detail}",
    "⚽ Bugün oynanacak maçlar:\n{detail}",
    "🗓️ Günün fikstürü:\n{detail}",
    "📋 Bugün sahada olanlar:\n{detail}",
    "🔥 Bugünün maç programı:\n{detail}",
]
STANDINGS = [
    "📊 {league} puan durumu:\n{detail}",
    "🏆 {league} güncel sıralama:\n{detail}",
    "📈 {league}'de son durum:\n{detail}",
    "📊 Puan tablosu — {league}:\n{detail}",
]
RESULTS_ROUNDUP = [
    "📋 Günün sonuçları:\n{detail}",
    "⚽ Bugün oynanan maçlar ve skorlar:\n{detail}",
    "🏁 Günün özeti:\n{detail}",
    "📊 Bugünkü sonuçlar:\n{detail}",
]

# ---------------------------------------------------------------- HABER
NEWS = [
    "📰 {detail}",
    "🚨 {detail}",
    "📢 {detail}",
    "🔔 Son dakika: {detail}",
    "📰 Gündem: {detail}",
    "⚡ {detail}",
]
TRANSFER = [
    "🔄 TRANSFER: {detail}",
    "✍️ {detail}",
    "🤝 Transfer haberi: {detail}",
    "📝 {detail}",
]

BY_TYPE = {
    "goal": GOAL,
    "goal_late": GOAL_LATE,
    "penalty_goal": PENALTY_GOAL,
    "own_goal": OWN_GOAL,
    "hat_trick": HAT_TRICK,
    "brace": BRACE,
    "yellow_card": YELLOW,
    "second_yellow": SECOND_YELLOW,
    "red_card": RED,
    "penalty_missed": PENALTY_MISSED,
    "var": VAR,
    "injury": INJURY,
    "substitution": SUBSTITUTION,
    "kickoff": KICKOFF,
    "ht": HT,
    "second_half": SECOND_HALF,
    "ft": FT,
    "comeback": COMEBACK,
    "shootout": SHOOTOUT,
    "preview": PREVIEW,
    "lineup": LINEUP,
    "daily_fixture": DAILY_FIXTURE,
    "standings": STANDINGS,
    "results_roundup": RESULTS_ROUNDUP,
    "news": NEWS,
    "transfer": TRANSFER,
}


def template_count() -> int:
    """Panelde göstermek için toplam şablon sayısı."""
    return sum(len(v) for v in BY_TYPE.values())


def render(event_type: str, ctx: dict) -> str | None:
    pool = BY_TYPE.get(event_type)
    if not pool:
        return None
    tpl = random.choice(pool)
    safe = dict(ctx)
    # eksik yer tutucular boş geçsin, KeyError ile şablon düşmesin
    for key in ("home", "away", "player", "minute", "score", "detail",
                "assist", "league", "count"):
        safe.setdefault(key, "")
    try:
        text = tpl.format(**safe)
    except Exception:
        return None
    # Boş yer tutuculardan kalan fazla boşlukları topla.
    # normalize() satır sonlarını KORUR (ilk 11'ler gibi çok satırlı
    # şablonlar bozulmasın).
    from app.content_engine import textutil
    return textutil.normalize(text)
