#!/usr/bin/env python3
import json, os, collections
HERE=os.path.dirname(os.path.abspath(__file__))
rows=json.load(open(os.path.join(HERE,'bitrix24_messengers_enriched.json'),encoding='utf-8'))
def split(v): return [x.strip() for x in (v or '').split(';') if x.strip()]

L=[]
L.append("# Bitrix24 Marketplace — интеграции с мессенджерами (обогащённый датасет)\n")
L.append("Источник: https://www.bitrix24.ru/apps/collection/21378648/ (5 страниц, 100 приложений)\n")
L.append("## Сводка\n")
L.append(f"- **Приложений:** {len(rows)}")
L.append(f"- **Уникальных разработчиков:** {len({r['partner_id'] for r in rows})}")
L.append(f"- **Суммарно установок:** {sum(int(r['num_installs'] or 0) for r in rows):,}")
L.append(f"- **С email:** {sum(1 for r in rows if r['emails'])} | **Telegram:** {sum(1 for r in rows if r['telegram'])} | "
         f"**WhatsApp:** {sum(1 for r in rows if r['whatsapp'])} | **Телефон:** {sum(1 for r in rows if r['phones'])} | "
         f"**Сайт:** {sum(1 for r in rows if r['site'])} | **Гео:** {sum(1 for r in rows if r['geo'])}")
L.append(f"- **Уникальных email всего:** {len({e for r in rows for e in split(r['emails'])})}\n")

L.append("## Топ-30 приложений по установкам\n")
L.append("| # | Приложение | Уст. | ★ | Разработчик | Email | Telegram | Телефон | Гео | Сайт |")
L.append("|---|---|---|---|---|---|---|---|---|---|")
for i,r in enumerate(rows[:30],1):
    tg=', '.join(split(r['telegram'])[:2])
    L.append(f"| {i} | {r['name'][:45]} | {int(r['num_installs'] or 0):,} | {r['rating']} | "
             f"{r['partner_name']} | {'; '.join(split(r['emails'])[:2])} | {tg} | "
             f"{'; '.join(split(r['phones'])[:1])} | {r['geo']} | {r['site'][:32]} |")

# geo breakdown
geo_counter=collections.Counter()
for r in rows:
    for g in split(r['geo']):
        g=g.split(' (')[0]
        geo_counter[g]+=1
L.append("\n## Гео-распределение (по сайтам/email/упоминаниям)\n")
L.append("| Гео | Приложений |")
L.append("|---|---|")
for g,n in geo_counter.most_common(15):
    L.append(f"| {g} | {n} |")

# all unique emails
allemails=sorted({e for r in rows for e in split(r['emails'])})
L.append(f"\n## Все уникальные email ({len(allemails)})\n")
for e in allemails: L.append(f"- {e}")

L.append(f"\n## Все уникальные телефоны\n")
allph=sorted({p for r in rows for p in split(r['phones'])})
for p in allph: L.append(f"- {p}")

open(os.path.join(HERE,'REPORT.md'),'w',encoding='utf-8').write('\n'.join(L))
print("REPORT.md:",len(L),"lines")
print("unique emails:",len(allemails),"| unique phones:",len(allph))
