feat(status): redesign /status page aligning to check-cx UI (#1076)
* feat(status): redesign /status page aligning to check-cx UI - 模型卡片右上角新增「可用/降级/错误/无数据」状态徽章(按可用率阈值 50% 派生) - 历史状态条改为紧凑单行 + shadcn Tooltip(时段/可用率/TTFB/TPS/样本数) - 无请求时段格子按相邻状态无界双向填充,告别灰色断层 - 统计窗口对齐对标项目:在线率/TTFB 用 24h,时间线 5h × 60 点 - Hero / 网格背景 / 工具栏 1:1 复刻 check-cx 视觉 - 分组默认折叠,支持 dnd-kit 拖拽重排,搜索框过滤分组与模型名 - 折叠状态与自定义顺序持久化到 localStorage - 5 种 locale 同步新增 statusBadge / tooltip / search 等文案 - 新增 4 个纯函数 lib + 33 个单测全部通过 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(status): address bugbot review comments on PR #1076 - timeline tooltip uses cell.inferred flag instead of sampleCount===0 避免后端 sampleCount=0 但状态非 no_data 时误显示推断提示 - pre-memoize per-model derived data (filled/uptime/ttfb/latest) 防止搜索每次按键都重算,缩短 keystroke 延迟 - disable drag while filtering, drag against full ordered list 防止筛选状态下拖拽污染未匹配分组的持久化顺序 - localize status-toolbar clear button aria-label (新增 clearSearch i18n) - fix zh-TW mojibake in inferredFromNeighbors tooltip copy Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(status): address second-round bugbot feedback on PR #1076 - deriveDisplayState: 当 pct=null 时尊重 bucket.state==='degraded',否则视为 operational - formatRange: 同时校验 endDate,避免 'Invalid Date' 渲染 - timeline: aria-label 改用 i18n historyAriaLabel;移除未用的 tooltip.timeRange - sortable-group-panel: 拖拽手柄 aria-label 抽 dragHandleLabel prop(5 语言) - group-order-store: - reconcileOrder 用 Set 去重 stored 输入 - isBrowser try/catch window.localStorage 访问,避免 SecurityError - status-page.css: 加 isolation:isolate 形成局部 stacking context - public-status-view: refresh 检查 response.ok;orderedGroups filter 用类型谓词 - 新增 deriveLatestModelState 单测覆盖 state='degraded' + pct=null Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
D
Ding committed
492f245674bdda860bcf4da2c3443b47227c8fcc
Parent: 7c5a695
Committed by GitHub <noreply@github.com>
on 4/22/2026, 5:10:50 PM