StationBuilder · 设计方案

文档版本:v0.28 最后更新:2026-08-21 修改人:wang.yu 状态:开发中(演示数据已标注)

StationBuilder 产品与交互设计方案

1. 文档说明

本文档说明 StationBuilder(站点 / 领域方案 AI 生成工具)的整体结构、所有页面与菜单、每个交互元素的功能 / 数据来源 / 交互效果,以及端到端的生成流程。面向研发、设计与评审人员。

2. 产品概述

StationBuilder 是面向 iStation 团队的内部工具,用于通过 AI 大模型与 可视化生成 Skill 快速生成站点的大屏看板(Cube 仪表盘 JSON)、资产配置、功能菜单与领域方案,并可预览、反馈微调与打包下载。核心用户路径为:站点列表 → 站点详情(基本属性 / 资产 / 功能与菜单 / 生成确认)→ 站点结果 / 页面预览

3. 整体导航与菜单

3.1 顶栏(Topbar)

元素功能数据来源交互效果
汉堡按钮 ☰布局占位(移动端菜单预留)当前无行为 尚未实现
品牌区 iStation / iStation Team / StationBuilder⌄标识当前产品与模块静态纯展示
设计方案 链接打开本设计文档静态链接 /design-doc.html新标签页打开;位于登录者名称左侧
模型选择(AI 问答 · 模型名⌄)切换 AI 问答模型前端 MODELS 常量点击弹出模型列表,仅「免费」模型可选(其余置灰);仅影响 AI 问答,不影响生成(生成使用后端固定配置模型)
登录者头像 W / 邮箱当前登录身份展示静态演示演示态,点击头像返回登录页 登录态尚未实现(登录页不在本文档单列章节)

3.2 左侧导航整体结构(side-nav)

左侧导航由固定顶部的「模块切换」+ 随当前模块/页面动态渲染的「分组与菜单项」组成。同一时刻仅一个模块高亮,菜单项按当前所在模块展示不同内容。完整结构如下:

side-nav
├─ 模块切换 module-switch(互斥,仅一个高亮)
│   ├─ StationBuilder        → 站点项目(站点列表)
│   ├─ 领域方案库             → 领域方案库页
│   └─ 页面样式库             → 页面样式库页
│
├─ 【StationBuilder 模块时】(当前页非 方案库/样式库)
│   ├─ 站点列表
│   │   └─ 站点项目           → projects
│   └─ 站点详情
│       ├─ 站点切换器 <select>(列出全部站点)
│       ├─ 生成向导
│       │   ├─ 1 基本属性     → basic
│       │   ├─ 2 资产         → assets
│       │   ├─ 3 功能与菜单   → functions
│       │   └─ 4 生成确认     → generate
│       └─ 方案交付
│           ├─ 站点结果        → result
│           └─ 页面预览        → preview
│
├─ 【领域方案库模块时】(domains / domainDetail / deviceTemplates)
│   ├─ 方案库导航
│   │   ├─ 领域方案            → domains(方案列表,支持列表/卡片切换;点击具体方案打开 domainDetail)
│   │   └─ 设备模版            → deviceTemplates(独立页面,编辑设备模版与采集点,供方案选用)
│   └─ 领域分类(动态二级菜单:来自 GET /api/domains;点击即按该领域筛选方案列表)
│       ├─ (领域 A)          → domains + domainFilter=领域A(自动列出该领域全部方案)
│       │   └─ ×(删除,仅非「其他」领域;确认后其方案归入「其他」)
│       ├─ (领域 B)          → domains + domainFilter=领域B(同上,含 × 删除)
│       ├─ …(按数据库 domains 表动态渲染)
│       └─ + 新增领域          → 行内输入框(最多 6 字,Enter 确认 / Esc 取消)POST /api/domains 并刷新
│
└─ 【页面样式库模块时】(styleLibrary)
    └─ 样式库导航
        └─ 全部页面样式        → styleLibrary
导航元素所属模块 / 分组功能数据来源交互效果
模块切换三个按钮module-switch切换三大模块前端 state(page)互斥高亮;点击切换至模块首页(见 3.3)
站点项目StationBuilder / 站点列表进入站点列表点击 go("projects");当前页高亮
站点切换器 <select>StationBuilder / 站点详情在已建站点间快速切换GET /api/db/sites选择后加载该站点并跳转(在列表页则进基本属性,在详情页则停留在当前子页)
1 基本属性 / 2 资产 / 3 功能与菜单 / 4 生成确认StationBuilder / 生成向导生成向导分步导航前端 state点击 go 对应页;当前步骤高亮;已完成步骤可回跳
站点结果 / 页面预览StationBuilder / 方案交付查看生成结果与预览点击 go("result" / "preview");当前页高亮
领域方案领域方案库 / 方案库导航方案库列表(列表/卡片切换)与详情GET /api/db/domain-templates、GET /api/domains点击 go("domains");列表页右上角可在「列表 / 卡片」间切换;点击某方案(列表「编辑」或卡片本身)以同页内嵌编辑器打开详情(openDomainTemplateId state 控制)。「+ 新增领域方案」切到新增表单;「清除领域筛选」返回全部
设备模版领域方案库 / 方案库导航独立页面,编辑设备模版与采集点GET /api/db/device-templates点击 go("deviceTemplates");默认展开列表视图(缩略图 / 名称 / 说明 / 采集点数 / 操作),支持按名称或说明搜索;点击行进入该设备模版的详情编辑(名称 / 说明 / 图片 / 采集点),可返回列表。列表上方「+ 新增设备模版」进入新建表单。设备模版在此独立维护,方案详情中通过「选用设备模版」勾选引用
领域分类(动态)领域方案库 / 领域分类按领域筛选方案列表(二级菜单);行内删除 / 新增领域GET /api/domains(动态渲染)点击某领域 → go("domains") 且 domainFilter=该领域 id,列表自动只显示该领域方案;当前领域高亮;「清除领域筛选」返回全部。每个非「其他」领域行尾有 × 删除按钮(确认后 DELETE /api/domains/:id,其下方案归入「其他」并刷新导航);行末「+ 新增领域」展开行内输入框(最多 6 字,Enter 确认 / Esc 取消),POST /api/domains 后刷新导航。领域编辑已从「领域方案库」首页的「管理领域」面板迁移至此,首页方案列表相应上移。
全部页面样式页面样式库 / 样式库导航样式库列表GET /api/db/page-styles点击 go("styleLibrary");当前页高亮

3.3 模块切换(module-switch)

三个互斥模块,同一时刻仅一个高亮:

模块功能点击效果
StationBuilder站点生成工具主模块进入「站点项目(站点列表)」
领域方案库行业领域标准方案沉淀进入「领域方案库」页
页面样式库可复用的 Cube 视觉样式进入「页面样式库」页

3.4 站点列表 / 站点详情 分组与站点切换器

StationBuilder 模块下分两类:

元素功能数据来源交互效果
站点切换器 <select>在已建站点间快速切换GET /api/db/sites选择后加载该站点并跳转到对应详情页(列表页选择则进入基本属性)
步骤条 Steps(基本/资产/功能/生成)向导进度指示当前页 state已完成步骤可点击回跳;当前步高亮、未达步骤置灰

4. 页面详细说明

4.2 站点项目 / 站点列表(projects)

元素功能数据来源交互效果
统计条(全部/草稿/生成中/生成完成/部分失败)站点总量概览GET /api/db/sites 聚合纯展示
搜索框、领域筛选、状态筛选按名称 / 领域 / 状态过滤前端过滤(sites 列表)输入/选择即前端过滤 服务端查询尚未实现
视图切换(表格 ☷ / 卡片 ▦)列表或卡片两种展示本地 state切换展示形态
批量删除按钮删除已勾选站点DELETE /api/db/sites勾选后出现;二次确认后删除并刷新
表头全选框 / 行勾选框多选站点本地 state切换选中集合
站点名称链接进入站点详情点击按状态跳转:已生成→站点结果,否则→基本属性(带 siteId)
行「删除」删除单个站点DELETE /api/db/sites二次确认后删除
「+ 新建站点」创建空白站点POST /api/db/sites创建后进入基本属性页
↻ 刷新刷新列表提示「列表已刷新」(实际未重新拉取) 尚未实现

4.2.1 交互细节

站点项目
站点项目:全部站点列表、统计概览、筛选与新建入口。

① 字段 / 表格逐列(列表表格,仅展示 + 选择,不可就地文本编辑):

