# Daily Upload Progress and Task-Log Behavior ## Metadata - Date: 2026-07-31 - Status: Implemented - Scope: Desktop daily ARR.XML upload interaction and inline progress feedback - Confidence: Fact - Source: `arr_web/static/index.html`, `arr_web/static/app.js`, `arr_web/static/styles.css`, focused tests - Last verified: 2026-07-31 ## User-Facing Outcome - Clicking `开始处理` keeps the operator on the daily page; it no longer opens the task-log dialog automatically. - The header `任务日志` button and a selected daily-history row still open the same trace dialog on demand. - The upload card exposes a compact accessible progressbar with approximate stages for upload, fixed processing, independent validation and database commit. - The estimate advances while the synchronous upload request is in flight, caps before terminal completion, then resolves to 100% on success or an inline red error state on failure. - The file chooser and dropzone are temporarily disabled while the request is in flight so the visible progress stays attached to the submitted file. ## Verification - `node --check arr_web/static/app.js`: passed. - `python3 -m unittest -v tests.test_arr_web_task_log_ui`: 5 passed. - `python3 -m unittest -v tests.test_arr_web_job_trace tests.test_arr_web_repository_schema`: 8 passed. - `python3 -m unittest -v tests.test_arr_web.PortalApplicationTests.test_fixed_static_routes_and_required_content tests.test_arr_web.PortalApplicationTests.test_all_public_assets_exclude_removed_copy`: 2 passed. - No API route, upload contract, processing coordinator or task-trace query changed. ## Design Boundary This is a preserve-mode operational UI refinement. It keeps the existing dependency-free HTML/CSS, light neutral theme, single blue accent and rounded upload-card language. Progress values are intentionally approximate because `POST /api/jobs` returns after the ARR-owned processing flow reaches a terminal receipt; no fake server progress contract was introduced.