2.3 KiB
2.3 KiB
Company-channel card row and in-page generation confirmation
Metadata
- Date: 2026-07-31
- Scope:
arr_web/static/index.html,arr_web/static/styles.css,arr_web/static/app.js,tests/test_arr_web.py - Change type: UI composition and interaction affordance only
- Business-data mutation: none
Behavior facts
- The large
生成报表surface now contains one desktop row ordered上传 Excel 报表,第一期,第二期,第三期. The layout falls back to two columns at the tablet breakpoint and one column on narrow mobile screens. - The
报表月份input remains an accessible month control but its visible label is visually hidden. It sits in the setup header's upper-right corner, continues to drive C/O release/history filtering, and is still submitted asreport_monthafter confirmation. - Period card CTAs now visibly read
生成; the period range, C/O range and release state remain visible in each card. - Clicking a released period opens a styled in-page
<dialog>with the selected month and period. The dialog uses a restrained light card, backdrop blur, explicit取消/确认生成actions and focus on取消when opened. - Cancel, Escape and backdrop dismissal close the dialog without calling the generation API. Explicit confirmation keeps
the existing POST body (
report_month,period) and then uses the existing job save/poll/render path. Errors remain inline in the dialog for retry or cancellation. Nowindow.confirmremains in the generation path.
Verification
node --check arr_web/static/app.js: passed.- HTML parser check: passed.
- Focused suite:
28 tests,OK(tests.test_arr_web,tests.test_arr_web_company_reports). - Full discovery:
348 tests,OK (skipped=10). - Isolated authenticated fake-server browser QA did not upload, extract, delete, activate or submit a report. At
1280x720 all four cards share one row; at 390x844 the layout is single-column and
scrollWidthequals the viewport. The generation dialog opened with确认生成, showed2026年07月,01-10, and cancel/Escape both closed it without mutation. Browser console warnings/errors: none. - The isolated QA server on port 8876 was stopped after verification. Shared port 8766 was restarted at 14:26:56 +08;
its
/healthzendpoint returnsready.