- main_router: add run_automation_test that runs each site's download
flows in a cross sequence (expected/actual) plus a pass/fail report
with timings; expose it as menu [8]
- Site download functions now return False on their exception paths so
the test harness can record failures (baishi also flags config-read
failure)
- Replace overblown log/comment phrasing across all modules with plain
statements; trim docstrings
Co-Authored-By: Claude <noreply@anthropic.com>
- Add paths.py: BASE_DIR/DOWNLOAD_DIR/CONFIG_PATH anchored on __file__
so paths resolve regardless of the launch cwd
- Route main_router and all site modules through DOWNLOAD_DIR/CONFIG_PATH,
replacing os.getcwd()-based download dirs and the "config.yaml" literal
- main_router compare engine: read Excel as str with keep_default_na,
strip/normalize 运单号, drop blanks, and isin against a set so
int/float-vs-str mismatches no longer produce false "undelivered"
- Shunxin: give downloaded files unique microsecond temp names and read
Excel as str to preserve long-waybill precision
- Normalize bare except: to except Exception: across affected files
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>