"""Seer'in kamuya açık üç aylık toplamlarını yeniden hesaplar.

Python 3 ve matplotlib gerektirir. Çalıştırma: python3 hesapla-ve-ciz.py
Yeni saha araştırması değildir; kaynak toplamlarının yeniden hesaplamasıdır.
"""
from pathlib import Path
import csv
import json
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

ROOT = Path(__file__).resolve().parent
SOURCE = 'https://www.seerinteractive.com/insights/aio-impact-on-google-ctr-2026-update'
DATA = [
    ('2025-09', 15797234, 398798),
    ('2025-10', 33100739, 400271),
    ('2025-11', 39500144, 301783),
]
base_impressions, base_clicks = DATA[0][1:]
base_ctr = base_clicks / base_impressions
rows = []
for i, (month, impressions, clicks) in enumerate(DATA):
    ctr = clicks / impressions
    prev = DATA[i-1] if i else None
    rows.append({
        'month': month,
        'organic_impressions': impressions,
        'organic_clicks': clicks,
        'ctr_percent': ctr * 100,
        'impressions_index_sep100': impressions / base_impressions * 100,
        'clicks_index_sep100': clicks / base_clicks * 100,
        'ctr_index_sep100': ctr / base_ctr * 100,
        'impressions_mom_percent': (impressions / prev[1] - 1) * 100 if prev else '',
        'clicks_mom_percent': (clicks / prev[2] - 1) * 100 if prev else '',
        'ctr_mom_percent': (ctr / (prev[2] / prev[1]) - 1) * 100 if prev else '',
        'cohort': 'Informational queries, AIO present, brand cited; aggregate organic data',
        'source_url': SOURCE,
        'accessed_date': '2026-09-08',
    })
with (ROOT / 'seer-yeniden-hesaplama.csv').open('w', newline='', encoding='utf-8-sig') as f:
    writer = csv.DictWriter(f, fieldnames=rows[0].keys())
    writer.writeheader()
    writer.writerows(rows)

plt.rcParams.update({'font.family': 'DejaVu Sans', 'font.size': 12, 'svg.fonttype': 'none'})
fig, axes = plt.subplots(1, 3, figsize=(15, 7.5), facecolor='#f8f7f3')
fig.subplots_adjust(left=.07, right=.97, top=.70, bottom=.26, wspace=.23)
fig.text(.06, .925, 'KOÇYİĞİT YAZILIM  /  VERİ İNCELEMESİ', color='#52645e', fontsize=11, weight='bold')
fig.text(.06, .855, 'CTR düşerken tıklamalar sabit kalabilir.', fontsize=25, weight='bold', color='#162d28')
fig.text(.06, .792, 'Eylül–Kasım 2025 · AI Overview’da kaynak gösterilen markalar · Bilgi amaçlı sorgular', fontsize=13, color='#4a5a55')
keys = ['impressions_index_sep100', 'clicks_index_sep100', 'ctr_index_sep100']
names = ['Gösterim', 'Tıklama', 'CTR']
colors = ['#207660', '#2c5ea8', '#ad543b']
for ax, key, name, color in zip(axes, keys, names, colors):
    ys = [r[key] for r in rows]
    ax.set_facecolor('#f8f7f3')
    ax.plot(range(3), ys, color=color, lw=3, marker='o', ms=8)
    ax.set_title(name, loc='left', fontsize=16, weight='bold', pad=16, color=color)
    ax.set_xticks(range(3), ['Eylül', 'Ekim', 'Kasım'])
    ax.set_xlim(-.2, 2.3)
    ax.set_ylim(0, 290)
    ax.set_yticks([0, 100, 200])
    ax.grid(axis='y', color='#d8ddd8', lw=.7)
    ax.tick_params(length=0, labelcolor='#4a5a55', pad=9)
    ax.spines[['top', 'right', 'left', 'bottom']].set_visible(False)
    for x, y in enumerate(ys):
        ax.annotate(f'{y:.1f}'.replace('.', ','), (x, y), xytext=(0, 12), textcoords='offset points', ha='center', color=color, fontsize=12, weight='bold')
axes[0].set_ylabel('Endeks · Eylül 2025 = 100', labelpad=12, color='#4a5a55')
fig.text(.06, .16, 'Eylül → Ekim: gösterim +%109,54  ·  tıklama +%0,37  ·  CTR −%52,10', fontsize=14, weight='bold', color='#162d28')
fig.text(.06, .107, 'Kaynak: Seer Interactive, “AIO Impact on Google CTR: 2026 Update”. Erişim: 8 Eylül 2026.', fontsize=10, color='#59665f')
fig.text(.06, .067, 'Hesaplama ve grafik: Koçyiğit Yazılım. Her seri ayrı ayrı endekslenmiştir; değerler adet veya CTR yüzdesi değildir.', fontsize=10, color='#59665f')
fig.text(.06, .032, 'Genel organik veriler kullanılmıştır. Yeni Search Console AI raporunun ayrı tıklama verisi değildir; nedensellik göstermez.', fontsize=9, color='#59665f')
for ext in ['png', 'svg']:
    fig.savefig(ROOT / f'ctr-gosterim-tiklama.{ext}', dpi=160, facecolor=fig.get_facecolor())
plt.close(fig)
print(json.dumps({'rows': len(rows), 'october_change': {k: rows[1][k] for k in ['impressions_mom_percent','clicks_mom_percent','ctr_mom_percent']}, 'november_click_change': rows[2]['clicks_mom_percent']}, ensure_ascii=False, indent=2))
