52 lines
3.2 KiB
Markdown
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.
|