数据来源是否可编辑编辑类型上线范围
全选 / 行勾选框本地 state selected可勾选checkbox仅用于「批量删除」的选中集合,不影响生成数据
站点名称 ↕GET /api/db/sites(name不可编辑(点击为链接)链接 → 进入详情生成后作为站点标题、菜单根名称、结果页标题、生成提示词上下文
所属领域sites.domain只读文本领域方案库分类维度、生成提示词领域上下文
设备数量 / MU 页面 / Cube 页面sites 聚合(device_count / mu_count / cube_count只读数字结果页 / 生成范围统计口径
状态sites.status(draft/running/generated/partial)只读Status 标签决定是否从本页进入「站点结果」还是「基本属性」
最近修改sites.updated_at只读文本展示
操作 / 删除DELETE /api/db/sites/:id触发动作按钮(二次确认)删除站点记录

统计条(全部 / 草稿 / 生成中 / 生成完成 / 部分失败)由 sites 列表本地聚合,纯展示。

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
搜索框输入即按名称前端过滤文本输入无弹窗(服务端查询 尚未实现
领域 / 状态 下拉选择即前端过滤select(当前仅"全部"占位项)无弹窗
Search触发前端过滤提示
批量删除(勾选后出现)DELETE 批量并刷新列表多选后触发二次确认后执行
视图切换 ☷ / ▦切换表格 / 卡片展示本地 state view无弹窗
↻ 刷新提示"列表已刷新"实际未重新拉取(尚未实现
站点名称链接go(status==="generated"?"result":"basic", id)已生成→站点结果(result);否则→基本属性(basic)
行「删除」DELETE /api/db/sites/:id二次确认后删除
+ 新建站点go("basic","new") → 创建空白站点 → basic直接进入基本属性新建态

③ 导航流

4.3 站点基本属性(basic)

元素功能数据来源交互效果
站点名称(最多 20 字)站点命名PUT /api/db/sites输入即保存(自动);超限标红
所属领域(输入 + datalist + 新增领域)选择或新建领域GET/POST /api/db/domains输入匹配历史领域;「+ 新增领域」展开输入(最多 6 字)后保存
站点基本情况描述 / 补充要求生成上下文PUT /api/db/sites输入即保存;作为生成提示词的关键上下文
参考资料上传上传需求文档 / 清单 / 图片POST /api/db/sites/:id/files选择文件后上传,列出可下载文件
填写建议面板引导填写静态纯展示
AI 智能补全根据站点名称 / 所属领域 / 站点基本情况描述,由 AI 分析并自动补全「补充要求」POST /api/db/sites/:id/complete(流式 NDJSON)「开始补全」后控制台流式输出思考过程,结束将结果写入「补充要求」并自动保存;「查看提示词」可查看本次使用的完整提示词 补充描述质量将按反馈持续优化

4.3.1 交互细节

站点基本属性
站点基本属性:站点名称、域名、业务描述、关键词、文件上传等基本信息维护。

① 字段 / 表格逐列(左栏「站点基本信息」表单 + 右栏建议/AI 面板):

字段数据来源是否可编辑编辑类型上线范围
站点名称(必填,最多 20 字)PUT /api/db/sites(name可编辑(输入即保存)文本输入,maxLength=20;超限标红 invalid生成后站点标题、菜单根名、结果页标题、生成提示词上下文
所属领域(必填)GET/POST /api/db/domains可编辑文本 + datalist 历史建议;「+ 新增领域」展开输入(最多 6 字)领域方案库分类维度、生成提示词领域上下文
站点基本情况描述(必填)PUT /api/db/sites(description可编辑(输入即保存)多行文本域生成提示词核心上下文(最关键)
补充要求PUT /api/db/sites(supplement可编辑文本域生成提示词补充上下文;可被 AI 智能补全写入
参考资料POST /api/db/sites/:id/files(base64)可编辑(上传)文件选择(PDF/DOCX/XLSX/PNG,≤20MB)作为站点附件上下文(是否进入提示词取决于后端拼装)

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
+ 新增领域展开领域输入框输入(最多 6 字)「保存」→ POST /api/domains 并刷新本地领域列表;再点收起
AI 智能补全「开始补全」POST /api/db/sites/:id/complete(流式 NDJSON)无需填参控制台流式输出思考过程,结束自动写「补充要求」并保存;无独立确认弹窗
查看提示词打开 completePrompt 模态只读模态关闭 = × / 「关闭」按钮
顶部「保存草稿」notify("草稿已保存")提示(字段已即时自动保存)
sticky「上一步」go("projects")返回站点项目
sticky「下一步」go("assets")进入 Asset 资产设置

③ 导航流

4.3.2 AI 智能补全(站点基本属性)

AI 智能补全·基本属性
AI 智能补全进行中:点击「开始补全」后,面板下方出现黑底白字的「AI 智能补全」终端,实时滚动输出分析过程。

「开始补全」调用 POST /api/db/sites/:id/complete(流式 NDJSON)。终端(.modal-console)实时逐行输出 AI 的思考 / 分析过程(如「▶ 开始 AI 智能补全:基于站点名称 / 领域 / 描述分析并生成补充描述…」);流结束后将生成的补充描述写入「补充要求」并自动保存。点击「查看提示词」可查看本次组合提示词。补全过程中「开始补全」按钮显示「补全中…」并禁用,避免重复触发 补充描述质量将按反馈持续优化

4.4 Asset 资产设置(assets)

元素功能数据来源交互效果
KPI(设备类型/实例/层级)资产概览本地计算随表格输入实时变化
设备资产表格(类型/数量/命名规则/操作)配置设备类型与数量PUT /api/db/sites行内编辑即保存;可增删行
资产层级预览预览「站点→类型→实例」三级结构本地计算按命名规则展开实例:规则含 # 时替换序号(如 CH-##→CH-01);规则为纯前缀时自动补 -01/-02… 序号(如 beng-→beng-01、guolu→guolu-01) 3 层结构为展示占位,资产层级建模尚未实现
AI 智能补全根据站点名称 / 领域 / 描述 / 补充要求,分析并补充设备类型、数量与命名规则到资产配置列表(位于用户已填项下方,不改动已填项)POST /api/db/sites/:id/complete-assets(流式 NDJSON)「开始补全」后控制台流式输出思考过程;结果追加到资产配置列表(按模型给出的数量预设与命名规则);资产层级预览随之重算;「查看提示词」可看完整提示词 设备补充质量将按反馈持续优化

4.4.1 交互细节

Asset 资产设置
Asset 资产设置:设备类型、数量、命名规则与资产层级预览。

① 字段 / 表格逐列(设备资产配置表格,行内编辑即保存):

数据来源是否可编辑编辑类型上线范围
设备类型 *PUT /api/db/sites/:id/assets可编辑文本输入资产层级树节点、模拟数据设备实例类型
数量 *同上可编辑数字 min=0资产层级实例数量、模拟数据设备数
命名规则同上可编辑文本(# 序号 / 纯前缀)生成时设备实例命名(如 CH-01beng-01
操作 / ⌫同上(本地移除行)触发动作删除按钮移除该设备类型

KPI 行(设备类型 / 设备实例 / 资产层级)与「资产层级预览」树由本地计算,随表格实时变化(3 层结构为展示占位,资产层级建模尚未实现)。

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
+ 添加设备类型追加一行空白设备类型无弹窗
⌫ 删除移除该行无二次确认(即时移除)
AI 资产补全「开始补全」POST /api/db/sites/:id/complete-assets(流式)无需填参结果追加到列表下方并自动保存;控制台流式输出
查看提示词打开 completePrompt 模态只读× / 关闭
sticky「上一步」go("basic")返回基本属性
sticky「下一步」go("functions")进入功能与菜单

③ 导航流

4.4.2 AI 智能补全(Asset 资产设置)

AI 智能补全·资产
AI 资产补全进行中:终端实时输出设备类型 / 数量 / 命名规则的推断过程。

「开始补全」调用 POST /api/db/sites/:id/complete-assets(流式 NDJSON)。终端实时输出 AI 对设备类型、数量与命名规则的推断过程;结果将追加在用户已填项下方(不改动已填内容),资产配置列表随之更新,资产层级预览重算;结束自动保存。点击「查看提示词」查看完整提示词。

4.5 功能与菜单(functions)

三个子页签:

元素功能数据来源交互效果
MU 标准页面(树状复选)树状上下结构列出标准页面,仅保留勾选框GET /api/db/mu-tree默认全选中(site.mu 为空时按全部叶子键显示,首次取消才落地保存);勾选即保存(PUT)
Cube 扩展页面表格(名称/内容/生成文件/操作)定义并管理扩展页面GET/POST/PUT/DELETE /api/db/sites/:id/cubes行内编辑、生成、保存、删除、下载;可添加页面
「生成」单页按钮单独生成某个 CubePOST /api/db/sites/:id/cubes/:cid/generate触发生成(该路径为非流式,无实时日志) 与生成确认页不同
站点页面样式选择器为全站 Cube 套用视觉样式GET /api/db/page-styles;PUT /api/db/sites选择样书后应用到站点(写入 style_id),生成时参考其主题
Cube「AI 智能补全」面板基于站点名称 / 领域 / 描述 / 补充要求 + 设备资产层级,由 AI 推断并补充 Cube 扩展页面(页面名称 + 详细内容)POST /api/db/sites/:id/complete-cubes(流式 NDJSON);GET .../complete-cubes-prompt 取提示词「开始补全」后控制台流式输出思考过程,结束将 AI 页面追加到用户已建页面下方(不改动用户内容)并自动保存;「查看提示词」可查看完整组合提示词
菜单结构(只读默认预览)展示默认菜单结构本地计算(MU + Cube)MU 标准页面在上;所有 Cube 页面归入「综合监控」一级菜单,二级为各 Cube 页面名称;本页仅为展示,无编辑/保存 默认结构

4.5.1 交互细节

功能与菜单
功能与菜单:MU 页面选择、Cube 扩展页面编辑、页面样式选择、菜单结构预览。

三个页签:MU 标准页面 / Cube 扩展页面 / 菜单结构。

① 字段 / 表格逐列

区域 / 列数据来源是否可编辑编辑类型上线范围
MU 标准页面(树状复选)GET /api/db/mu-tree可编辑(勾选)checkbox,默认全选(site.mu 空时按全部叶子键,首次取消才落地)生成菜单的 MU 页面(当前"直接复用并配置菜单(未开发)")
Cube 页面名称(最多 6 字)GET/POST/PUT/DELETE /api/db/sites/:id/cubes可编辑文本输入 maxLength=6生成的 Cube 页面名、菜单"综合监控"下二级项
Cube 页面内容同上可编辑文本输入该页生成提示词要求 / 页面主题
生成文件cube.status只读已生成→「下载」按钮;否则"未生成"交付物
站点页面样式GET /api/db/page-styles;PUT /api/db/sites(style_id可编辑(单选)样式卡片点击("无" 或 选中某样式)全站 Cube 页面视觉主题(生成时参考其 JSON 主题)
菜单结构(只读预览)本地计算(MU + Cube)不可编辑展示默认:MU 在上,所有 Cube 归「综合监控」一级菜单

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
MU 复选框勾选/取消 → saveMu PUT /sites/:id/mu即时保存(失败提示)
Cube「预览」notify("预览 X")占位(真实预览尚未实现
Cube「生成」generateCube POST /cubes/:id/generate(单页,非流式,无实时日志)生成后刷新该页状态
Cube「保存」saveCube PUT/POST /cubes已保存提示
Cube「删除」removeCube DELETE(有 id 才删后端)即时移除
+ 添加 Cube 页面追加空白 Cube无弹窗
样式卡片(无 / 各样式)selectStyle PUT /sites/:id(style_id)应用 / 清除样式提示
AI Cube 补全「开始补全」POST complete-cubes(流式)无需填参结果追加到已建页面下方并保存;控制台流式
查看提示词打开 completePrompt 模态只读× / 关闭
sticky「上一步」go("assets")返回 Asset
sticky「下一步」go("generate")进入生成确认

③ 导航流

4.5.2 AI 智能补全(功能与菜单 · Cube 扩展页面)

AI 智能补全·Cube
AI Cube 页面补全进行中:基于站点信息与设备资产层级,实时推断并补充 Cube 扩展页面。

在「Cube 扩展页面」页签中点击「开始补全」,调用 POST /api/db/sites/:id/complete-cubes(流式 NDJSON)。终端实时输出 AI 对站点所需 Cube 扩展页面的推断(页面名称 + 详细内容);结果追加在用户已建页面下方并自动保存。点击「查看提示词」可查看完整组合提示词。

4.6 生成确认(generate)

元素功能数据来源交互效果
生成范围确认展示本次生成范围(站点/资产/MU/Cube)当前 site 计算「返回修改」占位 尚未实现
页面生成提示词(站点级 / 每页)生成前核对组合提示词前端本地拼装(与后端 buildCubePrompt 同源逻辑)「查看提示词」打开模态框,可复制
生成选项(复选)选择交付物范围静态勾选态;仅「生成 Asset Excel」置灰 Asset Excel 尚未实现,其余默认勾选
生成任务面板(进度条 / 任务列表)展示生成进度POST /api/db/sites/:id/generate-all 流式NDJSON 逐事件更新任务状态与百分比
AI 生成工作流 终端只读实时展示 AI/Skill 生成过程同一流式响应中的 {log} 事件模型实时输出与 Skill 调用标记逐行滚动显示;点开始生成时清空
「开始生成 / 重新生成」发起全站生成POST generate-all禁用直至完成;完成后出现「下载 ZIP」
「下载 ZIP」下载全部交付物GET /api/db/sites/:id/package新标签页下载 station-package.zip

4.6.1 交互细节

生成确认
生成确认:选择生成范围、执行 AI 生成,并实时查看生成进度。

① 字段 / 表格逐列

区域 / 列数据来源是否可编辑编辑类型上线范围
生成范围确认卡片(站点 / Asset / MU / Cube)当前 site 本地计算只读展示卡片 + 「返回修改」占位按钮(返回修改未实现本次生成交付物范围提示
页面生成提示词列表(站点级 + 每 Cube 行)前端拼装(与后端 buildCubePrompt 同源)只读每行「查看提示词 →」生成前核对的完整组合提示词
生成选项(复选)静态选项可勾选checkbox;仅「生成 Asset Excel」置灰(未实现),其余默认勾选决定 generate-all 交付物范围
生成任务面板(进度条 / 任务列表)POST generate-all 流式只读NDJSON 逐事件更新生成进度

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
生成范围卡「返回修改」占位尚未实现
查看提示词 →(站点级)打开 prompt 模态(viewSitePrompt只读× / 关闭
查看提示词 →(每页)打开 prompt 模态(viewPrompt(cubeId,name,content)只读× / 关闭
开始生成 / 重新生成start POST generate-all 流式 → 更新任务/进度 → 完成后 zipUrl生成期间禁用;完成出现「下载 ZIP」
下载 ZIPwindow.open(zipUrl) 新标签下载 station-package.zip
AI 生成工作流终端实时滚动模型/Skill 输出只读点开始生成时清空

③ 导航流

4.7 站点结果(result)

元素功能数据来源交互效果
结果头(状态 / 修改配置 / 下载全部 / 版本历史)概览与操作入口当前 site「修改配置」回 assets;「下载全部」取 package;「版本历史」开模态
KPI 条资产/MU/Cube/交付文件统计本地计算纯展示
页面结果卡片(缩略图 + 状态 + 预览/JSON/提示词/修改意见)逐页查看与操作GET /api/db/sites/:id/cubes/:cid/file缩略图由 dashboard-renderer 渲染生成 JSON;各按钮分别预览/下载/看提示词/提修改意见
「✎ 修改意见」对单页提反馈并重新生成POST /api/db/sites/:id/cubes/:cid/refine 流式只要该页已有生成文件(含「生成失败」但留有 JSON 的页面)即显示此按钮;打开反馈模态,提交后在当前页 JSON 基础上按意见重新生成;提交后模态内「修改意见」下方出现黑底白字的 AI 生成工作流 只读终端,实时滚动展示 AI/Skill 生成过程与进度,完成后自动刷新结果并关闭模态

页面结果卡片默认纵向单列排列(上下结构),每张卡片占满整行,便于在多个 Cube 页面间逐张查看与操作;每张卡片底部并排展示「预览 / JSON / 提示词 / 修改意见」四个按钮。

4.7.1 交互细节

站点结果
站点结果:生成完成后查看各 Cube 页面缩略图、预览、JSON 下载、提示词与修改意见。

① 字段 / 表格逐列(均为结果只读展示,无表单编辑):

区域数据来源是否可编辑编辑类型上线范围
结果头(状态 / 修改配置 / 下载全部 / 版本历史)当前 site不可编辑状态展示 + 操作按钮操作入口
KPI 行(Asset / MU / Cube / 交付文件)本地计算只读数字统计
页面结果卡片(缩略图 / 状态 / 名称 / 内容 / 预览·JSON·提示词·修改意见)GET /cubes/:id/file(DashboardThumb 真实渲染生成 JSON)只读(修改意见除外)卡片 + 四个按钮逐页交付物查看与反馈

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
版本历史setModal("history")只读模态× / 关闭
修改配置go("assets")返回资产配置编辑
下载全部window.open(/api/db/sites/:id/package)新标签下载
预览openPreview 新标签打开渲染 HTML(真实 JSON)新标签
JSON下载该页生成 JSON下载
提示词viewPrompt 打开 prompt 模态只读× / 关闭
✎ 修改意见openFeedback 打开 feedback 模态填写修改意见提交 → refineCube 流式重生成,模态内「AI 生成工作流」终端实时滚动,完成后刷新并关闭;× / 关闭 = 取消(不重生成)

③ 导航流

4.8 页面预览(preview)

元素功能数据来源交互效果
页面选择下拉切换预览的 Cube 页面当前 site.cubes切换展示对应页面
「站点监控」演示画布展示看板式预览外壳内置演示数据KPI / 图表为静态演示 未接入真实生成数据
「1440×900 / 浅色 / 刷新数据 / 全屏」视图与数据操作的占位除提示外无实际行为 尚未实现
实际 Cube 渲染(info/json/feedback 标签)真实渲染已生成 JSONGET .../file + dashboard-renderer展示真实生成结果(与 result 缩略图同源)

4.8.1 交互细节

本页当前无 UI 入口,故无对应截图;功能说明见下文。

① 字段 / 表格逐列(当前为静态演示外壳,未接入真实生成数据):

区域 / 列数据来源是否可编辑编辑类型上线范围
页面选择下拉当前 site.cubes可切换(本地)select仅切换演示画布展示的 Cube
「站点监控」演示画布内置演示数据只读KPI(92% / 12,480kWh / 7 / 68%)与图表为静态演示占位(未接入真实生成数据
1440×900 / 浅色 / 刷新数据 / 全屏占位按钮按钮除提示外无实际行为(尚未实现
实际 Cube 渲染(info/json/feedback 标签)GET .../file + dashboard-renderer只读真实渲染已生成 JSON与 result 缩略图同源

② 按钮与操作:演示画布内的「刷新数据 / 全屏」等仅触发提示,无业务副作用。实际 Cube 渲染区可展示真实生成结果。

③ 导航流

4.9 领域方案库(domains)

领域方案库已从硬编码演示改为真实数据库驱动。列表与详情编辑器同一页面内通过 openDomainTemplateId state 切换:null=列表,"create"=新增表单,number=该方案详情编辑器。列表支持列表 / 卡片两种视图切换(右上角视图切换按钮,view state 控制)。列表上方提供筛选栏:文本查找框(匹配 方案名称 / 创建人)、所属领域下拉、状态下拉,结果实时过滤并显示条数;列头 所属领域 / 方案名称 / 状态 / 创建人 可点击排序(升/降切换,带 ▲▼ 指示),卡片视图复用同一筛选与排序结果。

元素功能数据来源交互效果
筛选栏(查找 / 所属领域 / 状态 / 条数)列表实时筛选与计数本地 state(q / domainSel / statusSel),作用于 GET /api/db/domain-templates 结果查找框按 方案名称/创建人 模糊匹配;所属领域、状态下拉精确过滤;右上角显示「共 N 条」
领域方案列表表格展示全部领域方案(所属领域 / 方案名称 / 版本 / 状态 / 创建人 / 设备·页面·文档数 / 操作)GET /api/db/domain-templates(含 domain_name、device_count、page_count、doc_count)每行「编辑」→ 打开该方案详情编辑器;「删除」→ 确认后 DELETE /api/db/domain-templates/:id(级联删除 device_template_domain_templates)并刷新;空列表提示「点击右上角新增」
管理领域面板领域分类管理:列出全部领域及方案数,支持删除领域GET /api/domains(领域列表);删除调用 DELETE /api/domains/:id「其他」标注「(默认保留)」且无删除按钮;其余领域显示「删除」按钮 → 自定义确认弹窗二次确认 → 调用 DELETE /api/domains/:id(后端先将其下 domain_templates / device_template_domains 迁移至「其他」,再删除领域)→ 前端刷新领域列表、若当前筛选命中该领域则清除筛选
领域方案页面样式(Cube 扩展页面顶部)为方案选择页面样式库样式,作用于本方案全部 Cube 页面GET /api/page-styles(样式列表 + 缩略图);选中 PUT /api/db/domain-templates/:id(style_id)持久化;生成经共享 buildStylePrompt 注入样式主题「功能与菜单 → Cube 扩展页面」顶部 .style-picker:含「不使用样式」与全部页面样式缩略图按钮,当前选中高亮;点击即写回 domain_templates.style_id,生成/AI 修改时自动带入该样式视觉主题(与站点侧机制一致)
「+ 新增领域方案」新建领域方案,进入新增表单同页切到 CreateTemplate 表单:所属领域(select 来自 GET /api/domains)、模板名称、版本、状态(可用/不可用)、创建人、领域描述;POST /api/db/domain-templates 成功后自动打开该方案详情编辑器
搜索 / 筛选 / 同步方案库(历史功能)已按计划 Phase 0 移除整行(含「同步方案库」占位按钮) 已移除

4.9.1 交互细节

领域方案库
领域方案库:列表视图,上方为筛选栏(查找方案名称/创建人、所属领域、状态),列头 所属领域/方案名称/状态/创建人 可点击排序;支持列表/卡片切换。

① 字段 / 表格逐列(列表表格,仅展示 + 操作):

数据来源是否可编辑编辑类型上线范围
所属领域domain_name只读文本侧栏领域分类维度;列宽较宽,列头可点击排序
方案名称GET /api/db/domain-templates(name只读(列表态)文本方案标识;列宽最宽(弹性),列头可点击排序
版本version只读文本方案版本;列宽收窄
状态status只读Status 标签(可用/不可用)是否可选入站点方案;列宽收窄,列头可点击排序
创建人creator只读文本—;列头可点击排序
设备 / 页面 / 文档聚合 device_count / page_count / doc_count只读数字方案体量概览
操作 / 编辑·删除编辑→onOpen(id);删除→DELETE(级联删关联)触发动作按钮(删除二次确认)打开详情 / 删除方案

顶部 domain-hero-stats 按领域统计方案数(本地计算),纯展示。列表列顺序为 所属领域 → 方案名称 → 版本 → 状态 → 创建人 → 设备/页面/文档 → 操作;其中 所属领域 / 方案名称 / 状态 / 创建人 四列点击列头可排序(升/降切换,表头右侧显示 ▲/▼)。

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
视图切换 列表 ▤ / 卡片 ▦setView 本地无弹窗(卡片态点卡片即打开详情)
查找框(方案名称 / 创建人)setQ 本地模糊匹配 name/creator输入文本无弹窗,实时过滤并显示条数
所属领域下拉setDomainSel 本地按 domain_id 过滤选择(全部 / 各行业)无弹窗,实时过滤
状态下拉setStatusSel 本地按 status 过滤选择(全部 / 可用 / 不可用)无弹窗,实时过滤
可排序列头(所属领域 / 方案名称 / 状态 / 创建人)toggleSort 本地,升/降切换点击列头无弹窗,表头右侧显示 ▲/▼;再次点击反向
编辑onOpen(id) → 方案详情
删除DELETE /api/db/domain-templates/:id(级联 device_template_domain_templates)二次确认后删除并刷新
+ 新增领域方案setOpenDomainTemplateId("create") → 同页 CreateTemplate 表单表单填写保存(POST)后自动打开详情;取消收起

③ 导航流

4.10 方案详情(domainDetail / 内嵌编辑器)

详情为同一页面内嵌编辑器,所有内容均可编辑,数据持久化到领域方案库相关表。各面板如下:

面板 / 元素功能数据来源 / 接口交互效果
模板信息编辑所属领域 / 名称 / 版本 / 状态 / 创建人 / 描述GET /api/db/domain-templates/:id 详情;PUT /api/db/domain-templates/:id 保存「保存模板信息」写回并重新加载
选用设备模版(DeviceTemplatePicker)从「设备模版」页中勾选本方案要用的设备模版详情 devices[](已选用的设备模版 id 列表);GET /api/db/device-templates(全部可选);PUT /api/db/domain-templates/:id(传 device_template_ids,服务端重写 device_template_domain_templates 关联)勾选即保存:PUT 携带当前全部选中 id,服务端先 DELETE 旧关联再按 id 重建;未找到合适模版可点「+ 新增设备模版」跳到 deviceTemplates 页新建。设备模版的编辑(名称 / 说明 / 图片 / 采集点)已移至独立的「设备模版」页,不再在本面板内联编辑;设备不再维护「所属领域」多选(改为由领域 / 方案侧选用设备)
采集点设备下的采集点(名称 / 说明 / 单位 / 数值范围 / 描述)POST /api/db/device-templates/:id/collection-points(名称);DELETE /api/db/collection-points/:id「+ 采集点」填名称新增;行内「删」移除
领域页面(Cube 扩展页面)编辑领域页面(=StationBuilder 的 Cube 扩展页面)详情 pages[];POST /api/db/domain-templates/:id/pages;PUT / DELETE /api/db/domain-pages/:id;POST /api/db/domain-templates/:id/pages/:pid/generate、/refine(流式)「功能与菜单 → Cube 扩展页面」表格逐行管理,列:页面名称(≤6 字)/ 页面描述 / 来源 / Json文件 / 操作;来源以徽标区分「↑ 上传 / ✦ AI生成 / 手动」;Json文件列对已上传或已生成的页面提供「下载 文件名」按钮(上传=原始 .json 文件本身,AI生成=生成的 Cube .json),未生成显示"未生成";支持行内编辑名称/描述、预览/生成/保存/删除、+ 添加页面、↑ 上传页面 Json;保存前校验 JSON 合法性;生成确认页对每页显示「AI已生成 / 已上传 / 未生成 · 来源」
模板菜单编辑模板菜单(=StationBuilder 的 MU + Cube 菜单保存结构)详情 menu[];POST /api/db/domain-templates/:id/menu;DELETE /api/db/template-menu-items/:id表格展示菜单项 / 类型 / 父级 / 关联;「+ 新增菜单项」建占位项
知识文档管理知识文档(名称 + 本体)详情 docs[];POST /api/db/domain-templates/:id/docs(doc_type=link 传 url,或 doc_type=file 传 base64 文件);GET /api/db/knowledge-docs/:id/file 下载;DELETE /api/db/knowledge-docs/:id新增时选择「超链」(填 URL) 或「文件」(上传,落盘 data/db/uploads/docs/);列表可下载 / 删除
运维流程(OpsFlowsViewer)查看运维流程(流程名称 + 内容 JSON 串)GET /api/ops-flows仅展示占位记录,本功能 尚未实现

4.10.1 交互细节

方案详情编辑器
领域方案详情编辑器:模板信息、选用设备模版、领域页面、模板菜单、知识文档、运维流程等面板。

① 字段 / 表格逐列

面板 / 区域数据来源 / 接口是否可编辑编辑类型上线范围
模板信息GET/PUT /api/db/domain-templates/:id可编辑所属领域(select) / 模板名称 / 版本 / 状态(select) / 创建人 / 领域描述(textarea)方案元信息,被站点方案引用
选用设备模版(DeviceTemplatePicker)详情 devices[];GET /api/db/device-templates;PUT /api/db/domain-templates/:id(device_template_ids,服务端重写关联)可编辑(勾选即保存)复选框列表该方案选用的设备模版集合(供站点方案引用)
领域页面(Cube 扩展页面)详情 pages[];POST /api/db/domain-templates/:id/pages;PUT/DELETE /api/db/domain-pages/:id;POST .../:pid/generate、/refine可编辑表格逐列:页面名称(≤6字)/ 页面描述 / 来源(徽标:上传·AI生成·手动)/ Json文件(已上传或已生成→「下载 文件名」;否则"未生成")/ 操作(预览·生成·保存·删除)方案内置页面(=StationBuilder 的 Cube);source 字段区分来源,gen_filename 为下载文件名
模板菜单详情 menu[];POST /api/db/domain-templates/:id/menu;DELETE /api/db/template-menu-items/:id可编辑(新增占位项)表格(菜单项/类型/父级/关联)+ 删除方案菜单结构
知识文档详情 docs[];POST /api/db/domain-templates/:id/docs;GET /api/db/knowledge-docs/:id/file;DELETE可编辑新增选「超链」(填 URL) 或「文件」(上传 base64);列表可下载/删方案知识库
运维流程(OpsFlowsViewer)GET /api/ops-flows只读占位展示尚未实现

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
保存模板信息PUT /api/db/domain-templates/:id表单填写写回并重新加载(提示"已保存模板信息")
选用设备模版 复选框toggle → PUT device_template_ids(先 DELETE 旧关联再重建)即时保存(失败回滚);「+ 新增设备模版」→ go("deviceTemplates") 跳转新建
领域页面 编辑 / 取消 / 保存 / 删除PageRow 内编辑态切换;保存前校验 JSON保存 PUT / 删除 DELETE;取消退出编辑态
+ 新增页面 / 菜单项 / 文档POST 对应接口(默认空/占位)新增后刷新
知识文档 下载 / 删GET file / DELETE下载二进制 / 删除
← 返回列表onBack → 领域方案库列表返回列表态

③ 导航流

4.11 页面样式库(styleLibrary)

元素功能数据来源交互效果
样式卡片网格(缩略图 + 名称 + 编辑/删除)浏览已有样式GET /api/db/page-styles3 列布局,缩略图按 16:9 比例自适应高度(object-fit:contain,整页完整可见、不被截断);缩略图点开大图预览;编辑/删除生效
「+ 新增样式」上传样式(JSON + 预览图)POST /api/db/page-styles打开编辑模态,填写名称/预览图/JSON 后保存
样式大图预览(StylePreview)查看样式原图GET /api/db/page-styles/:id/image模态展示

4.11.1 交互细节

页面样式库
页面样式库:16:9 缩略图卡片网格,可新增 / 编辑 / 删除样式。

① 字段 / 表格逐列

区域 / 列数据来源是否可编辑编辑类型上线范围
样式卡片网格(缩略图 / 名称 / 创建时间 / 编辑·删除)GET /api/db/page-styles卡片只读;编辑/删除可触发缩略图 = GET /page-styles/:id/image;3 列网格样式浏览与维护
StyleEditorModal · 样式名称(必填)POST/PUT /api/db/page-styles可编辑文本输入样式库展示名
StyleEditorModal · 预览图(新建必填)同上(image base64)可编辑图片上传(建议 16:10 PNG/JPG)样式缩略图与大图预览源
StyleEditorModal · 仪表盘 JSON(必填,需合法 JSON)同上(jsonText可编辑textarea 粘贴 或 上传 .json 文件Cube 页面视觉主题(生成时参考)

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
卡片缩略图点击打开 StylePreview 大图模态只读× / 点击遮罩关闭
卡片「✎ 编辑」openEdit → StyleEditorModal(预填)表单保存 PUT / 取消收起
卡片「🗑 删除」DELETE /api/db/page-styles/:id二次确认后删除并刷新
+ 新增样式setEditor({open:true}) → 新建模态表单保存 POST(需图+合法JSON)/ 取消关闭
编辑模态「保存」新建需图+JSON 合法 → POST;编辑 → PUT失败提示(如 JSON 非法 / 新建未传图);成功提示并关闭
编辑模态「取消」/「×」onClose关闭,不保存
编辑模态「删除」(仅编辑态)DELETE → 刷新二次确认后删除

③ 导航流

4.12 设备模版(deviceTemplates)

独立的「设备模版」页,维护可复用的设备模版与采集点,供领域方案在详情中「选用设备模版」引用。设备模版数量可能成百上千,因此采用默认展开列表、点击进入详情的方式(而非整页卡片栅格):列表为紧凑表格(.device-tpl-list),含缩略图 / 名称 / 说明 / 采集点数 / 操作,并支持按名称或说明实时搜索;点击任意行进入该设备模版的详情编辑区,详情内「← 返回列表」回到列表。列表上方「+ 新增设备模版」进入新建表单(创建后定位到新建设备的详情)。

元素功能数据来源 / 接口交互效果
设备图片以长方形预览区展示设备图片,点击预览区即上传 / 更换GET /api/db/device-templates/:id/image(服务端按 image_path 落盘 data/db/uploads/devices/);PUT /api/db/device-templates/:id(image base64)预览区固定高度、object-fit:cover 不再溢出;上传后即时本地预览,保存时写回;删除图片 尚未实现
设备名称 / 说明编辑设备基本信息GET /api/db/device-templates/:id;PUT /api/db/device-templates/:id「保存设备」写回名称和说明(不再维护设备侧「所属领域」,改为由领域 / 方案侧选用)
采集点(表格编辑)表格方式维护采集点:名称 / 说明 / 单位 / 数值范围 / 描述;可新增一行、勾选删除一行或多行、保存GET /api/db/device-templates/:id 的 collection_points;POST /api/db/device-templates/:id/collection-points(新建,带全字段);PUT / DELETE /api/db/collection-points/:id「+ 新增一行」追加空白可编辑行;表头复选框全选,行内复选框多选,「删除选中」批量 DELETE;「保存采集点」对新建行 POST、对已有行 PUT;数值范围为下拉选择器(预设 0~100 / 0~1000 / -20~80 / -40~85 / 0~50 / 0~5 / 0~1 / 0~100%,或「自定义…」输入)
新增设备模版新建设备模版(名称 / 说明 / 图片)POST /api/db/device-templates列表上方「+ 新增设备模版」进入新建表单,创建后自动打开该设备模版的详情编辑区

4.12.1 交互细节

设备模版列表
设备模版列表:默认展开表格视图,支持搜索,点击行进入详情编辑。
设备模版详情
设备模版详情:名称 / 说明 / 设备图片、长方形预览区、采集点表格编辑(新增 / 批量删除 / 保存 / 数值范围下拉)。

① 字段 / 表格逐列(列表表格,仅展示 + 操作;详情为编辑区):

列表列数据来源是否可编辑编辑类型上线范围
图片image_path → GET /device-templates/:id/image只读(列表态)缩略图 / 无图显示 —设备模版缩略图
名称 / 说明name / description只读(列表态)文本方案选用设备时展示
采集点collection_points.length只读数字采集点数量概览
操作 / 编辑·删除编辑→openId(id);删除→DELETE触发动作按钮(删除二次确认)打开详情 / 删除设备

详情编辑区(DeviceTemplateCard)字段:

详情字段数据来源 / 接口是否可编辑编辑类型上线范围
设备名称GET/PUT /api/db/device-templates/:id可编辑文本输入设备模版名
设备图片同上(image base64)可编辑点击预览区上传(accept="image/*"),object-fit:cover 长方形预览方案选用设备缩略图
说明同上可编辑多行文本设备描述
采集点(表格:复选/名称/说明/单位/数值范围/描述)GET 详情 collection_points;POST /device-templates/:id/collection-points;PUT/DELETE /api/db/collection-points/:id可编辑名称/说明/单位/描述 = 文本输入;数值范围 = 下拉选择器(预设 0~100 / 0~1000 / -20~80 / -40~85 / 0~50 / 0~5 / 0~1 / 0~100%,或「自定义…」文本输入)设备采集点定义(供设备实例监控);可由「AI 智能补全 · 采集点」一键补全(见 4.12.2)

② 按钮与操作

按钮点击效果编辑方式确定 / 取消 / 关闭
搜索框输入即按名称/说明前端过滤文本无弹窗
+ 新增设备模版openId("create") → CreateTemplate 表单表单创建 POST 后打开该设备详情;取消 → 返回列表
列表行点击 / 编辑openId(id) → 详情
列表删除DELETE /api/db/device-templates/:id二次确认后删除并刷新列表
详情「保存设备」PUT /api/db/device-templates/:id(name/description/image)表单写回并提示"设备已保存"
详情「+ 新增一行」追加空白采集点行(临时负 key)无弹窗
详情「删除选中」勾选 → DELETE 已有 id(collection-points/:id多选二次确认后批量删除
详情「保存采集点」已有行 PUT /collection-points/:id;新建行 POST /device-templates/:id/collection-points写回并提示"采集点已保存"
详情「AI 智能补全 · 采集点」→ 开始补全POST /api/db/device-templates/:id/complete-collection-points(流式 NDJSON;后端用 codebuddy 生成并写库)补全完成后前端重新拉取详情并刷新采集点表格(追加模式,不覆盖用户已录入的同名采集点);控制台实时显示推导过程
详情「AI 智能补全 · 采集点」→ 查看提示词GET /api/db/device-templates/:id/complete-collection-points-prompt弹窗展示将发送给模型的完整组合提示词(设备名称/领域/说明 + 领域知识)
详情「删除设备」DELETE 设备二次确认后删除并 → 返回列表
← 返回列表openId(null)返回列表态

③ 导航流

4.12.2 AI 采集点补全

采集点是设备监控运营的核心数据点。StationBuilder 提供两处 AI 补全入口,统一由后端 buildCompleteCollectionPointsPrompt 构造提示词、runCodebuddy(模型 hy3)生成、extractCollectionPoints 解析为 {name, collect_note, unit, value_range, description}[] 后批量写入 device_collection_points

① 领域方案生成时自动补全(Part A):在领域方案详情「AI 资产补全」(POST /api/db/domain-templates/:id/complete-assets) 中,每当 AI 推理出某设备类型并新创建对应设备模板(resolveDeviceTemplate 返回 created:true)后,后端立即以该设备名称为设备模板生成 6~12 个合适采集点并写库(追加模式,单个失败不影响整体;推导过程实时回流到资产补全控制台)。已存在的设备模板(created:false)不重复补全,避免覆盖用户数据。

② 单独打开设备模板时补全(Part B):设备模板详情(DeviceTemplateCard)新增「AI 智能补全 · 采集点」面板,含「开始补全」与「查看提示词」按钮。点击「开始补全」调用 POST /api/db/device-templates/:id/complete-collection-points(流式 NDJSON),后端用 codebuddy 生成采集点并写库,前端补全完成后重新拉取详情刷新采集点表格;「查看提示词」弹窗展示将发送给模型的完整组合提示词(设备名称/所属领域/说明 + 领域知识)。

补全策略:默认追加模式——保留用户已手动录入的采集点,仅新增 AI 推荐、且与已有采集点名称不重复的条目(按 name 去重),不覆盖已录入数据;数值范围优先从预设集合(0~100 / 0~1000 / -20~80 / -40~85 / 0~50 / 0~5 / 0~1 / 0~100%)中选取。

4.13 界面截图(UI 总览)

以下截图覆盖了当前 StationBuilder 原型的主要页面。截图在 1440×900 视口下使用 Playwright + Chromium 自动抓取,图片存放于 public/design-doc-assets/。各页的字段、按钮与导航流逐项说明见 4.2–4.12 的「交互细节」子章;其中 4.3 / 4.4 / 4.5 另含「AI 智能补全」子章(4.3.2 / 4.4.2 / 4.5.2),展示 AI 流式输出过程。

可达性说明:站点项目、基本属性、Asset、功能与菜单、生成确认、站点结果(站点项目点击已生成站点进入)、领域方案库、方案详情、页面样式库、设备模版均可正常访问;页面预览(4.8)当前无 UI 入口(代码中无 go("preview") 调用),故未单独截图,其演示外壳见 4.8.1。

站点项目
站点项目:全部站点列表、统计概览、筛选与新建入口。
站点基本属性
站点基本属性:站点名称、域名、业务描述、关键词、文件上传等基本信息维护。
Asset 资产设置
Asset 资产设置:设备类型、数量、命名规则与资产层级预览。
功能与菜单
功能与菜单:MU 页面选择、Cube 扩展页面编辑、页面样式选择、菜单结构预览。
生成确认
生成确认:选择生成范围、执行 AI 生成,并实时查看生成进度。
站点结果
站点结果:生成完成后查看各 Cube 页面缩略图、预览、JSON 下载、提示词与修改意见。
领域方案库
领域方案库:列表/卡片视图切换、按领域分类筛选。
领域方案详情
领域方案详情:模板信息、选用设备模版、领域页面、模板菜单、知识文档、运维流程占位。
设备模版列表
设备模版列表:紧凑表格、搜索、点击进入详情。
设备模版详情
设备模版详情:设备基本信息、图片、采集点表格编辑。
页面样式库
页面样式库:样式缩略图网格与新增/编辑入口。

5. 生成流程(端到端)

  1. 发起:在「生成确认」点「开始生成」→ 前端 POST /api/db/sites/:id/generate-all(携带各 Cube 的名称与内容)。
  2. 落库与准备:db-sidecar 先持久化前端传入的 Cube,再以最多 3 个并发的 mapWithConcurrency 调用各 Cube 的生成(各页相互独立,互不阻塞;限制并发以避免资源争抢导致单页超时)。
  3. 调用模型:每页调用 AI 生成服务(后端 runCodebuddy 封装)→ 生成进程以流式 JSON 输出。提示词内含可视化生成 Skill 的 Cube 结构规则(DASHBOARD_SPEC)与站点/样式上下文;DASHBOARD_SPEC 已要求模拟数据精简(时序 ≤16 点、KPI/表格样例 ≤6 行)以缩短输出。
  4. 解析与校验(含代码级自动修复):从流式输出抽取 JSON → fixDashboard 先做代码级自动修复(修复 x+w>24、面板重叠、首面板 Title 定位、KPI/Radar/Line 等 data 字段、缺失 id/gridPos 等)→ 再 validateDashboard 复校;仅当残留问题确无法自动修复时才再次调用模型(最多 2 次模型调用,原 3 次)。
  5. 写回:生成的 JSON 存入 gen_files 并关联 Cube,状态置为 generated,同时保存组合提示词。
  6. 打包:全部页面完成后打包为 station-package.zip。
  7. 实时回传:整个过程以 NDJSON 流回传 {task,status} 进度事件与 {log} 文本事件;前端「AI 生成工作流」终端实时滚动显示,任务列表同步更新。

模型说明:生成使用后端固定配置模型(硬编码),与顶栏「模型选择」无关——模型选择仅作用于右下角 AI 问答。每个 Cube 均新起一个生成进程,存在进程冷启动耗时;实时日志可缓解等待时的“无反馈”感。

单页生成:在「功能与菜单」页对每个 Cube 点「生成」走非流式接口,提供实时日志,仅结果刷新。

性能优化(本轮):在不影响显示效果的前提下做了四项优化 —— ① 代码级自动修复:校验失败优先用 fixDashboard 程序化修正,避免为小问题重跑模型;② 精简模拟数据:提示词约束时序 ≤16 点、样例 ≤6 行,缩小输出 token;⑤ 重试降级:模型调用由最多 3 次降为最多 2 次(首次失败先走代码修复);⑥ 并行生成:整站各 Cube 由顺序改为 Promise.all 并发。综合效果:整站生成约 4–9× 提速(75–90% 耗时下降),单次超时页(16 面板)约 60% 提速;已较快的单页提升约 30%。

6. AI 问答(悬浮按钮 + 对话框)

元素功能数据来源交互效果
右下角悬浮按钮(AI 图标)打开 / 收起 AI 助手点击开对话框;可拖动改变位置,双击复位(光标为 pointer,拖动时 grabbing)
对话框(模型 · 消息流 / 输入框)站点相关问答POST /api/chat → ai-sidecar → AI 生成服务流式显示回答;上下文隔离、禁用工具与写操作(仅问答)
模型选择弹层切换问答模型前端 MODELS仅免费模型可选

7. 模态框(Modal)

类型功能交互效果
提出修改意见(feedback)对单页提反馈并重新生成弹窗顶部即「修改意见」输入框(自动聚焦),下方展示影响范围(仅当前页 / 模拟数据 / 不受影响项);提交后弹窗内出现黑底白字的 AI 生成工作流 终端,实时滚动 AI/Skill 生成进度;流结束后立即复位「重新生成中…」按钮并自动刷新站点、关闭弹窗,并设有 >10 分钟超时看门狗兜底,避免界面卡在「生成中」
下载站点交付物(download)选择下载项列表含 Cube JSON / 菜单配置 / 报告;Asset Excel 占位 尚未实现
版本历史(history)查看版本仅展示 V1 当前版本 真实版本管理尚未实现
生成提示词(prompt)查看/复制组合提示词展示发送给模型的完整提示词,可复制到剪贴板

8. 数据与存储

对象说明接口
sites站点主记录(名称/领域/描述/状态/style_id)/api/db/sites
cubes扩展页面(名称/内容/状态/生成文件)/api/db/sites/:id/cubes
assets / menus / files / page_styles资产 / 菜单 / 参考文件 / 页面样式对应 /api/db 路径
SQLite 文件持久化库(位于仓库 data/db/StationBuilder.sqlite,纳入 Git)db-sidecar 读写

9. 尚未实现功能汇总

10. 维护与导出说明

10.1 版本变更记录(Changelog)

版本日期修改人说明
v0.282026-08-21wang.yu设备模板「采集点」AI 智能补全(两处入口):① 领域方案「AI 资产补全」自动创建设备模板后,后端立即以设备名称为其生成 6~12 个合适采集点并写库(resolveDeviceTemplate 返回 created:true 时触发;追加模式,单个失败不影响整体,推导过程回流到资产补全控制台;已存在模板不重复补全)。② 设备模板详情(DeviceTemplateCard)新增「AI 智能补全 · 采集点」面板:「开始补全」调用新增接口 POST /api/db/device-templates/:id/complete-collection-points(流式 NDJSON,codebuddy 生成 + 写库,前端补全后重新拉取详情刷新表格),「查看提示词」GET /api/db/device-templates/:id/complete-collection-points-prompt 弹窗展示完整组合提示词。后端新增 buildCompleteCollectionPointsPrompt / extractCollectionPoints / generateDeviceTemplatePoints(按 name 去重追加,不覆盖用户已录入采集点;数值范围优先取预设集合);前端新增 DeviceTemplateCard 的 cpAi=useStreamComplete() 流式面板,并透传 onViewCpPrompt 复用 App 级提示词弹窗;资产补全前端超时守卫由 6 分钟放宽到 10 分钟(因额外补全采集点)。Playwright E2E:临时设备点「开始补全」→ 实际运行 codebuddy 生成 12 个采集点并持久化(GET 详情 collection_points.length=12),控制台显示「✓ 已补全 12 个采集点」,0 控制台报错,临时设备已清理。设计文档同步更新 4.12 / 新增 4.12.2、版本 v0.28。
v0.272026-08-21wang.yu领域编辑迁移至左侧导航栏:① 移除「领域方案库」首页的「管理领域」面板,首页方案列表相应上移(直接进入列表,不再被管理面板挤占首屏)。② 领域增删改入口迁至左侧「领域方案库模块 → 领域分类」分组,UI 与现有领域分类导航项一致:每个领域行尾加 × 删除按钮(仅非「其他」领域,点击经 window.confirm 二次确认后 DELETE /api/domains/:id,其下方案归入「其他」,随后 reloadDomains 刷新导航);行末新增「+ 新增领域」按钮,点击展开行内输入框(最多 6 字,Enter 确认 / Esc 取消),POST /api/domains 后刷新导航。③ 修复 addDomain 原只更新前端 domains 字符串数组、未刷新导航用 domainOptions 导致新增后导航不出现的问题——现改由 reloadDomains 统一刷新两个 state。④ globals.css 新增 .domain-nav-row / .domain-nav-del / .domain-nav-ok / .domain-nav-add / .domain-nav-input 等样式,保持与导航按钮一致的 41px 行高与激活态。Playwright 验证:面板已移除、导航显示 6 领域行(5 个 × + 1 个 +)、新增/删除临时领域均生效、「其他」无删除按钮、0 控制台报错。后续微调:领域名按钮与 ×/+ 按钮原共用 `.domain-nav-row>button` 的 `flex:1` 导致 × 也等分给到约 95px、过滤按钮被压窄至 95px、4 字以内领域名在用户浏览器中换行;改为 `flex:1` 仅作用于过滤按钮(`:not(.domain-nav-del):not(.domain-nav-ok)`),×/✓ 固定 30px,领域名加 `white-space:nowrap` 并包入 `.domain-nav-name` 超出省略号,4 字以内领域名稳定单行显示。
v0.262026-08-21wang.yu导出修复(设计方案 Word / PDF):① PDF 由 html2pdf(jsPDF+html2canvas,中文乱码且长文档卡死)改为调用浏览器原生打印(window.print),输出真实文字、微软雅黑、纯黑、1.5 倍行距,无乱码;打印时临时注入静态目录(buildStaticToc,含 h2/h3/h4)于文首,打印后移除、不污染屏幕 UI;屏幕 UI 截图尺寸不变(仍 360px)。② Word 页脚页码修复:footer 元素补 id 并改用规范 Word 域标记(PAGE / NUMPAGES 字段,含 field-begin/separator/end),由「仅首页顶部显示 1」修正为每页底部「第 X 页 / 共 Y 页」。③ Word 目录由 TOC 域(打开时常为空)改为默认插入可见的静态目录(buildStaticToc,含 h2/h3/h4 三级)。④ 截图限宽 300px(等比例):Word 设 width=300 属性 + 行内样式;PDF 原 @media print 用 `.figure img` 类选择器未命中正文 `
` 元素导致约束不生效、图片按原始像素溢出页面(即此前「240 显示不下」的真相),改为 `figure img` 元素选择器 + max-width:300px 后正常限宽并完整显示;图后插入回车(<br>)使图注文字换行到下一行。⑤ 补充 @page 打印页码(A4 页脚居中「第 X 页 / 共 Y 页」;Chrome 另存为 PDF 若未显示,在打印对话框勾选「页眉和页脚」兜底)。
v0.242026-08-20wang.yuAI 并发调用统一限流:新增全局信号量 AI_CONCURRENCY = 2,包裹 runCodebuddy(db-sidecar.mjs),使站点生成(含批内并行)、各项补全(complete / complete-assets / complete-cubes)、领域方案补全(dt-complete 系列)等全部 AI 功能任意时刻最多 2 个 codebuddy 子进程并发,避免无脑全并行抢占资源导致超时。站点「生成全部」批内并行数 GEN_CONCURRENCY 由硬编码 3 改为复用 AI_CONCURRENCY,对应日志文案同步为「最多 2 个并行调用」。AI 聊天侧(ai-sidecar.mjs /api/chat)本身以 running 布尔量串行(同一时刻仅 1 个),已满足 ≤2。
v0.252026-08-20wang.yu领域方案「已完成态」步进导航增强:判定「已完成」= 方案存在至少一个已生成(非空 json_text)的 Cube 页面(DomainWizardpageGenerated)。完成后:① 步进器每个「已配置」的 Step 前置圆圈显示绿色对号(复用 .steps button.done 绿色样式,configured 由各步数据驱动——基本属性 name+description、领域知识 docs、资产设置 有 device_template_id、功能与菜单 有页面或已选 MU、运维流程 flows、生成保存 已生成页面、专家确认 status=available);② 取消「仅可点已访问步骤」限制,任意 Step 直接点击即可跳转对应页(不再需连点「下一步」);③ 未完成(草稿)方案保持原逐步引导行为(仅已访问步骤可点、后续步骤加 .locked 不可点)。DomainSteps 新增 completed / configured 入参,globals.css 增补 .steps button.locked 光标态。Playwright 验证:已完成方案绿对号渲染正确、点击直达生效、0 控制台报错;草稿方案锁定与不可跳转保持。
v0.232026-08-20wang.yu领域知识上传格式扩展:KnowledgeStep 上传 accept 由纯文本类放开至 Word / Excel / PDF / 图片及常见文本(.pdf,.doc,.docx,.xls,.xlsx,image/* 等);提示文案补充「Word、Excel、PDF 会提取正文注入,图片仅作参考登记」,列表文件类徽标「文档」改为「文件」以兼容图片。后端 extractDocText(filePath,mime,filename) 替换原 isTextMime/readKnowledgeFile:文本类(txt/md/json/csv/html/xml/yaml/yml 等)直接读取;PDF(pdf-parse)、Word(仅 .docxmammoth)、Excel(.xls/.xlsx,SheetJS 转 CSV)提取正文并 16k 截断后注入提示词;图片及老 .doc 等无法纯 JS 提取的格式返回空串,buildKnowledgePrompt 中仍登记为参考来源((参考来源:文件名))。新增依赖 pdf-parse / mammoth / xlsx(纯 JS,无原生编译)。
v0.222026-08-20wang.yu领域知识提升为方案创建流程 Step 2,并作为 AI 补全的优先参考资料:① 方案向导步骤重排——领域知识由末段移至「方案基本属性」之后(Step 2),原 资产设置 / 功能与菜单 / 运维流程 / 生成保存 / 专家确认 整体后移一位(DOMAIN_STEPS 顺序调整,key 不变,步进导航自动适配)。② 新增「领域知识」步骤(KnowledgeStep):支持「上传领域知识文档」(多文件,base64 经既有 POST /api/domain-templates/:id/docs 落库,文本类读正文、其他格式登记为参考)与「配置参考 URL 站点」(doc_type=link),列表展示名称/类型/大小/时间并提供「下载」(仅文档)与「删除」(DELETE /api/knowledge-docs/:id,同步清理磁盘文件);知识随方案持久化、可删。③ 知识驱动 AI 补全:新增 buildKnowledgePrompt(ctx)(镜像 buildStylePrompt),读取本方案 knowledge_docs——文本文档直接注入正文、URL 站点由服务端 fetch 抓取正文注入(8s 超时,失败降级为仅保留 URL 链接作为参考),注入到 buildCompletePrompt / buildCompleteAssetsPrompt / buildCompleteCubesPrompt 三处(三个构建器改为 async、8 处调用点加 await;领域级补全 ctx 增加 id,站点级无 id 不注入)。优先级为「优先依据已上传领域知识分析补全,再做大模型在线补充」。④ 生成保存(DomainGenerateReview)「领域知识」行由「(待开发)」改为真实文档信息(份数 + 名称列举),并提供「返回领域知识」快捷入口;运维流程 AI 补全本期仍占位(尚未实现)。
v0.212026-08-20wang.yu领域方案库 Cube 扩展页面支持选择页面样式库样式后生成(镜像站点侧 sites.style_id 机制,方案级):① 后端 domain_templates 新增 style_id 列(ensureColumn 增量加列);handleDomainTemplateUpdate 支持写入/显式置空;hydrateDomainTemplateCtx 返回真实 style_id(此前硬编码 null)。② 前端领域方案详情「功能与菜单 → Cube 扩展页面」顶部新增「领域方案页面样式」选择器(复用 .style-picker 与页面样式库缩略图),选中即 PUT /domain-templates/:id 持久化;生成/AI 修改经共享的 buildStylePrompt 自动注入所选样式的 JSON 主题,无需改动提示词构造。
v0.202026-08-20wang.yu领域分类管理增强:① 默认分类调整——移除「工业制造 / 工业园区 / 智慧楼宇」,新增「其他」(DEFAULT_DOMAINS 同步更新,重启不再复活被删分类);② 领域方案库新增「管理领域」面板,列出全部领域及其方案数,「其他」标注「默认保留」且不可删除,其余领域提供「删除」按钮,经自定义确认弹窗二次确认后调用 DELETE /api/domains/:id;③ 后端新增 DELETE /api/domains/:id:禁止删除「其他」,删除前将待删领域的 domain_templatesdevice_template_domains 关联迁移至「其他」(避免 ON DELETE CASCADE 误删方案),再删除领域;④ 删除后前端刷新领域列表,并在当前筛选命中该领域时自动清除筛选。
v0.192026-08-20wang.yu修复领域方案「功能与菜单 → Cube 扩展页面」两处问题:①「生成」按钮改为流式请求(消费 NDJSON 响应体以保持连接),生成期间按钮显示「生成中…」并禁用、底部「AI 生成页面」控制台实时输出进度并据服务端 {status:failed} 事件弹失败提示;此前前端用普通 fetch 不读取响应体,连接被提前关闭导致服务端 AI 生成中断(status='failed')、Json 未写入。② AI 智能补全(complete-cubes)由「逐条静默 .catch(()=>{}) 插入」改为「收集结果后逐个 await 插入、失败显式 notify」,并捕获服务端 {status:failed} 事件弹失败提示,避免补全内容静默丢失、列表无变化。
v0.172026-08-19wang.yu修复左侧目录(TOC)点击章节后消失:根因为顶部版本说明段落含全角空格不换行,在 flex 布局下把 main#doc 撑到约 2238px 宽(flex item 默认 min-width:auto 不收缩),点击锚点时浏览器水平滚动将 sticky 目录推出左边界。给 main#doc 增加 min-width:0 使其可收缩、内容正常折行,消除水平滚动,目录任意宽度常驻可见。
v0.182026-08-20wang.yu领域方案「功能与菜单 → Cube 扩展页面」表格增强:① 新增「来源」列,以徽标区分 上传 / AI生成 / 手动;② 原「生成文件」列更名为「Json文件」,对上传页面提供原始 .json 文件名下载、对 AI 生成页面提供生成的 Cube .json 下载(未生成显示"未生成");③ domain_pages 新增 source 字段,上传/生成时分别写入 source=upload/ai 与 gen_filename;④ 生成确认页状态徽标区分「AI已生成 / 已上传 / 未生成 · 来源」。同步更新 4.10 章节。
v0.162026-08-19wang.yu设计方案文档修订:① 左侧目录改为任意宽度常驻可见(移除窄屏 display:none,窄屏下列表转为顶部可滚动常驻栏),点击章节后目录不再消失;② 移除「内部登录」章节(4.1)及 4.13 登录截图,可达性说明去掉登录;③ 新增 AI 智能补全子章(4.3.2 / 4.4.2 / 4.5.2),附 AI 流式输出终端截图(ai-complete-basic/assets/functions.png);④ 修复 PDF 导出图片被分页截断(@media print 增加 page-break-inside:avoid 与图片适配);⑤ 修复 Word 导出无图片(downloadWord 将图片转为 base64 data URI 内嵌)。
v0.152026-08-19wang.yu领域方案库列表增强:列顺序调整为「所属领域 → 方案名称 → 版本 → 状态 → 创建人 → 设备/页面/文档 → 操作」,版本/状态列收窄、所属领域/方案名称列加宽;新增筛选栏(查找 方案名称/创建人 + 所属领域下拉 + 状态下拉 + 条数)与可排序列头(所属领域/方案名称/状态/创建人,升降切换带 ▲▼),卡片视图复用同结果。
v0.142026-08-19wang.yu左侧目录(TOC)贴齐浏览器最左侧:.doc-layout 取消 margin:0 auto 自动居中(改为 margin:0; padding-left:12px),宽屏下不再左右留白,目录紧贴视口左缘。
v0.132026-08-18wang.yu截图显示宽度由 500px 调整为 360px(.figure imgmax-width),等比例缩放并居中,适配常见浏览宽度。
v0.122026-08-18wang.yu统一文档内所有截图显示尺寸:修改 .figure imgmax-width:500px; height:auto 并居中,所有页面截图等比例压缩至 500px 宽,宽度一致。
v0.112026-08-18wang.yu补齐每个交互细节小节(4.1.1–4.12.1)的对应截图:新增 result.png(由 generated 站点「北方污水厂」进入结果页截取),将 4.9–4.12 的截图移入对应子节,4.13 截图总览同步加入 result.png。4.8 页面预览因无 UI 入口保留文字说明;4.1–4.7 子节补嵌实图。
v0.102026-08-18wang.yu细化设计文档:为每个页面(4.1–4.12)新增「交互细节」子章(4.x.1),统一按「① 字段 / 表格逐列(数据来源 / 是否可编辑 / 编辑类型 / 上线范围)② 按钮与操作(点击效果 / 编辑方式 / 确定·取消·关闭)③ 导航流(入口 / 上一步 / 下一步)」三段式逐项描述,覆盖表格每一列、每个按钮与弹窗的确认/取消/关闭语义及前后页跳转。修正可达性说明:站点结果可由站点项目点击已生成站点进入;页面预览当前无 UI 入口。
v0.92026-08-18wang.yu使用 Chromium + Playwright 自动抓取全站可访问页面截图,统一嵌入设计文档:新增 4.13「界面截图(UI 总览)」,覆盖登录页、站点项目、站点基本属性、Asset 资产、功能与菜单、生成确认、领域方案库、领域方案详情、设备模版列表/详情、页面样式库(共 11 张)。替换 4.9 / 4.10 中两张 placeholder.svg 为真实截图;在 4.11 / 4.12 补充真实界面图。截图文件置于 public/design-doc-assets/。
v0.82026-08-18wang.yu设备模版改为「默认展开列表、点击进入详情」:列表为紧凑表格(缩略图 / 名称 / 说明 / 采集点数 / 操作),支持按名称或说明实时搜索;点击行进入该设备模版的详情编辑区(名称 / 说明 / 图片 / 采集点),可「← 返回列表」;「+ 新增设备模版」进入新建表单,创建后定位到新建设备的详情。面向成百上千设备模版的可扩展性。同步更新 3.2 导航表、4.12 章节。
v0.72026-08-18wang.yu设备模版页交互优化:设备图片改为长方形预览区(点击上传,不再溢出);移除设备侧「所属领域」多选(改为由领域/方案侧选用设备);采集点改为整宽表格编辑,支持新增一行、勾选批量删除、保存,数值范围改为下拉选择器(预设 + 自定义);修复打开卡片时 collection_points 未加载导致的 runtime error,列表接口补充返回 collection_points。后端新增 GET /api/db/device-templates/:id/image 图片服务。新增 4.12 章节。
v0.62026-08-18wang.yu领域方案库重构为多菜单:列表页支持「列表 / 卡片」视图切换与按领域分类筛选;新增独立的「设备模版」页(前端 DeviceTemplates,独立维护设备模版与采集点);方案详情的设备面板改为「选用设备模版」(DeviceTemplatePicker,勾选即重写 device_template_domain_templates 关联,未找到可跳转新增);领域分类改为由 GET /api/domains 动态渲染的二级菜单。后端 domain-templates 更新支持 device_template_ids 重关联。同步更新 3.2 / 4.9 / 4.10 章节。
v0.52026-08-18wang.yu设计方案支持页面截图:新增 figure / 图注 样式(自动编号),撰写方式参考 MachineCube 手册(小节标题 + 说明 +「下图」引用 + 配图 + 图注);图片置于 public/design-doc-assets/。新增「版本变更记录」,每次修改升级小版本号并登记修改人 / 日期。
v0.42026-08-18wang.yu领域方案库升级为真实数据库驱动 CRUD:新增 schema(领域模板 / 设备模板 / 采集点 / 领域页面 / 模板菜单 / 知识文档 / 运维流程占位);全套接口(/api/domain-templates、/api/device-templates、/api/collection-points、/api/domain-pages、/api/template-menu-items、/api/knowledge-docs、/api/ops-flows);前端列表 + 内嵌编辑器,openDomainTemplateId 控制 列表·新增·详情 切换。
v0.32026-08-18wang.yu基线版本:整站生成超时修复(提示词精简 + 最多 2 次重试 + 超时 300s→480s)、AI 智能补全(基本属性 / 资产 / 功能与菜单三页)、功能与菜单重构、导入 Cube 后空白修复(flatten custom + normalizePanelCustom)、下载 Markdown 兼容 Azure DevOps Wiki。运维流程 / 领域分类筛选 / 从方案一键建站等仍标注「尚未实现」。