#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""检视候选页的留白：截单页图 + 报告 .pad 直接子元素几何。"""
import os, subprocess, sys, time, urllib.parse, json
from playwright.sync_api import sync_playwright
W='/Users/liuxinyuan/Desktop/Hermes输出-工作类'
DECK=os.path.join(W, '培训与上手', '培训','价格谈判培训_攻心为上_deck.html')
OUT=os.path.join(W, '培训与上手', '培训','_inspect')
os.makedirs(OUT,exist_ok=True)
PORT=8794
URL='http://127.0.0.1:%d/%s'%(PORT,urllib.parse.quote(os.path.basename(DECK)))
srv=subprocess.Popen([sys.executable,'-m','http.server',str(PORT),'--directory',os.path.join(W, '培训与上手', '培训')],
                     stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)
time.sleep(1.4)
TARGETS=[('need-jobs',8),('need-fit',9),('table-why',12),('table-balance',17),('open-2',21),('closing',34)]
with sync_playwright() as p:
    br=p.chromium.launch(channel='chrome',headless=True)
    pg=br.new_page(viewport={'width':1500,'height':900})
    pg.goto(URL); pg.wait_for_load_state('load'); pg.wait_for_timeout(800)
    for name,i in TARGETS:
        pg.evaluate("window.__go(%d)"%i); pg.wait_for_timeout(450)
        el=pg.query_selector('#track > .slide:nth-child(%d)'%(i+1))
        el.screenshot(path=os.path.join(OUT,'%s.png'%name))
        info=pg.evaluate("""(i)=>{const s=document.querySelectorAll('#track > .slide')[i];
          const pad=s.querySelector('.pad');const pr=pad.getBoundingClientRect();
          const kids=[...pad.children].map(c=>{const r=c.getBoundingClientRect();
            return {tag:c.tagName+'.'+(c.className||'').toString().split(' ')[0],
                    x:+((r.left-pr.left)).toFixed(0),y:+((r.top-pr.top)).toFixed(0),
                    w:+r.width.toFixed(0),h:+r.height.toFixed(0),bottom:+(r.bottom-pr.top).toFixed(0)};});
          return {padH:pad.clientHeight, overY:pad.scrollHeight-pad.clientHeight,
                  overX:pad.scrollWidth-pad.clientWidth, kids};}""",i)
        print('== %s (slide %d) padH=%d overY=%d overX=%d'%(name,i+1,info['padH'],info['overY'],info['overX']))
        for k in info['kids']:
            print('    %-22s x=%4d y=%4d w=%4d h=%4d bottom=%4d'%(k['tag'],k['x'],k['y'],k['w'],k['h'],k['bottom']))
    br.close()
srv.terminate()
print("DONE ->",OUT)
