2.7 KiB
Daily Row / Task-Log Entry Boundary
Date: 2026-08-11 Status: implemented locally; production deployment pending Scope: authenticated desktop Daily Report interaction only
Reported Problem
On the production Daily page, clicking a concrete history row opened the technical task-log dialog. The intended
information architecture is stricter: logs are an on-demand utility available only from the top-right 任务日志 link;
ordinary users should not reach them while inspecting business rows.
Root Cause
The row behavior was explicit rather than accidental bubbling. renderJobs() emitted every row with role=button,
tabindex=0, a selected state and a log-specific accessible label. Delegated click and Enter/Space handlers then called
selectJob(..., { showLog: true }); CSS reinforced the action with a pointer cursor, focus ring and selected-row tint.
Change
- Render Daily history as ordinary table rows with no row action attributes.
- Remove the row click and Enter/Space log activation paths and the
showLogoption from internal trace selection. - Remove the row pointer/focus/selected styling so appearance and accessibility semantics match the inert behavior.
- Preserve the explicit
待人工处理button, report download link and top-right任务日志dialog trigger.
No API, trace query, processor, Finance, database, upload or monthly-publication behavior changed.
Verification
node --check arr_web/static/app.js: passed.- All
test_arr_web*.pytests: 81 passed in 1.105 seconds. - The focused static contract proves
openTaskLog();has exactly one caller, tied to#task-log-trigger, and rejects any row key handler, log-selection call, interactive semantics or.job-rowstyling. - An isolated local page served the real edited HTML/CSS/JavaScript with two mock Daily records. Browser checks proved:
- clicking ordinary
0805.XMLkept#task-log-dialog.open === falseand left the hash at#daily; - clicking
待人工处理focused the visible review panel with one issue and kept the log closed; - clicking the top-right
任务日志link opened the dialog; - the ordinary row had no role/tabindex, computed cursor was
auto, and the console had zero errors.
- clicking ordinary
The local browser used only mock GET responses. It did not upload, save a price, finalize/cancel a review, download an artifact, write Finance/database state or contact a production mutation endpoint.
Deployment Boundary
An unauthenticated production static-asset read correctly redirected to login, and no credentials or deployment path
were inferred. The edited source has not been committed, pushed, restarted or deployed to 8.138.234.141:8765; the
production symptom therefore remains until the controlled release step is authorized and completed.