# Daily Review UI Navigation, Progress And I18n Date: 2026-08-06 Status: implemented and runtime-active Scope: authenticated desktop Daily Report UI only ## Reported Problems - Clicking `待人工处理` opened the task log instead of the manual-price operation panel. - A retryable frozen case displayed an unwanted frozen-manifest explanation. - Final confirmation did not change the upload-card status from `等待人工定价` to `日报生成中` while the synchronous request was running. - The added manual-price module was not localized with the existing Chinese/English/Thai selector. ## Root Cause And Change - The history row owned the log-opening click/keyboard behavior, while only the small `复核 x / y` child button owned `data-open-price-review`. The status chip therefore fell through to the row action. Status plus progress are now one semantic review button; nested controls are excluded from the row keyboard handler. A successful read focuses and scrolls the dedicated `daily-price-review-panel`. - `generation_failed` now hides the instruction node. The removed sentence is absent from HTML, JavaScript and the language catalog. - `finalizeDailyPriceReview()` sets the upload progress component to the localized running label before awaiting the finalize API. Success resolves to complete, an active server-side generation remains generating, and a returned editable/retryable review resolves back to waiting for manual pricing. - Static and dynamic review copy, responsive `data-label` values, row states, pagination, validation/toasts, cancel dialog and review API errors now have explicit Chinese, English and Thai catalog entries. Review prices use the current locale's integer formatter. ## Verification - `node --check arr_web/static/i18n.js` and `node --check arr_web/static/app.js` passed. - Focused Web/static regression passed 31/31 tests. - Full discovery passed 393 tests in 247.709 seconds, with three intentional skips for private Booking fixtures. - Authenticated browser verification on the live 8766 page proved: - the needs-review status is exposed as one button with an explicit open-review accessible name; - clicking it made `daily-price-review-panel` the active element, scrolled to the panel and left the task-log dialog closed; - the retryable instruction node was hidden and the removed sentence was not rendered; - Chinese, English and Thai rendered localized title, progress, table labels, instructions, row state, save/finalize controls and status-action names; - both English and Thai cancellation dialogs rendered localized title, description, audit note and buttons, then closed through the non-mutating return action. ## Safety Boundary Browser verification issued only review-detail reads, client-side locale changes and open/close dialog actions. It did not edit or save a price, submit finalize/retry/cancel, upload XML, create a Finance version or trigger monthly work. The finalization-progress transition is covered by the source-order regression because clicking it would be a real business mutation. The Web process was not restarted: authenticated page reload proved the running server reads and serves the current static files.