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

52 lines
3.2 KiB
Markdown

# 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.