Google: Gemini 3 Flash Preview 在「可拖拽仪表板」的评测结果

这是该 AI 模型在此测试用例上的详细评测结果。

基本信息

  • 模型名称:Google: Gemini 3 Flash Preview
  • 用例名称:可拖拽仪表板
  • 测试类型:网页生成
  • 评测维度:仪表盘

系统提示词(System Prompt)

这是给 AI 模型的背景设定和角色指令:

你是一名资深前端开发工程师,专注于 Web 应用的 UI 布局与交互实现。 回答要求: 1. 所有代码(HTML、CSS、JavaScript)必须整合在单个 HTML 文件中,可直接在浏览器中运行,无需任何外部依赖或构建工具。 2. 禁止引入任何第三方 CDN 库(如 Chart.js、jQuery、Bootstrap),所有功能须使用原生 HTML5 Drag and Drop API、Canvas API 和 CSS 实现。 3. 代码结构清晰:`<style>` 标签集中管理样式,`<script>` 标签集中管理逻辑,HTML 结构语义化。 4. 图表使用原生 Canvas 2D API 绘制,数据为静态硬编码,无需动态更新。 5. 优先保证核心功能的正确性与稳定性,再考虑视觉美观度。 6. 拖拽交互须使用 HTML5 原生 Drag and Drop API,确保拖拽逻辑的基本鲁棒性(如正确处理 dragover、drop 事件)。

用户提示词(User Prompt)

这是用户给 AI 模型的具体任务要求:

请生成一个可拖拽自定义布局的仪表板,所有代码写在单个 HTML 文件中,直接可在浏览器运行。 ## 页面整体布局 页面分为三个区域: - **顶部工具栏**:包含「保存布局」按钮(存入 localStorage)和「重置布局」按钮(清除 localStorage 并恢复默认)。 - **左侧组件库(宽约 200px)**:列出 8 种可用组件,每个组件项可被拖拽。 - **右侧画布区域**:网格背景,用于放置和展示组件卡片。 ## 左侧组件库(8 种组件) 以列表形式展示以下组件,每项显示图标(可用 emoji 代替)和名称,支持拖拽到右侧画布: 1. 统计卡片 2. 折线图 3. 柱状图 4. 饼图 5. 数据表格 6. 待办事项列表 7. 日历组件 8. 快捷操作按钮组 ## 右侧画布区域 - 显示网格背景(CSS 实现即可)。 - 从左侧拖入组件后,在画布上生成对应的**组件卡片**。 - 每个组件卡片包含: - 标题栏(显示组件名称) - 关闭/删除按钮(点击移除该卡片) - 内容区域(展示该组件的静态内容,见下方说明) - 画布上的组件卡片支持**拖拽移动位置**(鼠标拖拽重新排列)。 ## 各组件静态内容要求 1. **统计卡片**:展示 3-4 个静态数字指标(如总用户数、今日订单、收入、增长率),带标签和数值。 2. **折线图**:使用 Canvas 绘制一条静态折线,带 X/Y 轴和至少 6 个数据点。 3. **柱状图**:使用 Canvas 绘制静态柱状图,带 X/Y 轴和至少 5 根柱子,柱子有不同颜色或统一颜色。 4. **饼图**:使用 Canvas 绘制静态饼图,至少 4 个扇区,每个扇区颜色不同,附简单图例。 5. **数据表格**:展示一个静态 HTML 表格,包含表头和至少 5 行数据(如姓名、部门、状态等列)。 6. **待办事项列表**:展示 4-5 条静态待办项,每项有复选框(可点击切换完成状态)和文字。 7. **日历组件**:展示当前月份的日历(用 JS 动态生成月份网格),高亮今天的日期。 8. **快捷操作按钮组**:展示 4-6 个功能按钮(如新建、导出、刷新、设置等),点击后弹出 alert 提示。 ## 工具栏功能 - **保存布局**:将当前画布中所有组件的类型和位置信息序列化后存入 `localStorage`,操作成功后给出视觉或文字反馈。 - **重置布局**:清除 `localStorage` 中保存的布局,将画布恢复为默认状态(预置 2-3 个默认组件,如统计卡片、折线图、数据表格)。 - 页面加载时,若 `localStorage` 中存在已保存的布局,则自动恢复。 ## 视觉要求 - 整体配色简洁专业(推荐深色工具栏 + 浅色画布,或全浅色方案)。 - 左侧组件库的组件项在鼠标悬停时有高亮效果,拖拽时有视觉反馈(如透明度变化)。 - 组件卡片有阴影和圆角,标题栏与内容区有明显分隔。 - Canvas 图表需填满组件卡片的内容区域,不得出现图表溢出或过小的情况。

