Files
wyndham-ARR/.project-docs/50-evidence/topics/2026-08-11-daily-row-task-log-entry-boundary.md
2026-08-11 17:23:33 +08:00

48 lines
2.7 KiB
Markdown

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