# -*- coding: utf-8 -*-
r"""B143: kiểm tab BÁN HÀNG sau khi đổi tên + chụp ảnh (qua link Funnel)."""
import os, re, subprocess, time

GOC = r'C:\Claw 2\Nghien cuu\Dashboard-CSDL'

def ba(*a, t=300):
    r = subprocess.run(['browser-act'] + list(a), capture_output=True, text=True, encoding='utf-8',
                       errors='replace', timeout=t)
    return ((r.stdout or '') + (r.stderr or '')).strip()

# kiểm nhanh bằng curl: nhãn tab trong HTML phục vụ
import urllib.request
h = urllib.request.urlopen('http://127.0.0.1:8097/', timeout=15).read().decode('utf-8', 'replace')
print('  HTML phục vụ có nhãn Bán hàng:', 'Bán hàng' in h, '| còn nhãn cũ "Mua hàng":', 'Mua hàng' in h)

lst = ''
for _ in range(6):
    lst = ba('browser', 'list')
    if re.search(r'direct_local_\d+', lst):
        break
    time.sleep(4)
bid = (re.findall(r'(direct_local_\d+)', lst) or ['direct_local_121304831500484624'])[0]
S = 'dashbanhang'
ba('--session', S, 'browser', 'open', bid, 'https://desktop-9gsdkd2.tail0ffe94.ts.net/dashboard/')
time.sleep(9)
def ev(js):
    return ba('--session', S, 'eval', js)
if ev("!!document.querySelector('input[name=mat_khau]')").strip('"').lower() == 'true':
    ev("(()=>{const i=document.querySelector('input[name=mat_khau]'); i.value='btchem2026'; i.closest('form').submit(); return 1;})()")
    time.sleep(13)
ev("(()=>{window.__err=[];window.addEventListener('error',e=>window.__err.push(String(e.message)));return 1;})()")
print('  thanh tab:', ev("[...document.querySelectorAll('.tab')].map(e=>e.textContent).join(' | ')")[-130:])
ev("(()=>{const t=[...document.querySelectorAll('.tab')].find(e=>e.dataset.k==='mua_hang'); t.click(); return 1;})()")
time.sleep(8)
print('  bảng số hiện:', ev("[...document.querySelectorAll('#kpis .kpi')].map(e=>e.innerText.replace(/\\n/g,' = ')).join(' | ')")[-330:])
print('  canvas vẽ:', ev("[...document.querySelectorAll('canvas')].filter(c=>Chart.getChart(c)).length").strip('"'),
      '/', ev("document.querySelectorAll('canvas').length").strip('"'),
      '| bảng:', ev("document.querySelectorAll('#luoi table').length").strip('"'),
      '| tiêu đề thẻ:', ev("[...document.querySelectorAll('#luoi h3')].map(e=>e.textContent).join(' · ')")[-260:])
print('  lỗi JS:', ev("JSON.stringify((window.__err||[]).slice(0,3))")[-120:])
print('  chụp:', ba('--session', S, 'screenshot', os.path.join(GOC, '_anh_ban_hang.png'), '--full')[-44:])
ba('session', 'close', S)
p = os.path.join(GOC, '_anh_ban_hang.png')
print('  ảnh:', os.path.getsize(p) if os.path.exists(p) else 'KHÔNG CÓ', 'byte')
