# 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 `showLog` option 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*.py` tests: 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-row` styling. - An isolated local page served the real edited HTML/CSS/JavaScript with two mock Daily records. Browser checks proved: - clicking ordinary `0805.XML` kept `#task-log-dialog.open === false` and 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. 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.