57 lines
3.7 KiB
Markdown
57 lines
3.7 KiB
Markdown
# Compact Fleet Cards Design
|
|
|
|
**Date:** 2026-07-30
|
|
|
|
**Status:** Approved
|
|
|
|
## Intent
|
|
|
|
Increase the Fleet workbench's information density without moving the desktop overview and search out of the left sidebar. Remove the aggregate health strip because its fleet-wide CPU, memory, temperature, SMS, and online-rate values do not support the operator's primary workflow. Restore the upstream SimAdmin version to each instance card.
|
|
|
|
## Layout Contract
|
|
|
|
- The desktop overview and search remain in the left sidebar.
|
|
- The results pane starts with the existing node-group tabs, followed by the result count, sort control, and card matrix.
|
|
- The entire `节点资源健康` strip is removed, including online rate, average CPU, average memory, highest temperature, and SMS channel count.
|
|
- The card matrix uses explicit viewport contracts: 1 column at 390px, 2 at 768px, 2 at 1024px, 4 at 1440px, and 5 at 1920px.
|
|
- Cards continue to fill their grid tracks so the results pane has no artificial side gutters or fixed-width card gaps.
|
|
|
|
## Card Contract
|
|
|
|
- Keep the current warm, shadowless telemetry-card visual language: cream surface, warm hairline border, brown typography, mint status accents, and restrained interaction feedback.
|
|
- Keep identity, status, batch selection, and the accessible action menu in the header.
|
|
- Render the upstream version beneath the instance name as `SimAdmin <version>`.
|
|
- When the upstream resource summary has no version, render `版本未知`; do not confuse the instance configuration revision with the SimAdmin version.
|
|
- Keep per-instance origin, tags, capabilities, phone number, maximum temperature, CPU, memory, and latest SMS because these values support node-level diagnosis.
|
|
- Preserve truncation and wrapping safeguards for narrow cards. The origin and long names may truncate with their full values available through existing accessible names or titles; hardware values must remain readable.
|
|
|
|
## Version Data Flow
|
|
|
|
The API resource endpoint already returns the upstream SimAdmin version. The observed local response from `/api/v1/instances/:id/resources` contains `version: "1.1.6"`. The API resource service, web data source, and Fleet view model already preserve this field. The defect is isolated to card rendering, which currently omits `row.version`.
|
|
|
|
The implementation therefore adds no new endpoint or fallback parser. It renders `row.version` in the identity area and tests the existing API-to-view-model contract to prevent another presentation-layer omission.
|
|
|
|
## Responsive Behavior
|
|
|
|
- At 390px the page remains a single card column.
|
|
- At 768px the stacked workspace uses two columns.
|
|
- At 1024px the left sidebar remains visible and the results pane uses two columns to protect minimum readable card width.
|
|
- At 1440px the results pane uses four compact columns.
|
|
- At 1920px it uses five compact columns.
|
|
- Menus, tags, telemetry rows, phone numbers, temperatures, and version labels must stay within card and viewport bounds.
|
|
|
|
## Testing
|
|
|
|
- Component tests assert the aggregate health region is absent.
|
|
- Component and integration tests assert a resource version renders as `SimAdmin 1.1.6` and a missing version renders as `版本未知`.
|
|
- Existing card navigation, menu, selection, restart, resource, and SMS tests remain green.
|
|
- Real Chrome E2E asserts the 1/2/2/4/5 column contract at 390/768/1024/1440/1920 and checks version/card geometry.
|
|
- Screenshots are reviewed at mobile and desktop widths for wrapping, overlap, excess whitespace, and accidental sidebar movement.
|
|
|
|
## Out Of Scope
|
|
|
|
- No API contract or database changes.
|
|
- No changes to instance-detail telemetry.
|
|
- No removal of per-instance CPU, memory, temperature, phone, or SMS data.
|
|
- No movement of overview or search controls into the results pane.
|