- 修复 build script 引用已删除的 registerCheckers,恢复生产构建 - 生产入口添加 SIGINT/SIGTERM 优雅关闭(与 dev.ts 一致) - 新增 runtime.retention 配置(默认 7d),ProbeStore.prune() 定时清理过期数据 - parseDuration 扩展支持 h/d 单位 - 新增前端 ErrorBoundary 组件,防止渲染错误白屏 - Vite codeSplitting.groups 拆分 vendor chunks(业务代码 1180KB → 47KB) - 同步 delta specs 到主规范
2.3 KiB
2.3 KiB
Purpose
定义拨测系统前端 Dashboard 页面:总览统计卡片、页面标题、加载和错误状态处理。分组表格布局见 target-table,目标详情 Drawer 见 target-detail-drawer,数据轮询和缓存见 tanstack-query-data-layer。
Requirements
Requirement: 总览统计卡片
Dashboard SHALL 在页面顶部使用 TDesign Statistic 组件展示总览统计,包含总目标数、正常数和异常数。
Scenario: 展示统计卡片
- WHEN 用户打开 Dashboard 页面
- THEN 页面顶部 SHALL 使用 TDesign Row/Col 布局展示 3 个 TDesign Card + Statistic 组合:全部目标数(color=blue)、正常目标数(color=green)、异常目标数(color=red)
Scenario: 统计数据自动刷新
- WHEN 页面处于打开状态
- THEN 统计卡片 SHALL 通过 TanStack Query 的 refetchInterval=8000 自动刷新数据
Requirement: 页面标题
Dashboard 页面 SHALL 使用 TDesign Typography 组件渲染标题和副标题。
Scenario: 页面标题渲染
- WHEN Dashboard 页面渲染
- THEN 页面标题 SHALL 使用 TDesign Typography.Title 组件(level="h1")渲染"DiAL",副标题 SHALL 使用 Typography.Text 组件(theme="secondary")渲染"统一拨测平台"
Requirement: 页面加载与错误状态
Dashboard SHALL 使用 TDesign 组件正确处理加载状态和 API 错误。
Scenario: 首次加载
- WHEN 页面首次加载且数据尚未返回
- THEN 表格 SHALL 显示 TDesign Loading 加载状态
Scenario: API 请求失败
- WHEN 前端 API 请求失败
- THEN 页面 SHALL 使用 TDesign Alert 组件(theme=error)显示错误提示
Requirement: 前端构建产物拆分
前端生产构建 SHALL 将 vendor 依赖拆分为独立 chunk,利用浏览器并行加载和长期缓存。
Scenario: vendor chunk 拆分
- WHEN 执行前端生产构建
- THEN 构建产物 SHALL 包含独立的 vendor chunk(react、tdesign、recharts 各自独立),而非单个 bundle
Scenario: 业务代码变更不影响 vendor 缓存
- WHEN 仅修改业务代码(src/web/ 下非 node_modules 文件)并重新构建
- THEN vendor chunk 的文件名(含 hash)SHALL 保持不变,浏览器缓存 SHALL 继续有效