1. 主题系统扩展 (5套主题) - ocean-deep(深海蓝) / light-professional(明亮白) / midnight-purple(午夜紫) - pine-green(松林绿) / orange-vitality(活力橙) - useTheme hook 重写支持5主题 + 向后兼容 - AppearanceSettings 5主题预览卡片 2. 设计体系 (index.css) - 按钮系统: dg-btn-primary/secondary/ghost/danger + 尺寸变体 - 徽章系统: dg-badge-* (8色) - 卡片/表格: dg-card-section, dg-table-row, dg-table-header - 状态点: dg-status-dot-* (4色) - 动效关键帧: slideInLeft, scaleIn 3. 菜单重组 (menu.ts) - 5分组: 概览/数据源/工单/权限/系统 - 6个图标更新: Code2/FileEdit/ShieldCheck/FolderLock/ScrollText/Timer - 新增 permission 权限码字段 4. Layout 侧边栏增强 - 左侧渐变指示条 + 发光效果 - hover 微动画 + 图标变色 - 面包屑导航头部 - 主题切换循环5主题 5. 核心页面优化 - TicketsPage: 设计系统类 + 颜色对齐 - QueriesPage: 去Card依赖 + dg-table/dg-btn统一 - Breadcrumb组件 + useBreadcrumb hook
16 KiB
2. 现状问题诊断
经过对 SQL-Platform 前端代码库的全面审阅与走查,我们共识别出 5 大维度、23 项具体问题。这些问题贯穿登录认证、主题系统、核心功能页面、菜单导航以及整体设计体系,严重程度从"视觉瑕疵"到"架构性债务"不等。以下按模块逐项展开诊断。
2.1 登录页面五大问题分析
平台提供了 5 种登录页面布局(SplitView、CenteredCard、SidePanel、FullImage、MinimalDark),位于 /frontend/src/components/login/ 目录下。尽管数量丰富,但 5 个组件共享大量共性问题,且各布局存在特有的设计缺陷。以下从视觉层次、交互体验、品牌感知、组件化程度和动效反馈五个维度进行诊断。
2.1.1 视觉层次薄弱
共性问题:5 个登录页均缺乏清晰的视觉焦点层级,背景、装饰元素与核心表单区域之间的对比关系处理随意。
| 布局组件 | 具体视觉问题 | 严重程度 |
|---|---|---|
SplitView.tsx |
左侧特性列表采用简单 icon+文字网格排列,无卡片包裹、无分割线,各 feature 项视觉权重完全一致,用户难以快速扫描核心卖点 | 中 |
CenteredCard.tsx |
渐变背景仅为单色线性过渡,无纹理或光晕层次;卡片阴影硬编码为 0 8px 32px rgba(0,0,0,0.3),缺乏环境光感,呈现"浮空贴图"效果 |
中 |
SidePanel.tsx |
装饰性圆圈使用 borderRadius: 50% 的 div 硬编码,无渐变填充、无模糊处理,视觉上如同"开发占位符";品牌区域仅放置 Database 图标,无品牌图形标识 |
高 |
FullImage.tsx |
电路板网格背景使用 CSS repeating-linear-gradient 实现,线条粗细一致、无辉光效果,整体呈现"半成品 sketch"观感;毛玻璃效果 backdrop-filter: blur(16px) 未配合饱和度降低( saturate)与边缘高光,通透感不足 |
高 |
MinimalDark.tsx |
几乎无任何装饰性设计元素,纯黑背景+白字表单的极简走向极端,缺乏辅助视觉引导线或光晕点缀,整体显得空旷冷清 | 中 |
根因分析:各登录页的开发重心放在"布局差异化"上,却忽视了"视觉深度营造"。装饰元素的实现手段停留在 CSS 基础属性层面,未利用渐变、噪点纹理、多层阴影、边缘发光等现代视觉技法来建立前景/中景/背景的三层空间关系。
2.1.2 交互体验不足
登录作为用户进入平台的第一触点,其交互体验直接影响用户对平台专业度的初始判断。当前 5 个登录组件在表单交互方面存在系统性缺陷:
-
表单验证视觉反馈缺失:全部使用原生
<input>元素,未采用 shadcn/ui 的<Input>组件。输入框在 focus、error、success 三种状态下均无边框颜色变化、无图标提示、无 shake 动画。用户提交错误表单后,仅能看到简单的红色文字提示,错误字段本身没有任何视觉变化。 -
"记住我"功能缺位:5 个登录页均未提供"记住账号/保持登录"选项。对于企业级工具而言,频繁的会话过期与重复登录是显著的效率损耗点。
-
"忘记密码"入口缺失:没有提供密码找回或重置的链接入口,用户一旦遗忘密码将无从操作。
-
安全提示文字缺失:未展示"建议使用强密码"、"登录即表示同意服务条款"等合规性文案,降低了平台的安全可信度。
-
版本号显示缺失:登录页未展示当前平台版本号(如
v2.4.1),不利于运维排查与用户反馈时的版本确认。
2.1.3 品牌感缺失
品牌名在所有 5 个登录页中统一硬编码为"SQL审核平台",名称过于直白、缺乏品牌辨识度与情感连接。对比业界标杆产品(如 Bytebase 的科技感命名、Archery 的品牌化 Logo),当前的命名策略停留在"功能描述"层面,未形成品牌记忆点。
更关键的是,5 个登录页均未展示品牌标识(Logo、品牌图形、吉祥物或标志性配色)。SidePanel 仅用 Database 通用图标代替品牌图形,CenteredCard 完全没有任何品牌标识。登录页作为品牌视觉锤的核心触点,未能承担品牌认知建设的职责。
2.1.4 组件化程度低
从代码实现层面审视,5 个登录组件存在显著的工程化债务:
- 未使用 shadcn/ui
<Input>组件:全部直接使用原生<input>,导致表单样式无法继承主题系统的 CSS 变量,切换主题时可能出现颜色断层。 - 内联样式泛滥:表单样式大量使用内联
style属性(如style={{ padding: '24px', borderRadius: '8px' }}),而非 Tailwind CSS 工具类。这破坏了项目的样式一致性,也增加了主题切换的维护成本。 - 按钮样式不统一:有的登录按钮使用渐变背景,有的使用纯色,有的使用 outline 样式,5 个组件之间没有共享按钮规范。
- 登录按钮 loading 状态简陋:loading 状态仅通过文字变化(如"登录中...")体现,无 spinner 图标、无按钮宽度保持、无禁用状态视觉变化,用户可能因按钮"变形"而产生疑惑。
改进方向:应将登录表单抽象为可复用的 <LoginForm> 组件,统一使用 shadcn/ui 的 Input、Button、Checkbox、Label 等原子组件,并通过 Tailwind class 管理所有样式。
2.1.5 动效与反馈匮乏
当前登录页的动效设计几乎处于空白状态:
| 交互场景 | 当前表现 | 期望表现 |
|---|---|---|
| 登录成功 | 直接跳转,无过渡动画 | 显示成功 checkmark 动画,延迟 400ms 后优雅跳转 |
| 登录失败 | 简单红色文字提示 | 表单 shake 动画 + 错误字段高亮 + 带图标的错误消息 |
| 输入框 focus | 无特殊效果 | 边框颜色过渡 + 柔和外发光(ring) |
| 按钮 hover/click | 无反馈或仅有透明度变化 | 微缩放 + 阴影加深 + 涟漪效果 |
| 页面加载 | 静态呈现 | 表单区域的 fade-in + translateY 入场动画 |
根因分析:开发过程中未引入动画库(如 framer-motion),所有交互反馈停留在浏览器默认行为层面。登录页作为情感化设计的最佳载体,动效的缺失使得整体体验显得"机械"与"冰冷"。
2.2 主题系统局限性
当前主题系统仅支持 dark 与 light 两种模式,通过 data-theme HTML 属性进行切换,主题选择入口位于 AppearanceSettings 页面,以简单的按钮组形式呈现。
核心局限点:
-
色彩方案单一:缺乏紫色系、绿色系、暖色系、高对比度等多元色彩方案。现代 SaaS 平台(如 Vercel、Notion、Linear)通常提供 4-8 种预设主题,以满足不同用户的审美偏好与无障碍需求。
-
主题预览简陋:预览区域仅以 4:3 比例的缩略图展示,用户无法直观感受主题在真实数据密度下的表现。建议提供可交互的实时预览(如展示表格、按钮、标签等组件的组合效果)。
-
主题切换过渡生硬:切换主题时无过渡动画,页面瞬间"闪切",视觉体验断裂。应加入 200-300ms 的颜色过渡动画(
transition: color, background-color)。 -
自定义能力缺失:高级用户无法调整主色调、圆角大小、字体密度等参数。建议提供"自定义主题"模式,允许用户通过色盘选择器定义个性化的品牌色。
-
CSS 变量覆盖范围不足:部分组件仍使用硬编码颜色值,未完全纳入 CSS 变量体系,导致主题切换时存在"漏色"现象。
2.3 核心功能页面问题
2.3.1 审批变更工单系统
工单系统包含 3 个核心页面,总计 2742 行代码,存在显著的 UX 债务:
审批变更页(TicketsPage.tsx,742 行):
- 表格使用原生
<table>元素,未使用 shadcn/ui 的Table组件,导致列头排序、列宽调整、行悬停效果等功能全部缺失。 - 状态标签样式极其简单(如
bg-blue-500/15 text-blue-400),仅为色块+文字,无圆角规范、无图标辅助、无二态(solid/soft)区分。 - 操作按钮采用简单文字链接形式("查看""编辑""删除"),无图标按钮、无操作菜单(dropdown menu),在窄屏下易折行。
- 缺少批量操作功能:用户无法对多条工单进行批量审批或批量关闭,效率低下。
- 搜索框为原生
<input>,无搜索图标、无清除按钮、无搜索建议。 - 分页组件为手写实现,未使用 shadcn/ui
Pagination,样式与平台其他分页区域不统一。
工单创建页(TicketCreatePage.tsx,1192 行):
- 布局采用上下堆叠的线性结构,左侧 SQL 编辑器与右侧库表浏览面板的空间配比固定,未利用响应式网格最大化编辑区域。
- SQL 编辑器下方的信息条(行数、字符数、语法状态)样式过于简单,无图标、无色彩状态区分。
- 审核结果展示为扁平列表,缺乏视觉层次:通过/失败的规则未使用不同颜色或图标区分,高亮行与错误行的视觉权重相近。
- 库表浏览面板的 tab 切换样式为基础样式,无活跃 tab 的指示器动画。
- 无自动保存草稿功能:用户误刷新页面后,已编写的 SQL 将全部丢失,这是企业级工具的高风险体验缺口。
工单详情页(TicketDetailPage.tsx,808 行):
- 审批流程可视化使用简单圆形+直线实现,无节点状态图标(如
Check、Clock、X)、无连线动画、无进度百分比指示。 - 信息网格采用 2 列 flex 布局直接裸露呈现,无卡片包裹、无分割线、无标签-值的对齐规范。
- 执行结果直接展示原始 JSON 字符串,无格式化、无语法高亮、无可折叠区域,运维人员阅读极为困难。
- 关联工单区域仅为简单的工单编号链接列表,无状态徽章、无优先级标识。
2.3.2 查询数据页面
QueriesPage.tsx(896 行)作为数据查询的核心工作区,存在以下 UX 问题:
- 查询结果表格同样使用原生
<table>,列宽不可调整(无拖拽调整功能),对于宽表(20+ 列)的浏览体验极差。 - 缺少查询收藏夹功能:用户无法保存常用的查询语句,每次需重新输入或从历史中翻找。
- 历史记录面板为简单的文字列表,无查询耗时显示、无行数结果、无收藏/删除操作。
- SQL 编辑器与结果表格之间的区域无明确的分割线或可调整拖拽条(resizer),用户无法按需求分配编辑区与结果区的屏幕空间。
2.3.3 系统设置页面
SettingsPage.tsx(56 行)作为设置入口,问题尤为突出:
- Tab 图标使用 Emoji(
🎨外观、⚙️平台、🛡️安全、🔔通知、🔐密码),与平台其他页面统一使用的lucide-react图标体系严重冲突,视觉风格割裂。Emoji 在不同操作系统下的渲染差异也会导致界面不统一。 - Tab 切换无动画过渡,内容区域的切换为瞬间跳转,体验生硬。
- 各设置子页面的表单设计不一致:有的使用 shadcn/ui 组件,有的(如
PlatformConfigPage)直接使用原生<input>,标签对齐方式、间距、按钮位置均不统一。 - 缺少设置变更确认/撤销机制:用户在修改敏感配置(如数据库连接参数)后,没有二次确认对话框;也没有"重置为默认值"或"撤销本次更改"的功能,误操作风险高。
2.4 菜单体系问题
平台的侧边栏导航菜单存在以下结构性问题:
-
图标体系不统一:
Settings页面使用 Emoji 图标,而其他所有页面使用lucide-react图标库。这种混用破坏了导航的视觉一致性,也降低了专业感。 -
菜单分组合理性不足:当前菜单分为 6 个 section,但部分分类逻辑存在问题。例如"自动任务"被归类在"系统配置"分组下,而从用户心智模型来看,自动任务属于"运维操作"范畴,与"系统配置"(偏静态参数)的认知类别不同。建议重新审视信息架构,采用"按用户角色分组"或"按操作频率分组"的策略。
-
面包屑导航缺失:页面层级超过 2 层后(如 设置 > 平台配置 > 数据库参数),用户无法通过面包屑快速定位当前位置或返回上级,只能依赖浏览器后退按钮。
-
Hover/Active 状态过渡动画缺失:菜单项的悬停和激活状态切换为瞬间变化,无 150-200ms 的颜色/背景过渡动画,整体感觉"卡顿"而非"响应"。
-
当前页面指示不够醒目:激活菜单项仅通过轻微的颜色变化区分,缺乏左侧边框高亮(
border-leftaccent)或背景色块等强指示手段。
2.5 设计体系不一致性
从代码层面审视,平台在整体 design system 的贯彻执行上存在严重的碎片化现象:
卡片组件混用:部分页面使用 shadcn/ui 的 <Card> 组件(如 Dashboard),部分页面使用 <div> 手写卡片样式(如工单详情页的信息网格)。手写卡片的圆角、阴影、边框、背景色与 shadcn/ui Card 的默认参数存在细微差异,积累后形成显著的视觉噪音。
按钮样式分裂:平台内同时存在 3 种按钮风格——渐变按钮(部分登录页)、纯色填充按钮(shadcn/ui 默认)、outline 描边按钮(部分操作栏)。三种风格的使用没有明确的场景规范,同一页面内也可能混用,破坏了操作隐喻的一致性。
表单输入框样式差异:有的页面使用 shadcn/ui <Input>(带统一的 focus ring、圆角、高度),有的页面使用原生 <input>(样式依赖浏览器默认),有的页面使用内联样式自定义的输入框。三种实现的视觉高度、边框粗细、焦点反馈均不相同。
颜色管理混乱:部分组件使用硬编码颜色值(如 rgba(0,0,0,0.3)、#3b82f6),部分组件使用 CSS 变量(如 hsl(var(--primary))),部分组件使用 Tailwind 的语义化 class(如 bg-primary)。当主题切换或品牌色调整时,硬编码的颜色值不会跟随变化,导致"漏色"与视觉断层。
间距系统缺失:各页面的 padding 和 margin 取值随意,无统一的 spacing scale。例如有的卡片内边距为 16px,有的为 20px,有的为 24px;页面级的外边距也无统一规范(pagePadding token 缺失)。这种不一致使得页面之间的"呼吸感"差异明显,整体缺乏精致感。
根因总结:以上不一致性的根本原因在于缺乏一个被严格执行的 Design Token 体系与组件使用规范。开发人员在实现新页面时,没有明确的"应该使用哪个组件、哪个 token"的指引,导致各页面"各自为政"。建议引入一套完整的 Design Token(颜色、间距、字体、阴影、圆角)并配合 ESLint 规则强制在组件层面统一规范。
本章小结:SQL-Platform 的现状问题可归纳为"功能可用但体验粗糙"。登录页面作为品牌门面,在视觉层次、交互反馈、品牌感知上均有显著短板;核心功能页面(工单系统、查询页面、设置页面)在组件选型、布局效率、信息架构上存在系统性债务;主题系统与菜单体系的局限性则反映了设计体系在规划层面的不足。这些问题并非孤立存在,而是相互交织:设计体系的碎片化导致了各页面实现的不一致,组件化程度低导致了交互体验的简陋,主题系统的局限又加剧了视觉风格的单一。后续章节将针对这些问题提出具体的优化方案。