# -*- coding: utf-8 -*-
"""校验本轮 4 项修改是否都进了 APK"""
import zipfile

apk = '/data/www/files/rmsys-app/android/app/build/outputs/apk/release/app-release.apk'
z = zipfile.ZipFile(apk)
pad = z.read('assets/web/pad.html').decode('utf-8')
src = open('/data/www/files/rmsys-app/android/app/src/main/assets/web/pad.html', encoding='utf-8').read()

# classes.dex 里应能找到 @JavascriptInterface 的方法名 exitApp
dex_names = [n for n in z.namelist() if n.endswith('.dex')]
dex_has_exit = False
for n in dex_names:
    if b'exitApp' in z.read(n):
        dex_has_exit = True

checks = [
    ('pad.html 与源码一致', pad == src),
    ('退出:确认弹层+文案', '确定退出「任免上会系统」' in pad),
    ('退出:调用原生 exitApp', 'api.exitApp()' in pad),
    ('退出:不再删数据包', 'clearPackage' not in pad),
    ('会议名:字号加大', 'font-size:clamp(36px, 3.4vw, 56px)' in pad),
    ('自适应:fitAfterShow', 'function fitAfterShow()' in pad),
    ('自适应:绘制后重算', 'fitAfterShow();   /* 页面刚切过来' in pad),
    ('自适应:切页签重算', "if(id==='pane-t30') fitAfterShow();" in pad),
    ('处室页:小标宋', "#pg-dept .dept-card .dn{" in pad),
    ('处室页:仿宋', "'FangSong','仿宋_GB2312'" in pad),
    ('原生:exitApp 已编译进 dex', dex_has_exit),
    ('无 .bak', not any('.bak' in n for n in z.namelist())),
]

print("APK: %.2f MB" % (__import__('os').path.getsize(apk) / 1048576))
for name, ok in checks:
    print("  %-26s %s" % (name, '✓' if ok else '✗'))
print("全部通过：", all(ok for _, ok in checks))