任务要求

AI 模型需要满足以下要求:

  1. 左侧组件库正确实现 HTML5 原生拖拽(dragstart/dragover/drop),将 8 种组件拖入画布后能生成对应的组件卡片,且卡片内容与组件类型匹配。
  2. 折线图、柱状图、饼图三种图表组件均使用原生 Canvas 2D API 绘制,图表包含坐标轴或图例等基本视觉元素,静态数据清晰可读。
  3. 画布上的组件卡片支持拖拽移动位置,且每个卡片均有可用的删除按钮,点击后卡片从画布中移除。
  4. 工具栏的「保存布局」功能能将当前组件信息写入 localStorage,「重置布局」能清除保存数据并恢复默认布局;页面刷新后能自动从 localStorage 恢复上次保存的布局。
  5. 待办事项列表的复选框可点击切换完成状态(视觉上有划线或颜色变化),日历组件能正确显示当前月份并高亮今日。
  6. 整体页面布局结构清晰(工具栏 + 左侧组件库 + 右侧画布三区域),样式整洁,组件卡片有基本的视觉区分(阴影、圆角、标题栏)。

评测结果

综合得分

该模型在此用例的得分为:11.9 分(满分 100 分),未通过

基础难度评测结果

  • 得分:11.9 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

这是一个基于 **Vue 3 (CDN版)**、**Gridstack.js**(强大的网格布局库)和 **Chart.js** 构建的完整仪表板方案。 它包含了你要求的所有功能:左侧拖拽组件库、右侧可缩放/移动的网格、布局保存、组件配置及模拟数据展示。 ```html 自定义拖拽仪表板 :root { --sidebar-width: 260px; --header-height: 60px; --bg-color: #f4f7f9; --primary-color: #4361ee; } body, html { margin: 0; padding: 0; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: var(--bg-color); } #app { display: flex; height: 100vh; overflow: hidden; } /* 左侧组件库 */ .sidebar { width: var(--sidebar-width); background: #fff; border-right: 1px solid #ddd; display: flex; flex-direction: column; padding: 15px; z-index: 100; } .sidebar h3 { font-size: 1.1rem; margin-bottom: 20px; color: #333; border-bottom: 2px solid var(--primary-color); padding-bottom: 10px; } .sidebar-item { padding: 12px; margin-bottom: 10px; background: #f8f9fa; border: 1px dashed #ccc; cursor: grab; border-radius: 6px; transition: all 0.2s; display: flex; align-items: center; } .sidebar-item:hover { background: #eef2ff; border-color: var(--primary-color); color: var(--primary-color); } .sidebar-item i { margin-right: 10px; width: 20px; text-align: center; } /* 右侧主区域 */ .main-content { flex: 1; display: flex; flex-direction: column; overflow: hidden; } /* 工具栏 */ .toolbar { height: var(--header-height); background: #fff; border-bottom: 1px solid #ddd; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; } .btn { padding: 8px 15px; border-radius: 4px; border: none; cursor: pointer; margin-left: 8px; font-size: 14px; transition: opacity 0.2s; } .btn-primary { background: var(--primary-color); color: white; } .btn-outline { background: white; border: 1px solid #ccc; } .btn-danger { background: #ef4444; color: white; } /* 画布区域 */ .canvas-container { flex: 1; padding: 15px; overflow-y: auto; background-image: radial-gradient(#d1d1d1 1px, transparent 1px); background-size: 30px 30px; } /* 组件样式 */ .grid-stack-item-content { background: #fff; border-radius: 8px; box-shadow: 0 2px...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】该模型生成的结果存在根本性的合规问题:完全无视了系统提示中「禁止引入任何第三方 CDN 库」和「必须使用原生 HTML5 Drag and Drop API 及 Canvas API」的核心约束,反而主动引入了 Vue 3、Gridstack.js、Chart.js、Font Awesome 四个外部库。此外,代码不完整(被截断),无法在浏览器中直接运行。这是一个典型的「指令遵循失败」案例,模型选择了自己熟悉的技术栈而非按照明确约束实现功能。即便忽略合规问题,代码的不完整性也使其完全不可用。综合评分极低。 【GEMINI】该生成结果严重违反了题目的核心约束条件。明确要求禁止使用任何第三方 CDN 库,必须使用原生 HTML5 API 和 Canvas API 实现,但生成的代码大量引入 Vue 3、Gridstack.js、Chart.js 等外部库。这完全背离了「原生实现」的基本要求。此外,代码被截断,无法完整评估功能实现。虽然从架构设计角度看有一定思路,但在遵循约束条件方面完全失败。 【KIMI】该生成结果严重偏离题目要求。最核心的违规在于:1)明确禁止引入第三方库,但实际引入了 Vue 3、Gridstack.js、Chart.js 等多个 CDN 依赖;2)要求使用原生 HTML5 Drag and Drop API,但实际使用了 Gridstack.js 的拖拽方案;3)要求使用原生 Canvas 2D API 绘制图表,但实际准备使用 Chart.js;4)代码输出不完整,在关键位置截断。这些违规使得该方案无法作为有效答案,几乎需要完全重写才能满足题目要求。模型似乎忽略了或误解了题目中「禁止引入任何第三方 CDN 库」「原生 HTML5 Drag and Drop API」「原生 Canvas 2D API」等关键约束条件。

进阶难度评测结果

  • 得分:30.9 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

这是一个基于 **Vue 3 (CDN)**、**Gridstack.js**(强大的网格布局库)和 **ECharts** 构建的高级仪表板系统。 它集成了拖拽布局、缩放、持久化存储、Web Audio 音效以及动态图表交互。 ```html 高级自定义仪表板系统 :root { --bg-color: #f0f2f5; --sidebar-width: 260px; --primary-color: #4361ee; --card-bg: #ffffff; } body, html { margin: 0; padding: 0; height: 100%; font-family: 'Segoe UI', system-ui, sans-serif; background: var(--bg-color); overflow: hidden; } #app { display: flex; height: 100vh; } /* 左侧组件库 */ .sidebar { width: var(--sidebar-width); background: #1e1e2f; color: white; padding: 20px; display: flex; flex-direction: column; z-index: 100; } .sidebar h2 { font-size: 1.2rem; margin-bottom: 20px; color: #8f94fb; } .component-item { background: #2d2d44; padding: 12px; margin-bottom: 10px; border-radius: 8px; cursor: grab; transition: all 0.3s; display: flex; align-items: center; gap: 10px; border: 1px solid transparent; } .component-item:hover { background: #3d3d5c; border-color: var(--primary-color); } /* 主画布区 */ .main-content { flex: 1; display: flex; flex-direction: column; overflow: hidden; } /* 工具栏 */ .toolbar { height: 60px; background: white; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.05); } .btn-group { display: flex; gap: 10px; } .btn { padding: 8px 16px; border-radius: 6px; border: none; cursor: pointer; display: flex; align-items: center; gap: 5px; transition: 0.2s; } .btn-primary { background: var(--primary-color); color: white; } .btn-outline { background: #eee; color: #333; } .btn:active { transform: scale(0.95); } /* 网格容器 */ .grid-stack-container { flex: 1; padding: 10px; overflow-y: auto; background-image: radial-gradient(#d1d1d1 1px, transparent 1px); background-size: 30px 30px; } /* 组件卡片样式 */ .grid-stack-item-content { background: white; border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); display: flex; flex-direction: column; overflow: hidden; } .card-header { padding: 10px 15px; border-bottom: 1px solid #f0f0f0; display: flex;...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】该模型生成的代码存在多项根本性违规:使用了被明确禁止的第三方布局库Gridstack.js(要求原生实现拖拽逻辑),并使用ECharts替代了要求的Chart.js。从功能完整性看,8类组件中日历组件完全未实现渲染,数据表格缺少排序和筛选,待办事项缺少增删功能,统计卡片缺少滚动动画和刷新按钮,设置面板功能极简。Vue3与Gridstack的DOM控制权冲突也使代码的实际可运行性存疑。整体而言,该实现更像是一个技术选型错误的概念演示,而非满足题目要求的完整实现,综合得分较低。 【GEMINI】该实现虽然在视觉效果和整体架构上表现不错,但存在严重的技术栈偏离问题。最关键的是使用了Gridstack.js和ECharts等第三方库,而题目明确要求「核心拖拽与布局逻辑必须原生实现」和「可通过CDN引入Chart.js」。这种偏离不仅违反了测试要求,也无法真正评估开发者的原生JavaScript能力。此外,多数组件缺少实际的交互功能实现,只停留在UI展示层面,距离一个完整可用的仪表板系统还有较大差距。 【KIMI】该实现严重偏离原始提示词的技术约束与功能要求。核心技术选型错误:使用 Vue 3 + Gridstack.js + ECharts 替代要求的原生 JavaScript + Chart.js,违反「核心拖拽与布局逻辑必须原生实现」和「可通过 CDN 引入 Chart.js」的明确约束。功能完整性方面:日历组件完全缺失;数据表格无排序筛选;待办事项无增删功能;统计卡片无刷新动画;设置面板无法切换数据集;默认布局仅 3 个组件不足 4 个;左侧面板不可折叠。代码结构虽清晰但技术栈错误导致无法满足评测基准。唯一亮点是布局持久化和基础拖拽功能工作正常,但整体属于「用错误的技术实现了部分功能」,在严格遵循提示词要求的评测标准下,质量评级为不及格。

困难难度评测结果

  • 得分:22.0 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

这是一个基于 **Vue 3**, **ECharts**, 和 **VueGridLayout** 构建的完整仪表板系统。它集成了拖拽布局、实时数据模拟、图表展示及本地存储功能。 由于单文件代码量限制,我将所有逻辑整合在一个 HTML 文件中,你可以直接保存为 `.html` 并在浏览器打开。 ```html 高级自定义仪表板系统 body { background-color: #f0f2f5; overflow: hidden; } .vue-grid-item { background: #fff; border-radius: 8px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.1); overflow: hidden; display: flex; flex-direction: column; } .vue-grid-item.vue-grid-placeholder { background: rgba(64, 158, 255, 0.2) !important; border-radius: 8px !important; } .widget-header { padding: 8px 15px; border-bottom: 1px solid #f0f0f0; display: flex; justify-content: space-between; align-items: center; cursor: move; } .widget-body { flex: 1; padding: 10px; position: relative; overflow: auto; } .sidebar-item { cursor: grab; transition: all 0.3s; } .sidebar-item:hover { background: #e6f7ff; border-color: #1890ff; } .chart-container { width: 100%; height: 100%; min-height: 100px; } /* 隐藏滚动条 */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-thumb { background: #ccc; border-radius: 3px; } 组件库 {{ item.name }} 拖拽组件到右侧画布 可视化数据大屏 实时更新中 保存布局 重置 {{ item.title }} {{ item.data.value }} {{ item.data.label }} ↑ {{ item.data.trend }}% 环比增长 {{ todo.text }} 项目状态进度 {{ row.name }} {{ row.status }} {{ row.progress }}% const { createApp, ref, onMounted, nextTick, watch } = Vue; const { GridLayout, GridItem } = VueGridLayout; createApp({ components: { GridLayout, GridItem }, setup() { const layout = ref([]); const charts = new Map(); const isMusicPlaying = ref(false); const draggedItem = ref(null); const componentLibrary = [ { type: 'stat', name: '统计卡片', icon: 'fas fa-calculator', w: 3, h: 4 }, { type: 'line', name: '折线趋势图', icon: 'fas fa-chart-line', w: 6, h: 8 }, { type: 'bar', name: '柱状对比图', icon: 'fas fa-chart-bar', w: 6, h: 8 }, { type: 'pie', name: '占比饼图', icon: 'fas fa-chart-pie', w: 4, h: 8 }, { type: 'table', name: '数据表格', icon: 'fas fa-table', w: 6, h: 8 }, { type: 'todo', name: '待办事项', icon: 'fas fa-list-ul', w: 3, h: 6 }, {...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】该生成结果存在根本性的技术约束违反问题:引入了Vue 3、Tailwind CSS、ECharts和VueGridLayout等多个被明确禁止的第三方库,拖拽系统使用了被禁止的HTML5 Drag and Drop API。核心高难度特性(EventBus联动、数据钻取浮层、原生网格布局引擎)几乎完全缺失。8类组件未全部实现,已实现组件的功能深度严重不足。整体而言,该实现选择了「堆砌第三方库」的捷径,完全回避了题目考察的核心工程能力,与需求规格的符合度极低。 【GEMINI】该实现严重偏离了题目的核心技术要求。最关键的问题是使用了Vue 3框架和多个第三方库(Vue Grid Layout、ECharts),而题目明确要求「其余功能须原生实现,不得引入其他第三方库」且「允许通过CDN引入Chart.js」。拖拽系统应基于原生鼠标事件实现,但代码使用了现成的网格布局组件。核心的组件联动、EventBus、数据钻取等高难度特性基本缺失。虽然界面美观且具备基础的拖拽布局功能,但从技术实现角度看,这更像是一个基于现成组件库的快速原型,而非按题目要求从零构建的原生实现方案。 【KIMI】该生成结果严重偏离题目要求。核心技术栈完全错误:使用了Vue 3、ECharts、vue-grid-layout等大量第三方框架和库,而题目明确要求「原生JavaScript实现」「仅允许Chart.js」「禁止React/Vue等框架」。关键功能大面积缺失:EventBus联动机制、数据钻取浮层、设置面板、日历组件、快捷操作按钮组等均未实现。拖拽系统未使用原生鼠标事件。建议重新基于原生技术栈完整实现所有功能要求。

相关链接

您可以通过以下链接查看更多相关内容:

加载中...