#!/usr/bin/env python3
import json, os, html
HERE=os.path.dirname(os.path.abspath(__file__))
rows=json.load(open(os.path.join(HERE,'bitrix24_messengers_enriched.json'),encoding='utf-8'))
def e(s): return html.escape(str(s or ''))
def chips(val, cls, prefix=''):
    items=[x.strip() for x in (val or '').split(';') if x.strip()]
    return ''.join(f'<div class="chip {cls}">{e(prefix+x)}</div>' for x in items) or '<span class="none">—</span>'

tr=[]
for i,a in enumerate(rows,1):
    tr.append(f"""<tr>
<td>{i}</td>
<td><div class="appname">{e(a['name'])}</div><div class="sub">{e(a['short_desc'])[:110]}</div></td>
<td class="num">{int(a['num_installs'] or 0):,}</td>
<td>{a['rating']}</td>
<td>{e(a['partner_name'])}</td>
<td>{chips(a['emails'],'mail')}</td>
<td>{chips(a['telegram'],'tg')}</td>
<td>{chips(a['whatsapp'],'wa')}</td>
<td>{chips(a['phones'],'ph')}</td>
<td class="geo">{chips(a['geo'],'geo')}</td>
<td>{'<a href="'+e(a['site'])+'" target=_blank>'+e(a['site'])+'</a>' if a['site'] else '<span class=none>—</span>'}</td>
<td><a href="{e(a['app_url'])}" target="_blank">B24</a></td>
</tr>""")

stats=[
 (len(rows),'приложений'),
 (f"{sum(int(a['num_installs'] or 0) for a in rows):,}",'установок всего'),
 (sum(1 for a in rows if a['emails']),'с email'),
 (sum(1 for a in rows if a['telegram']),'с Telegram'),
 (sum(1 for a in rows if a['phones']),'с телефоном'),
 (sum(1 for a in rows if a['geo']),'с гео'),
 (len({a['partner_id'] for a in rows}),'разработчиков'),
]
stats_html=''.join(f'<div class="stat"><b>{v}</b><span>{k}</span></div>' for v,k in stats)

doc=f"""<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Bitrix24 — интеграции с мессенджерами (обогащено)</title>
<style>
*{{box-sizing:border-box}}
body{{font-family:-apple-system,Segoe UI,Roboto,sans-serif;margin:0;background:#f5f6f8;color:#1a1a1a}}
header{{background:linear-gradient(135deg,#2fc6f6,#0075c7);color:#fff;padding:22px 28px}}
header h1{{margin:0 0 6px;font-size:21px}}
header a{{color:#dff6ff;font-size:13px}}
.stats{{display:flex;gap:14px;flex-wrap:wrap;padding:18px 28px}}
.stat{{background:#fff;border-radius:12px;padding:12px 18px;box-shadow:0 1px 4px rgba(0,0,0,.08);min-width:120px}}
.stat b{{display:block;font-size:24px;color:#0075c7}}
.stat span{{font-size:12px;color:#666}}
.tblwrap{{padding:0 20px 40px;overflow-x:auto}}
table{{border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08);width:100%;font-size:12.5px}}
th{{background:#eef2f7;text-align:left;padding:9px 10px;position:sticky;top:0;font-size:12px;z-index:2}}
td{{padding:9px 10px;border-top:1px solid #eef0f3;vertical-align:top}}
tr:hover td{{background:#fafcff}}
.appname{{font-weight:600;max-width:230px}}
.sub{{color:#888;font-size:11px;margin-top:2px}}
.num{{font-weight:700;color:#0075c7;white-space:nowrap}}
.chip{{display:inline-block;padding:2px 7px;border-radius:9px;font-size:11px;margin:1px 0;white-space:nowrap}}
.chip.mail{{background:#e8f4ff;color:#0064b3}}
.chip.tg{{background:#e2f1fb;color:#229ED9}}
.chip.wa{{background:#e6f9ee;color:#1fa855}}
.chip.ph{{background:#fff3e0;color:#c77700}}
.chip.geo{{background:#f0e9ff;color:#6b3fbf}}
.none{{color:#ccc}}
.geo{{max-width:120px}}
a{{color:#0075c7}}
</style></head><body>
<header>
<h1>Bitrix24 Marketplace — интеграции с мессенджерами (обогащённый датасет)</h1>
<a href="https://www.bitrix24.ru/apps/collection/21378648/" target="_blank">Коллекция №21378648</a>
</header>
<div class="stats">{stats_html}</div>
<div class="tblwrap"><table>
<thead><tr>
<th>#</th><th>Приложение</th><th>Установок</th><th>★</th><th>Разработчик</th>
<th>Email</th><th>Telegram</th><th>WhatsApp</th><th>Телефон</th><th>Гео</th><th>Сайт</th><th></th>
</tr></thead><tbody>{''.join(tr)}</tbody></table></div>
</body></html>"""
open(os.path.join(HERE,'report.html'),'w',encoding='utf-8').write(doc)
print("report.html updated:",len(rows),"rows")
