- Poll #inEwbCount until it updates before reading the result, then
branch on zero-count (confirm empty-data area vs missing flag)
- Wait for real grid rows to render in the expected-arrival flow
- Close the active site tab (进站交接单查询 / 到件扫描监控 / 导出任务管理)
after each stage completes to reset the page state
- Tighten export-task time-match window from 60s to 20s
- Trim verbose log messages and stale comments
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement zto_actual_download via the 到件扫描监控 menu with 子单
number-type filter, reusing the common download flow
- Extract the export-task poll/verify/download/merge steps into
_zto_poll_and_download_tasks so both ZTO flows share it
- Tighten task time-match window from 120s to 60s and add a
refresh-and-recheck loop when expected tasks are missing or pending
- Drop unused _ensure_menu_expanded helper
- Update menu [6] label since actual-arrival is now implemented
Co-Authored-By: Claude <noreply@anthropic.com>
- Add site_zto.py: ZTO expected-arrival data download with menu
navigation, export polling, and Excel merge
- Wire ZTO into main_router: site URL, login detection, menu items
[5]/[6], and a global offline Left Anti-Join compare entry [9]
- Read config.yaml debug flags to launch only the target site for
focused debugging; guard each site init and route handler behind
site-loaded checks via is_site_ready()
- Expand config.example.yaml with documented debug, baishi, and zto
config keys
Co-Authored-By: Claude <noreply@anthropic.com>