# 数据统计页面重新设计 ## 1. 概述与目标 重新设计数据统计页面,使其与项目现有的深色赛博朋克/终端风格保持一致。采用单页垂直滚动布局,集成迷你图表,提供清晰的数据可视化。 ## 2. 设计语言 ### 视觉风格 - **主题**:深色赛博朋克 + 终端美学 - **背景**:`var(--bg-void)` 深空黑 - **强调色**:青色 `#00f5d4` (现有变量 `var(--accent-cyan)`) - **辅助色**:紫色 `#a855f7` (用于知识库等模块) - **卡片背景**:`rgba(13,21,37,0.8)` 半透明深蓝 - **边框**:`1px solid var(--border-dim)`,hover时发光 ### 字体 - **数字**:等宽字体 `var(--font-mono)`,大号加粗,带发光效果 - **标签**:`var(--font-display)`,9-10px,字母间距 0.15em - **正文**:`var(--font-mono)`,12-13px ### 动效 - 卡片 hover:边框发光 + 微弱上浮 - 数字:首次加载时淡入 - 图表:绘制动画 300ms ## 3. 页面结构 ### 单页垂直滚动布局(无 Tabs) ``` ┌─────────────────────────────────────────────────────┐ │ // DATA METRICS [页面标题] │ ├─────────────────────────────────────────────────────┤ │ [SYSTEM HEALTH] 系统健康模块 │ │ [CONVERSATIONS] 对话统计模块 │ │ [KNOWLEDGE] 知识库模块 │ │ [KANBAN] 看板模块 │ │ [COMMUNITY] 社区模块 │ │ [INSIGHTS] 个人洞察模块 │ └─────────────────────────────────────────────────────┘ ``` ## 4. 模块详细设计 ### 4.1 系统健康 (SYSTEM HEALTH) **位置**:页面最顶部,无需认证即可访问 **卡片布局**:4列网格 **指标卡片**: | 指标 | 图标 | 格式 | |------|------|------| | CPU 使用率 | Cpu | 45% + 7天迷你柱状图 | | 内存占用 | MemoryStick | 62% + 7天迷你柱状图 | | 磁盘使用 | HardDrive | 38% + 7天迷你柱状图 | | 运行时间 | Clock | 7d 3h 20m | **卡片样式**: - 尺寸:自适应,最小 160px - 数字大小:24px,等宽加粗 - 趋势图:高度 24px,7个数据点 - 标签:9px,letter-spacing 0.15em ### 4.2 对话统计 (CONVERSATIONS) **需要认证** **顶部汇总**:横排4个数字卡片 | 指标 | 值 | |------|-----| | 总对话数 | 1,234 | | 总消息数 | 5,678 | | Input Tokens | 12.5M | | Output Tokens | 45.2M | **图表**:30天趋势迷你折线图 - 4条线:对话数、消息数、Input Token、Output Token - 图例在图表下方 - 图表高度:120px - 颜色使用主题色 ### 4.3 知识库 (KNOWLEDGE) **需要认证** **顶部汇总**: | 指标 | 值 | |------|-----| | 新建标签 | 156 | | 文档数 | 89 | | 标签关系 | 423 | **图表**:30天趋势迷你折线图 - 3条线:新建标签、文档、标签关系 - 使用紫色系 `var(--accent-purple)` ### 4.4 看板 (KANBAN) **需要认证** **顶部汇总**: | 指标 | 值 | |------|-----| | 待办任务 | 12 | | 新建任务 | 45 (30天) | | 已完成任务 | 38 (30天) | **图表**:30天对比柱状图 - 两组柱:新建任务 vs 已完成任务 - 使用青色和绿色对比 ### 4.5 社区 (COMMUNITY) **需要认证** **顶部汇总**: | 指标 | 值 | |------|-----| | 发帖数 | 23 | | 回复数 | 156 | | AI 执行 | 12 | **图表**:30天趋势迷你折线图 - 3条线:发帖、回复、AI执行 ### 4.6 个人洞察 (INSIGHTS) **需要认证** **布局**:2列 **左侧 - 活跃时段**: - 24小时柱状图 - 显示高峰时段标记 **右侧 - Top 标签**: - 列表形式显示前5个常用标签 - 显示使用次数 **Token趋势**: - 本月 vs 上月对比 - 百分比变化(带颜色指示上升/下降) ## 5. 组件清单 ### MetricCard 指标卡片 ``` Props: - icon: Component (lucide图标) - label: string - value: string | number - trend?: number[] (可选,迷你图数据) - accentColor?: string (默认cyan) States: - default: 静态显示 - hover: 边框发光,轻微上浮 - loading: 骨架屏 - error: 显示 "--" 和错误图标 ``` ### MiniLineChart 迷你折线图 ``` Props: - data: { date: string, value: number }[] - color?: string - height?: number (默认40px) Features: - 纯CSS实现或tiny echarts - 无坐标轴,仅保留趋势 - 数据点过多时自动采样 ``` ### MiniBarChart 迷你柱状图 ``` Props: - data: number[] - color?: string - height?: number (默认24px) - maxBars?: number (默认7) ``` ### SectionHeader 区块标题 ``` Props: - title: string - tag?: 'cyan' | 'purple' | 'amber' (标签颜色) Style: - 格式:// SECTION_NAME - 左侧竖线装饰 - 标签 Chip 在右侧 ``` ### SummaryRow 汇总行 ``` Props: - items: { label: string, value: string | number }[] - columns?: number (默认4) ``` ## 6. 技术实现 ### 前端 - **框架**:Vue 3 + TypeScript (已有) - **图表库**:使用 CSS 实现迷你图,或 echarts (已有) - **图标**:lucide-vue-next (已有) - **状态管理**:Pinia (已有) - **API**:StatsView 中已有 stats API 调用 ### 后端 - 复用现有 `app/routers/stats.py` 和 `app/services/stats_service.py` - 确保所有接口正确返回数据 ### 样式 - 复用 `ChatView.vue` 中的设计变量和样式模式 - 使用 CSS Grid 实现响应式布局 - 变量:`--bg-panel`, `--accent-cyan`, `--border-dim`, `--font-mono` 等 ## 7. 响应式断点 | 设备 | 列数 | |------|------| | >= 1200px | 4列 | | 768px - 1199px | 2列 | | < 768px | 1列 | ## 8. 错误与空状态 ### Error State - 显示错误图标和文字 - 提供刷新按钮 - 保持页面结构完整 ### Empty State - 各模块独立空状态 - 不阻塞其他模块显示 - 友好提示文案 ### Loading State - 骨架屏动画 - 与卡片结构一致 ## 9. 访问控制 | 模块 | 认证要求 | 说明 | |------|----------|------| | 系统健康 | 否 | 所有人可看 | | 对话统计 | 是 | 需登录 | | 知识库 | 是 | 需登录 | | 看板 | 是 | 需登录 | | 社区 | 是 | 需登录 | | 个人洞察 | 是 | 需登录 | 未登录用户访问需认证模块时: - 显示占位卡片结构 - 提示"请先登录" - 不发送无效请求 ## 10. 数据刷新 - 页面进入时加载所有数据 - 支持手动刷新按钮(每个模块独立刷新) - 数字变化时无动画(避免干扰)