Files
wyndham-ARR/.project-docs/50-evidence/topics/2026-08-06-daily-review-ui-navigation-i18n.md
2026-08-06 22:40:18 +08:00

3.2 KiB

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.