Files
short-drama-agent-front/design-qa.md
T
GouJ aa83f7196d fix: 收紧形态图库移动端筛选区
移动端将搜索与类型、状态与图标操作分别保持在两行,并允许状态选择框优先收缩。
2026-09-08 14:48:25 +08:00

66 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Design QA
- Source visual truth: `/workspace/scratch/6e52996114b8/upload/661cd6c2-dfc4-46ea-ac8b-17630be6c35e.png`
- Source pixel dimensions: `462 × 273`.
- Intended implementation viewport: dark-theme mobile workspace, focused content width around `360px` CSS pixels.
- Implementation screenshot: unavailable.
- CSS size and density normalization: unavailable because the implementation could not be opened in the cloud browser.
- State: 形态图片页包含镜头定位与完整筛选区。
## Full-view comparison evidence
The source crop shows the prior three-row mobile filter layout: search on its own row, two selects on the next row, and four icons on a third row. The user requested a denser two-row arrangement.
The implementation now uses a wrapping flex layout at container widths up to `460px`. Search and type occupy the first line; status and the four-icon action group occupy the second line. The status select can shrink from `110px` to `90px`, while the icon group keeps its required width and aligns right.
A local Sites preview started successfully, but the cloud browser rejected `terminal.local` with `net::ERR_BLOCKED_BY_CLIENT`. Therefore no browser-rendered implementation screenshot is available.
## Focused region comparison evidence
- Row 1: search flexes into remaining space; type remains `120px` wide.
- Row 2: status starts at `110px` and may shrink to `90px`; icon controls reserve at least `152px` and consume remaining width.
- Spacing: both rows use a shared `10px` gap.
- Overflow protection: status is the only shrinking control on the second row, so the four icon buttons remain complete.
- Accessibility and behavior: filter labels, layout switching, refresh, batch action, and mobile-disabled popovers are unchanged.
These are code-level checks only and do not replace a rendered focused-region comparison.
## Required fidelity surfaces
- Fonts and typography: no typography or truncation rules changed.
- Spacing and layout rhythm: the filter area returns to two compact rows with a consistent `10px` gap.
- Colors and visual tokens: existing dark-theme surface and control tokens are unchanged.
- Image quality and asset fidelity: no image behavior or assets changed.
- Copy and content: all search, type, status, and icon action labels are preserved.
## Findings
- [P1] Browser-rendered comparison unavailable
- Location: 形态图片移动端筛选区。
- Evidence: the required cloud browser returns `net::ERR_BLOCKED_BY_CLIENT` for the healthy local preview.
- Impact: exact wrapping, control widths, touch spacing, and console state cannot be visually certified.
- Fix: capture the page in an available browser near `360px` content width and compare the two-row filter layout.
## Primary interactions tested
Automated tests verify the mobile wrapping flex layout, search/type sizing, shrinkable status width, protected icon-group width, filter behavior, icon ordering, layout switching, and refresh workflow. All 275 tests pass.
## Console errors checked
Not checked because the page could not be opened in the cloud browser.
## Comparison history
- Iteration 1: the previous three-row layout avoided crowding but used more vertical space than requested.
- Iteration 2: consolidated the controls into two rows and made only the status select shrinkable; the full test/build suite passed, while browser capture remained blocked.
## Implementation checklist
- [x] Keep search and type on the first mobile row.
- [x] Keep status and all four icons on the second mobile row.
- [x] Allow status to shrink before icon controls are affected.
- [x] Preserve existing filter and action behavior.
- [ ] Capture and compare the rendered mobile state in the cloud browser.
final result: blocked