# -*- coding: utf-8 -*-
"""代管测试：认领人在岗→本人；认领人请假→就近人员代管。输出 build/_dep_e2e.html"""
import io, os

SRC = r"D:\workbbbbbb\排班工具.html"
OUT = r"D:\workbbbbbb\build\_dep_e2e.html"

ERRTRAP = ('<script>window.__ERRS=[];window.addEventListener("error",function(e){'
           'window.__ERRS.push((e.message||"")+" @line"+e.lineno);});</script>')

TEST = r"""
<script>
setTimeout(function () {
  var out = [];
  function push(s) { out.push(s); }
  function search(q) {
    var oi = document.getElementById('orgInput');
    oi.value = q;
    oi.dispatchEvent(new Event('input'));
    var sug = document.getElementById('orgSug');
    if (!sug.children.length) return null;
    sug.children[0].click();
    return document.getElementById('pickedName').textContent;
  }
  try {
    document.getElementById('btnAutoArea').click();
    var s = window.__PB.state();

    // A) 拱墅辖区——认领人郑文斌请假，应代管
    push('pickedA=' + search('拱宸桥'));
    document.getElementById('btnAddPlan').click();

    // B) 临平辖区——认领人在岗，应本人
    push('pickedB=' + search('乔司'));
    document.getElementById('btnAddPlan').click();
    push('plans=' + document.getElementById('planCount').textContent);

    document.getElementById('btnGen').click();
    var r = window.__PB.state().lastResult;
    r.rows.forEach(function (x) {
      push('ROW ' + x.area + '/' + x.org + ' members=' + x.members.join(',')
        + ' roles=' + (x.roles || []).join(',') + ' deputyOf=' + (x.deputyOf || '-'));
    });

    var tw = document.getElementById('resultWrap');
    push('hasJiaban=' + (tw.textContent.indexOf('代管') >= 0));
    push('hasZheng=' + (tw.textContent.indexOf('郑文斌') >= 0));

    // 辖区页的代管卡片
    document.querySelector('#tabbar button[data-tab="v-area"]').click();
    var dc = document.getElementById('deputyCard');
    push('depCardShown=' + (dc.style.display !== 'none'));
    push('depN=' + document.getElementById('deputyN').textContent);
    push('depNote=' + String(document.getElementById('deputyNote').textContent).replace(/\s+/g, ' ').slice(0, 200));
    push('areaListHasBadge=' + (document.getElementById('areaList').textContent.indexOf('本周不在岗') >= 0));

    // 导出表头
    document.querySelector('#tabbar button[data-tab="v-plan"]').click();
    var th = tw.querySelectorAll('table.tbl thead th');
    push('thCount=' + th.length);
    push('legend=' + (String(tw.textContent).indexOf('代管') >= 0));
  } catch (e) {
    push('ERR ' + e.message + ' @@ ' + String(e.stack).slice(0, 200));
  }
  push('ERRS=' + ((window.__ERRS || []).join(' ; ') || 'none'));
  var d = document.createElement('div');
  d.id = 'E2E';
  d.textContent = out.join(' || ');
  document.body.appendChild(d);
}, 1500);
</script>
"""

html = io.open(SRC, encoding='utf-8').read()
i = html.find('<script>window.__PAIBAN_DATA__')
assert i > 0, 'data script not found'
html = html[:i] + ERRTRAP + html[i:]
end = html.rfind('</body>')
assert end > 0
html = html[:end] + TEST + html[end:]
io.open(OUT, 'w', encoding='utf-8').write(html)
print('out=', OUT, 'size=', round(os.path.getsize(OUT) / 1024.0, 1), 'KB')
