feat: expand vehicle data platform capabilities
This commit is contained in:
443
design-qa.md
443
design-qa.md
@@ -107,3 +107,446 @@ required by the operational task instead of copying the reference's team rail.
|
||||
this shell's rendered result.
|
||||
|
||||
final result: passed
|
||||
|
||||
---
|
||||
|
||||
# Access portrait evidence viewport — Design QA
|
||||
|
||||
- Source visual truth:
|
||||
`/tmp/access-mobile-density-20260720/01-production-320-before.png`
|
||||
- Local implementation:
|
||||
`/tmp/access-mobile-density-20260720/02-local-320-after.png`
|
||||
- Local detail interaction:
|
||||
`/tmp/access-mobile-density-20260720/03-local-320-detail.png`
|
||||
- Local 390px regression:
|
||||
`/tmp/access-mobile-density-20260720/04-local-390-after.png`
|
||||
- Deployed 320px evidence:
|
||||
`/tmp/access-mobile-density-20260720/05-production-320-after.png`
|
||||
- Deployed detail interaction:
|
||||
`/tmp/access-mobile-density-20260720/06-production-320-detail.png`
|
||||
- Deployed 390px evidence:
|
||||
`/tmp/access-mobile-density-20260720/07-production-390-after.png`
|
||||
- Same-viewport production comparison:
|
||||
`/tmp/access-mobile-density-20260720/08-production-320-comparison.png`
|
||||
- Viewports: 320 × 568 and 390 × 844
|
||||
- State: authenticated administrator; Access directory with all vehicles
|
||||
selected and live protocol evidence
|
||||
|
||||
## Findings and comparison history
|
||||
|
||||
### Baseline
|
||||
|
||||
- **[P1] The portrait mobile evidence list was almost entirely clipped.**
|
||||
- Evidence: at 320 × 568 the page reserved 72px of redundant bottom padding,
|
||||
a 72px filter trigger, a 58px repeated panel heading and a 92px metric
|
||||
rail. Only 19px remained for the vehicle scroller, so the first 155px
|
||||
vehicle card could not be read or selected reliably.
|
||||
- Impact: the primary Access task—identifying a vehicle and opening its
|
||||
protocol evidence—was effectively blocked on narrow mobile devices.
|
||||
- Fix: removed the redundant portrait-only page reserve, reduced the filter
|
||||
trigger to 56px, reduced the metric rail to 60px minimum height and hid the
|
||||
repeated mobile panel heading. The established command bar, filters,
|
||||
metrics, pagination and bottom navigation remain present.
|
||||
|
||||
### Final pass
|
||||
|
||||
- No actionable P0, P1 or P2 issue remains in this mobile Access flow.
|
||||
- At 320 × 568 the evidence scroller increased from 19px to 195px, a 176px
|
||||
gain and more than tenfold improvement. One complete vehicle card and the
|
||||
next-card affordance are visible.
|
||||
- At 390 × 844 the scroller is 471px tall and three evidence cards are visible
|
||||
before pagination.
|
||||
- Both viewports report document width equal to viewport width. The bottom
|
||||
navigation, pagination and detail sheet do not overlap or introduce
|
||||
horizontal scrolling.
|
||||
|
||||
## Required fidelity surfaces
|
||||
|
||||
- **Fonts and typography:** existing Semi UI typography, plate hierarchy and
|
||||
protocol metadata remain unchanged and readable.
|
||||
- **Spacing and layout rhythm:** only portrait Access density changed. Existing
|
||||
short-landscape rules and Web layout are untouched.
|
||||
- **Colors and visual tokens:** the existing neutral, blue, green and amber
|
||||
semantic states are preserved, including partial-source warning evidence.
|
||||
- **Image quality and assets:** no new imagery, icon approximation or
|
||||
replacement asset was introduced.
|
||||
- **Copy and content:** command, filter, vehicle, source and evidence labels are
|
||||
unchanged; only the duplicate `接入差异清单` mobile heading is visually
|
||||
removed.
|
||||
- **Icons:** existing Semi icons and controls retain their current sizing and
|
||||
active states.
|
||||
- **Responsiveness:** 320px and 390px portrait layouts have no horizontal
|
||||
overflow. The portrait-only media query does not alter desktop or landscape
|
||||
composition.
|
||||
- **Accessibility:** every vehicle remains a semantic button and the selected
|
||||
vehicle opens a labeled `车辆接入详情` dialog with a labeled close action.
|
||||
This visual and DOM pass does not replace a full assistive-technology audit.
|
||||
|
||||
## Interaction and console checks
|
||||
|
||||
- Production Access → first vehicle card → vehicle detail → close was exercised
|
||||
successfully at 320px.
|
||||
- The detail sheet measured 320px wide and 477px tall, retained its internal
|
||||
scroller, and exposed `接入健康概览` plus `协议证据`.
|
||||
- Automated gate: 73 test files and 383 tests passed. The targeted Access and
|
||||
production-entry gate passed 14 tests.
|
||||
- TypeScript, Vite, distribution preparation and the release build verifier
|
||||
completed successfully with 74 current assets.
|
||||
- Release `access-mobile-list-20260720182508` is active. `/access` returned
|
||||
HTTP 200, the service is active, and the deployed
|
||||
`app-DC_UXKeU.css` SHA-256 matches the local production asset:
|
||||
`8e723387c096e156fb70e2a234ade464c0d1faca000c2d54ef8a65e402638c78`.
|
||||
- No application runtime failure or visible error state was observed during
|
||||
local or deployed interaction testing. Existing development-only Semi UI
|
||||
`findDOMNode` warnings remain unchanged.
|
||||
|
||||
## Follow-up polish
|
||||
|
||||
- P3: revisit Access card vertical density only if future protocol evidence
|
||||
adds a fourth simultaneous source; the current three-source layout is
|
||||
readable at 320px.
|
||||
|
||||
final result: passed
|
||||
|
||||
---
|
||||
|
||||
# Account governance clarity pass — 2026-07-20
|
||||
|
||||
## Scope
|
||||
|
||||
- Route: `/users`
|
||||
- Surfaces: desktop directory, mobile directory, desktop configuration
|
||||
SideSheet, mobile configuration SideSheet.
|
||||
- Production release: `users-clarity-20260720181338`.
|
||||
|
||||
## Findings and fixes
|
||||
|
||||
- **P1 — Mobile directory hierarchy consumed too much of the first viewport.**
|
||||
- Before: at 320 × 568 the directory began at y=291, so only about three
|
||||
complete customer rows were visible.
|
||||
- Fix: removed the repeated mobile directory heading, reduced the metric
|
||||
rail to 56px and kept the list itself as a single-row directory.
|
||||
- After: the directory begins at y=227. Four complete rows plus the next-row
|
||||
affordance are visible at 320 × 568; all five current accounts fit at
|
||||
390 × 844.
|
||||
|
||||
- **P1 — Mobile configuration repeated identity information before the first
|
||||
editable field.**
|
||||
- Before: header, three-column summary, numbered tabs and identity overview
|
||||
pushed the first editable field to roughly y=425.
|
||||
- Fix: kept only the decision-critical permission scope and account-status
|
||||
summary on mobile, removed duplicate step circles and hid the repeated
|
||||
identity overview.
|
||||
- After: the first identity field begins at y=253 in production. Permission
|
||||
scope, account enable/disable state, section tabs and persistent save state
|
||||
remain visible.
|
||||
|
||||
- **P2 — Narrow directory scrolling reduced usable row width.**
|
||||
- Fix: hid the decorative inner scrollbar on mobile while preserving the
|
||||
keyboard-focusable scroll region and native touch scrolling.
|
||||
|
||||
## Fidelity and interaction checks
|
||||
|
||||
- Desktop remains a true one-row directory with dedicated columns for menu
|
||||
permissions, vehicle permissions, recent login and access state.
|
||||
- Desktop configuration retains the complete three-part summary and detailed
|
||||
identity overview; mobile removes only duplicated information.
|
||||
- The mobile vehicle-permission tab was exercised in production: assigned
|
||||
plates remain primary, VIN secondary, and effective periods, adjust/remove
|
||||
actions, pagination and history remain reachable.
|
||||
- No horizontal document overflow occurred at 390px or 1440px.
|
||||
- Production console: no warnings or errors for the deployed route.
|
||||
- Automated gate: 73 test files and 382 tests passed. Production build gate
|
||||
passed with 74 release assets.
|
||||
- Local and ECS `UsersPage-CNmDqRKT.css` SHA-256 matched:
|
||||
`6d5e0f80489967fc5f4eac7c30236091969e66730e68031713740c3f8c603ba3`.
|
||||
|
||||
## Evidence
|
||||
|
||||
- `/tmp/responsive-audit-20260720/users-list-mobile-production.png`
|
||||
- `/tmp/responsive-audit-20260720/users-config-mobile-production.png`
|
||||
- `/tmp/responsive-audit-20260720/users-config-vehicles-mobile-after.png`
|
||||
- `/tmp/responsive-audit-20260720/users-list-desktop-production.png`
|
||||
|
||||
final result: passed
|
||||
|
||||
# 2026-07-20 Operations mobile clarity audit
|
||||
|
||||
## Audit scope
|
||||
|
||||
- Surface: authenticated `/operations` quality workspace.
|
||||
- User goal: scan the active reconciliation queue, understand the two urgent
|
||||
counts, and move between reconciliation and diagnosis without leaving the
|
||||
viewport or losing mobile navigation.
|
||||
- Production baseline:
|
||||
`/tmp/cross-route-audit-20260720/mobile-operations-stable.png`.
|
||||
- Local implementation:
|
||||
`/tmp/cross-route-audit-20260720/mobile-operations-local-after-stable.png`.
|
||||
- Production verification:
|
||||
`/tmp/cross-route-audit-20260720/mobile-operations-production-final.png`.
|
||||
|
||||
## Findings and resolution
|
||||
|
||||
1. **P1 — the operations command surfaces exceeded the phone viewport.**
|
||||
- Baseline measurement: the 390px-wide command bar started at x=8 and
|
||||
ended at x=398 because a desktop `width: 100%` combined with 8px mobile
|
||||
margins. The adjacent workspace navigation inherited the same geometry.
|
||||
- Impact: the global refresh action and right edge of the segmented
|
||||
workspace control were visibly clipped.
|
||||
- Fix: the mobile operations command bar and workspace navigation now use
|
||||
their available flex width (`width: auto`) and remain inset from x=8 to
|
||||
x=382.
|
||||
|
||||
2. **P1 — half of the reconciliation metric rail was reserved for hidden
|
||||
desktop context.**
|
||||
- Baseline measurement: the rail body retained `199px 180px` columns at
|
||||
390px even though the context column was hidden. The two visible metrics
|
||||
were compressed to 99.5px each, truncating both supporting notes.
|
||||
- Impact: users could see the large numbers but not understand whether
|
||||
`1,327` represented active items or what caused `1,189` SLA breaches.
|
||||
- Fix: the hidden context column now collapses on phones. The visible list
|
||||
occupies all 379px with two equal 189.5px columns, and each metric uses a
|
||||
clear label/value/note stack.
|
||||
|
||||
## Final pass
|
||||
|
||||
- 390 × 844 production document width equals viewport width.
|
||||
- Command bar and workspace navigation are both fully inside the viewport.
|
||||
- `待复核 1,327 / 活跃 1,327 项` and
|
||||
`SLA 超时 1,189 / 超过 24 小时` are fully legible.
|
||||
- The `差异处置 → 单车诊断 → 差异处置` interaction was exercised against
|
||||
ECS production. Both panels rendered correctly and document width remained
|
||||
390px.
|
||||
- 1440 × 900 retained the existing five-column reconciliation table, summary
|
||||
context, side navigation and pagination without reflow.
|
||||
- No production console warning or error was emitted during the smoke test.
|
||||
The known Semi UI `findDOMNode` message remains development-only.
|
||||
- Automated gate: 73 test files and 381 tests passed.
|
||||
- Production build gate: 74 release assets passed.
|
||||
- Release `ops-mobile-clarity-20260720175459` is active. The served
|
||||
`app-BUsvckVz.css` SHA-256 matches the local build:
|
||||
`feb4f945ff7dc586a31d1c65f985048b7ef6399574911db182767fc813c28121`.
|
||||
|
||||
## Evidence limits
|
||||
|
||||
- Screenshot and DOM evidence verifies responsive reflow, visible hierarchy,
|
||||
interaction state and console health. It does not by itself prove full WCAG
|
||||
conformance or screen-reader announcements.
|
||||
- The diagnosis vehicle picker was not used to mutate production state; its
|
||||
empty state and workspace transition were verified read-only.
|
||||
|
||||
final result: passed
|
||||
|
||||
---
|
||||
|
||||
# Account management guided onboarding — Design QA
|
||||
|
||||
- Source visual truth:
|
||||
`/tmp/account-management-audit-20260720/07-users-mobile-create-production-baseline.png`
|
||||
- Rendered implementation:
|
||||
`/tmp/account-management-audit-20260720/08-users-mobile-create-local-after.png`
|
||||
- Deployed production implementation:
|
||||
`/tmp/account-management-audit-20260720/14-users-mobile-create-production-after.png`
|
||||
- Full-view comparison:
|
||||
`/tmp/account-management-audit-20260720/12-users-mobile-create-full-comparison.png`
|
||||
- Focused summary/footer comparison:
|
||||
`/tmp/account-management-audit-20260720/13-users-mobile-create-focus-comparison.png`
|
||||
- Web implementation:
|
||||
`/tmp/account-management-audit-20260720/11-users-desktop-create-local-after.png`
|
||||
- Follow-on menu step:
|
||||
`/tmp/account-management-audit-20260720/09-users-mobile-create-menu-local-after.png`
|
||||
- Follow-on vehicle step:
|
||||
`/tmp/account-management-audit-20260720/10-users-mobile-create-vehicles-local-after.png`
|
||||
- Viewports: 390 × 844 and 1440 × 900
|
||||
- State: authenticated administrator; customer directory, existing customer
|
||||
editor and new-customer draft
|
||||
|
||||
## Findings and comparison history
|
||||
|
||||
### Baseline
|
||||
|
||||
- **[P1] The new-account default contradicted the page's least-privilege
|
||||
promise.**
|
||||
- Evidence: the production source capture opened a new customer with all
|
||||
four customer menus already granted, while the header and supporting copy
|
||||
said permissions were opened by minimum necessary scope.
|
||||
- Impact: an administrator could create a broadly authorized account without
|
||||
explicitly reviewing menu access.
|
||||
- Fix: new drafts now begin with zero menu and zero vehicle permissions.
|
||||
Existing accounts retain their saved menu and vehicle grants unchanged.
|
||||
- Post-fix evidence: the implementation summary shows `0 菜单 · 0 辆`, the
|
||||
badge reads `待开放菜单`, and every menu row begins unchecked.
|
||||
- **[P2] Draft state and the primary action implied that an unsaved account was
|
||||
already synchronized.**
|
||||
- Evidence: before the fix, the new-account footer showed `已同步` and the
|
||||
disabled action was `创建账号`, even though no server-side account existed.
|
||||
- Impact: administrators could not distinguish a local draft from a saved
|
||||
identity and were not prompted to review permissions in order.
|
||||
- Fix: new drafts show `新建草稿`; the primary action advances through
|
||||
`下一步:菜单权限`, `下一步:车辆权限`, then `创建账号`. The first step
|
||||
remains disabled until username, display name and a 10–128 character
|
||||
password with at least three character categories are complete.
|
||||
- Post-fix evidence: the focused comparison shows the corrected state badge,
|
||||
zero-permission summary and step-specific action.
|
||||
|
||||
### Final pass
|
||||
|
||||
- No actionable P0, P1 or P2 issue remains in the audited account-management
|
||||
flow.
|
||||
- The existing Web single-line customer directory, mobile dense customer list,
|
||||
identity editor, menu editor, vehicle paging and grant-window editor were
|
||||
preserved.
|
||||
- A production smoke used a disposable client-side draft, advanced from
|
||||
identity to the zero-menu state, then discarded the draft. No customer was
|
||||
created or modified.
|
||||
|
||||
## Required fidelity surfaces
|
||||
|
||||
- **Fonts and typography:** the existing PingFang/system stack, title weights,
|
||||
compact metadata and tab hierarchy remain unchanged. Step labels fit at
|
||||
390px without wrapping or truncating the primary action.
|
||||
- **Spacing and layout rhythm:** the established full-width mobile sheet,
|
||||
sticky summary, three-step tabs, scrollable form and sticky footer remain
|
||||
aligned. The Web sheet retains its 820px maximum width and two-column fields.
|
||||
- **Colors and visual tokens:** existing Semi blue, neutral and semantic
|
||||
green/amber states are retained. Amber now consistently communicates an
|
||||
incomplete permission scope; blue communicates a local new draft.
|
||||
- **Image quality and assets:** no new imagery or replacement asset was
|
||||
introduced. The product's supplied vector brand mark and Semi icon family
|
||||
remain unchanged.
|
||||
- **Copy and content:** `新建草稿`, `待开放菜单` and the step-specific actions
|
||||
accurately describe server state and the administrator's next task.
|
||||
- **Icons:** the existing Semi close, eye, plus and checkbox icons remain
|
||||
aligned and use the same active/disabled treatments.
|
||||
- **Responsiveness:** 390px and 1440px captures show no horizontal overflow,
|
||||
clipped footer, hidden close action or obscured form field.
|
||||
- **Accessibility:** the flow exposes a dialog, three semantic tabs, labeled
|
||||
fields, checkboxes and buttons. Disabled state prevents advancing with an
|
||||
incomplete or weak identity. Screenshot and DOM review do not replace a
|
||||
full assistive-technology audit.
|
||||
|
||||
## Interaction and console checks
|
||||
|
||||
- Production customer directory → new account → identity draft → menu step →
|
||||
discard draft was exercised without a write.
|
||||
- Local identity fields were completed with a compliant preview password; the
|
||||
primary action became enabled and advanced to a zero-menu state.
|
||||
- Menu and vehicle tabs rendered their unchecked/empty states and the final
|
||||
create action without layout shift.
|
||||
- Existing-customer identity, menu and 44-vehicle states were captured on Web
|
||||
and mobile before implementation.
|
||||
- Local development emitted only Semi UI's known React `findDOMNode`
|
||||
deprecation warning. Deployed production emitted no warning or error.
|
||||
- Automated gate: 73 test files and 380 tests passed. TypeScript, Vite and the
|
||||
release build verifier completed successfully.
|
||||
- Production release `account-onboarding-ux-20260720173338` is active. The
|
||||
immutable release gate verified 74 current and 116 compatibility assets; the
|
||||
served UsersPage bundle is byte-for-byte identical to the local build.
|
||||
|
||||
## Follow-up polish
|
||||
|
||||
- P3: add a compact password-rule checklist to the administrator's initial
|
||||
password field when the shared password-input pattern is next consolidated.
|
||||
|
||||
final result: passed
|
||||
|
||||
---
|
||||
|
||||
# Intermediate sidebar continuity — Design QA
|
||||
|
||||
- Source visual truth: `/tmp/sidebar-continuity-20260720/02-monitor-901-production.png`
|
||||
- Rendered implementation: `/tmp/sidebar-continuity-20260720/11-monitor-901-local-settled.png`
|
||||
- Full-view comparison: `/tmp/sidebar-continuity-20260720/12-monitor-901-full-comparison.png`
|
||||
- Focused navigation comparison: `/tmp/sidebar-continuity-20260720/13-monitor-901-focus-comparison.png`
|
||||
- Cross-route implementation evidence: `/tmp/sidebar-continuity-20260720/09-routes-1024-local-montage.png`
|
||||
- Mobile regression evidence: `/tmp/sidebar-continuity-20260720/10-statistics-390-mobile-regression.png`
|
||||
- Viewports: 680 × 700, 681 × 700, 900 × 700, 901 × 700,
|
||||
1024 × 700, 1100 × 700, 1101 × 700, 1280 × 700 and 390 × 844
|
||||
- State: authenticated customer; Monitor map mode, plus Vehicles, Tracks and
|
||||
Statistics default workspaces
|
||||
|
||||
## Findings and comparison history
|
||||
|
||||
### Baseline
|
||||
|
||||
- **[P2] A one-pixel viewport change caused a disproportionate workspace
|
||||
reflow.**
|
||||
- Evidence: production at 900px used a 72px compact rail and an 828px main
|
||||
region, while 901px immediately restored a 228px rail and reduced the main
|
||||
region to 673px. The full-view source capture shows the map losing about
|
||||
one third of its width even though the device width increased.
|
||||
- Impact: tablet and browser-zoom users could cross the breakpoint and see
|
||||
filters, telemetry and the map recompose abruptly.
|
||||
- Fix: aligned the React shell state and shared CSS breakpoint so the 72px
|
||||
Semi icon rail remains active from 681px through 1100px. Full navigation
|
||||
returns at 1101px, where the main region still has 873px.
|
||||
- Post-fix evidence: the 901px implementation has a 72px rail, 829px main
|
||||
region and complete 284px account action region. The focused comparison
|
||||
shows the recovered workspace width without changing the page hierarchy.
|
||||
|
||||
### Final pass
|
||||
|
||||
- No actionable P0, P1 or P2 mismatch remains.
|
||||
- Boundary measurements:
|
||||
- 680px: mobile shell, 680px main region.
|
||||
- 681px: 72px rail, 609px main region.
|
||||
- 900px: 72px rail, 828px main region.
|
||||
- 901px: 72px rail, 829px main region.
|
||||
- 1024px: 72px rail, 952px main region.
|
||||
- 1100px: 72px rail, 1028px main region.
|
||||
- 1101px: 228px rail, 873px main region.
|
||||
- 1280px: 228px rail, 1052px main region.
|
||||
- Vehicles, Tracks and Statistics all retained the same shell geometry at
|
||||
1024px and 1101px with document width equal to viewport width.
|
||||
|
||||
## Required fidelity surfaces
|
||||
|
||||
- **Fonts and typography:** the existing PingFang/system stack, weights and
|
||||
hierarchy remain unchanged. Labels stay readable in the compact rail and
|
||||
the 901px topbar has no wrapping or clipping.
|
||||
- **Spacing and layout rhythm:** the change preserves the established 72px and
|
||||
228px shell tokens and removes the unstable intermediate reflow. Page
|
||||
margins, card spacing and content density remain consistent across routes.
|
||||
- **Colors and visual tokens:** no palette or semantic state color changed.
|
||||
Existing white surfaces, neutral borders and Semi blue selection states
|
||||
remain faithful to the current production design.
|
||||
- **Image quality and assets:** the supplied vector brand mark remains the
|
||||
single shell asset. No raster substitute, custom SVG or CSS-drawn asset was
|
||||
introduced.
|
||||
- **Copy and content:** no product copy changed. Compact navigation uses the
|
||||
existing accessible menu labels while hiding only visible text.
|
||||
- **Icons:** the existing Semi icon set remains optically centered in the 72px
|
||||
rail; selected and inactive states were checked at 901px and 1024px.
|
||||
- **Responsiveness:** no horizontal document overflow occurred at any tested
|
||||
boundary. The 390px mileage matrix retained fixed vehicle and total columns,
|
||||
horizontal date navigation and bottom navigation.
|
||||
- **Accessibility:** complementary navigation remains present at 681–1100px;
|
||||
mobile navigation remains available below 681px; the account menu remains
|
||||
fully inside the 901px viewport. This visual pass does not replace an
|
||||
assistive-technology audit.
|
||||
|
||||
## Interaction and console checks
|
||||
|
||||
- Monitor, Vehicles, Tracks and Statistics were navigated in the authenticated
|
||||
browser at 1024px and measured again at 1101px.
|
||||
- Route changes retained the shell, active navigation and full-width work area.
|
||||
- The 390px Statistics page preserved usable pagination and bottom navigation.
|
||||
- No application runtime error was observed. Semi UI's known React
|
||||
`findDOMNode` development StrictMode deprecation warning remains.
|
||||
- Automated gate: 73 test files and 379 tests passed; production build and
|
||||
release verification completed successfully.
|
||||
- Deployed production evidence:
|
||||
`/tmp/sidebar-continuity-20260720/14-monitor-901-production-after.png`.
|
||||
The authenticated ECS page measured a 72px rail and 829px main region at
|
||||
901px, with no horizontal overflow and no browser console warning or error.
|
||||
- Release `sidebar-continuity-ux-20260720171458` is active. The immutable
|
||||
release gate verified 74 current assets and 116 compatibility assets; the
|
||||
served shell stylesheet is byte-for-byte identical to the local build.
|
||||
|
||||
## Follow-up polish
|
||||
|
||||
- P3: replace the remaining Semi UI components that trigger React
|
||||
`findDOMNode` development warnings when the library exposes ref-safe
|
||||
alternatives.
|
||||
|
||||
final result: passed
|
||||
|
||||
Reference in New Issue
Block a user