文档版本:v0.28 最后更新:2026-08-21 修改人:wang.yu 状态:开发中(演示数据已标注)
StationBuilder 产品与交互设计方案
1. 文档说明
本文档说明 StationBuilder(站点 / 领域方案 AI 生成工具)的整体结构、所有页面与菜单、每个交互元素的功能 / 数据来源 / 交互效果,以及端到端的生成流程。面向研发、设计与评审人员。
- 约定:标注 尚未实现 的项表示已在界面或方案中设计、但当前版本尚未打通能力(多为演示 / 占位)。
- 维护:本文件为单一 HTML 源(
public/design-doc.html),后续功能改动需同步更新对应章节,未实现项持续标注,直到能力落地后移除标记。 - 截图:可按 MachineCube 手册的撰写方式,在相关章节插入页面截图——小节标题 + 一句话说明 +「下图」引用 + 配图 + 图注。图片统一放在
public/design-doc-assets/目录(PNG),在文中以<figure><img src="design-doc-assets/xxx.png"><figcaption>…</figcaption></figure>插入;图注会自动编号(图 1 / 图 2 …)。每次内容修改需同步升级文档小版本号并登记「版本变更记录」。 - 导出:顶部按钮分别导出 PDF(调用浏览器打印)、Word(
.doc兼容格式)、Markdown(由本页内容实时转换)。 - 目录:页面左侧为章节目录(自动生成),点击可跳转至对应章节;滚动阅读时自动高亮当前所在章节。
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 | — | 直接进入基本属性新建态 |
③ 导航流
- 入口:登录后默认页 / 侧栏「站点项目」。
- 上一步:无(站点模块顶层)。
- 下一步:点击站点 → 基本属性(basic) 或 站点结果(result);点击「+ 新建站点」→ 基本属性(新建)。
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 资产设置 |
③ 导航流
- 入口:站点项目点击站点(未生成)/「+ 新建站点」。
- 上一步:站点项目(projects)。
- 下一步:Asset 资产设置(assets)。
4.3.2 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 交互细节

① 字段 / 表格逐列(设备资产配置表格,行内编辑即保存):
| 列 | 数据来源 | 是否可编辑 | 编辑类型 | 上线范围 |
|---|---|---|---|---|
| 设备类型 * | PUT /api/db/sites/:id/assets | 可编辑 | 文本输入 | 资产层级树节点、模拟数据设备实例类型 |
| 数量 * | 同上 | 可编辑 | 数字 min=0 | 资产层级实例数量、模拟数据设备数 |
| 命名规则 | 同上 | 可编辑 | 文本(# 序号 / 纯前缀) | 生成时设备实例命名(如 CH-01、beng-01) |
| 操作 / ⌫ | 同上(本地移除行) | 触发动作 | 删除按钮 | 移除该设备类型 |
KPI 行(设备类型 / 设备实例 / 资产层级)与「资产层级预览」树由本地计算,随表格实时变化(3 层结构为展示占位,资产层级建模尚未实现)。
② 按钮与操作
| 按钮 | 点击效果 | 编辑方式 | 确定 / 取消 / 关闭 |
|---|---|---|---|
| + 添加设备类型 | 追加一行空白设备类型 | — | 无弹窗 |
| ⌫ 删除 | 移除该行 | — | 无二次确认(即时移除) |
| AI 资产补全「开始补全」 | POST /api/db/sites/:id/complete-assets(流式) | 无需填参 | 结果追加到列表下方并自动保存;控制台流式输出 |
| 查看提示词 | 打开 completePrompt 模态 | 只读 | × / 关闭 |
| sticky「上一步」 | go("basic") | — | 返回基本属性 |
| sticky「下一步」 | go("functions") | — | 进入功能与菜单 |
③ 导航流
- 入口:基本属性「下一步」/ 侧栏「Asset 资产设置」。
- 上一步:基本属性(basic)。
- 下一步:功能与菜单(functions)。
4.4.2 AI 智能补全(Asset 资产设置)

「开始补全」调用 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 | 行内编辑、生成、保存、删除、下载;可添加页面 |
| 「生成」单页按钮 | 单独生成某个 Cube | POST /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 标准页面(树状复选) | 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") | — | 进入生成确认 |
③ 导航流
- 入口:Asset「下一步」/ 侧栏「功能与菜单」。
- 上一步:Asset 资产设置(assets)。
- 下一步:生成确认(generate)。(generate 之后无 UI 入口进入站点结果/页面预览,见 4.7 / 4.8)
4.5.2 AI 智能补全(功能与菜单 · 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 交互细节

① 字段 / 表格逐列
| 区域 / 列 | 数据来源 | 是否可编辑 | 编辑类型 | 上线范围 |
|---|---|---|---|---|
| 生成范围确认卡片(站点 / 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」 |
| 下载 ZIP | window.open(zipUrl) 新标签 | — | 下载 station-package.zip |
| AI 生成工作流终端 | 实时滚动模型/Skill 输出 | 只读 | 点开始生成时清空 |
③ 导航流
- 入口:功能与菜单「下一步」/ 侧栏「生成确认」。
- 上一步:无显式按钮(为向导末步)。
- 下一步:生成完成后无 UI 自动跳转(站点结果/页面预览当前无入口,见 4.7 / 4.8)。
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 交互细节

① 字段 / 表格逐列(均为结果只读展示,无表单编辑):
| 区域 | 数据来源 | 是否可编辑 | 编辑类型 | 上线范围 |
|---|---|---|---|---|
| 结果头(状态 / 修改配置 / 下载全部 / 版本历史) | 当前 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 生成工作流」终端实时滚动,完成后刷新并关闭;× / 关闭 = 取消(不重生成) |
③ 导航流
- 入口:站点项目点击已生成站点(
go("result", id))。(注:4.6 生成完成后不会自动跳转至此,需回站点项目点击该站点进入。) - 上一步:修改配置 → Asset 资产设置(assets)。
- 下一步:无(末页)。
4.8 页面预览(preview)
| 元素 | 功能 | 数据来源 | 交互效果 |
|---|---|---|---|
| 页面选择下拉 | 切换预览的 Cube 页面 | 当前 site.cubes | 切换展示对应页面 |
| 「站点监控」演示画布 | 展示看板式预览外壳 | 内置演示数据 | KPI / 图表为静态演示 未接入真实生成数据 |
| 「1440×900 / 浅色 / 刷新数据 / 全屏」 | 视图与数据操作的占位 | — | 除提示外无实际行为 尚未实现 |
| 实际 Cube 渲染(info/json/feedback 标签) | 真实渲染已生成 JSON | GET .../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 渲染区可展示真实生成结果。
③ 导航流
- 入口:当前无 UI 入口——代码中无
go("preview")调用,无法从任何页面进入(与 4.7 站点结果不同)。 - 上一步 / 下一步:均不可达。
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)后自动打开详情;取消收起 |
③ 导航流
- 入口:侧栏「领域方案库」/「领域方案」。
- 上一步:无(领域模块顶层)。
- 下一步:点击「编辑」/ 卡片 → 方案详情(domainDetail);点击「+ 新增领域方案」→ CreateTemplate(保存后 → domainDetail)。
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 → 领域方案库列表 | — | 返回列表态 |
③ 导航流
- 入口:领域方案库点击「编辑」/ 卡片,或「+ 新增领域方案」保存后。
- 上一步:← 返回列表 → 领域方案库(domains)。
- 下一步:无(详情为末层);可通过「选用设备模版 → + 新增设备模版」跳到设备模版页(deviceTemplates)。
4.11 页面样式库(styleLibrary)
| 元素 | 功能 | 数据来源 | 交互效果 |
|---|---|---|---|
| 样式卡片网格(缩略图 + 名称 + 编辑/删除) | 浏览已有样式 | GET /api/db/page-styles | 3 列布局,缩略图按 16:9 比例自适应高度(object-fit:contain,整页完整可见、不被截断);缩略图点开大图预览;编辑/删除生效 |
| 「+ 新增样式」 | 上传样式(JSON + 预览图) | POST /api/db/page-styles | 打开编辑模态,填写名称/预览图/JSON 后保存 |
| 样式大图预览(StylePreview) | 查看样式原图 | GET /api/db/page-styles/:id/image | 模态展示 |
4.11.1 交互细节

① 字段 / 表格逐列
| 区域 / 列 | 数据来源 | 是否可编辑 | 编辑类型 | 上线范围 |
|---|---|---|---|---|
| 样式卡片网格(缩略图 / 名称 / 创建时间 / 编辑·删除) | 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。











5. 生成流程(端到端)
- 发起:在「生成确认」点「开始生成」→ 前端
POST /api/db/sites/:id/generate-all(携带各 Cube 的名称与内容)。 - 落库与准备:db-sidecar 先持久化前端传入的 Cube,再以最多 3 个并发的
mapWithConcurrency调用各 Cube 的生成(各页相互独立,互不阻塞;限制并发以避免资源争抢导致单页超时)。 - 调用模型:每页调用 AI 生成服务(后端
runCodebuddy封装)→ 生成进程以流式 JSON 输出。提示词内含可视化生成 Skill 的 Cube 结构规则(DASHBOARD_SPEC)与站点/样式上下文;DASHBOARD_SPEC 已要求模拟数据精简(时序 ≤16 点、KPI/表格样例 ≤6 行)以缩短输出。 - 解析与校验(含代码级自动修复):从流式输出抽取 JSON →
fixDashboard先做代码级自动修复(修复x+w>24、面板重叠、首面板 Title 定位、KPI/Radar/Line 等data字段、缺失id/gridPos等)→ 再validateDashboard复校;仅当残留问题确无法自动修复时才再次调用模型(最多 2 次模型调用,原 3 次)。 - 写回:生成的 JSON 存入 gen_files 并关联 Cube,状态置为 generated,同时保存组合提示词。
- 打包:全部页面完成后打包为 station-package.zip。
- 实时回传:整个过程以 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. 尚未实现功能汇总
- 真实登录 / 账号体系(当前为演示登录) 尚未实现
- 领域方案库真实数据 CRUD(领域模板 / 设备模板 / 采集点 / 领域页面 / 模板菜单 / 知识文档)已落地;「直接使用 / 加入站点」将从方案一键建站 尚未实现
- 运维流程内容编辑(当前仅占位记录) 尚未实现
- 领域方案按领域分类筛选(左侧「领域分类」动态二级菜单,点击即按 domainFilter 筛选方案列表)
- Asset Excel 生成与下载 尚未实现
- 资产三级层级建模(当前为展示占位) 尚未实现
- 页面预览中「站点监控」真实数据接入(当前为静态演示) 尚未实现
- 版本历史真实多版本管理(当前仅 V1 占位) 尚未实现
- 列表搜索 / 筛选的服务端查询(当前为前端过滤) 尚未实现
- 生成模型可切换(当前后端固定配置) 尚未实现
- 单页生成(functions 页)的实时日志 尚未实现
- 顶栏汉堡按钮的移动端菜单 尚未实现
10. 维护与导出说明
10.1 版本变更记录(Changelog)
| 版本 | 日期 | 修改人 | 说明 |
|---|---|---|---|
| v0.28 | 2026-08-21 | wang.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.27 | 2026-08-21 | wang.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.26 | 2026-08-21 | wang.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` 类选择器未命中正文 ` |
| v0.24 | 2026-08-20 | wang.yu | AI 并发调用统一限流:新增全局信号量 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.25 | 2026-08-20 | wang.yu | 领域方案「已完成态」步进导航增强:判定「已完成」= 方案存在至少一个已生成(非空 json_text)的 Cube 页面(DomainWizard 内 pageGenerated)。完成后:① 步进器每个「已配置」的 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.23 | 2026-08-20 | wang.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(仅 .docx,mammoth)、Excel(.xls/.xlsx,SheetJS 转 CSV)提取正文并 16k 截断后注入提示词;图片及老 .doc 等无法纯 JS 提取的格式返回空串,buildKnowledgePrompt 中仍登记为参考来源((参考来源:文件名))。新增依赖 pdf-parse / mammoth / xlsx(纯 JS,无原生编译)。 |
| v0.22 | 2026-08-20 | wang.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.21 | 2026-08-20 | wang.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.20 | 2026-08-20 | wang.yu | 领域分类管理增强:① 默认分类调整——移除「工业制造 / 工业园区 / 智慧楼宇」,新增「其他」(DEFAULT_DOMAINS 同步更新,重启不再复活被删分类);② 领域方案库新增「管理领域」面板,列出全部领域及其方案数,「其他」标注「默认保留」且不可删除,其余领域提供「删除」按钮,经自定义确认弹窗二次确认后调用 DELETE /api/domains/:id;③ 后端新增 DELETE /api/domains/:id:禁止删除「其他」,删除前将待删领域的 domain_templates 与 device_template_domains 关联迁移至「其他」(避免 ON DELETE CASCADE 误删方案),再删除领域;④ 删除后前端刷新领域列表,并在当前筛选命中该领域时自动清除筛选。 |
| v0.19 | 2026-08-20 | wang.yu | 修复领域方案「功能与菜单 → Cube 扩展页面」两处问题:①「生成」按钮改为流式请求(消费 NDJSON 响应体以保持连接),生成期间按钮显示「生成中…」并禁用、底部「AI 生成页面」控制台实时输出进度并据服务端 {status:failed} 事件弹失败提示;此前前端用普通 fetch 不读取响应体,连接被提前关闭导致服务端 AI 生成中断(status='failed')、Json 未写入。② AI 智能补全(complete-cubes)由「逐条静默 .catch(()=>{}) 插入」改为「收集结果后逐个 await 插入、失败显式 notify」,并捕获服务端 {status:failed} 事件弹失败提示,避免补全内容静默丢失、列表无变化。 |
| v0.17 | 2026-08-19 | wang.yu | 修复左侧目录(TOC)点击章节后消失:根因为顶部版本说明段落含全角空格不换行,在 flex 布局下把 main#doc 撑到约 2238px 宽(flex item 默认 min-width:auto 不收缩),点击锚点时浏览器水平滚动将 sticky 目录推出左边界。给 main#doc 增加 min-width:0 使其可收缩、内容正常折行,消除水平滚动,目录任意宽度常驻可见。 |
| v0.18 | 2026-08-20 | wang.yu | 领域方案「功能与菜单 → Cube 扩展页面」表格增强:① 新增「来源」列,以徽标区分 上传 / AI生成 / 手动;② 原「生成文件」列更名为「Json文件」,对上传页面提供原始 .json 文件名下载、对 AI 生成页面提供生成的 Cube .json 下载(未生成显示"未生成");③ domain_pages 新增 source 字段,上传/生成时分别写入 source=upload/ai 与 gen_filename;④ 生成确认页状态徽标区分「AI已生成 / 已上传 / 未生成 · 来源」。同步更新 4.10 章节。 |
| v0.16 | 2026-08-19 | wang.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.15 | 2026-08-19 | wang.yu | 领域方案库列表增强:列顺序调整为「所属领域 → 方案名称 → 版本 → 状态 → 创建人 → 设备/页面/文档 → 操作」,版本/状态列收窄、所属领域/方案名称列加宽;新增筛选栏(查找 方案名称/创建人 + 所属领域下拉 + 状态下拉 + 条数)与可排序列头(所属领域/方案名称/状态/创建人,升降切换带 ▲▼),卡片视图复用同结果。 |
| v0.14 | 2026-08-19 | wang.yu | 左侧目录(TOC)贴齐浏览器最左侧:.doc-layout 取消 margin:0 auto 自动居中(改为 margin:0; padding-left:12px),宽屏下不再左右留白,目录紧贴视口左缘。 |
| v0.13 | 2026-08-18 | wang.yu | 截图显示宽度由 500px 调整为 360px(.figure img 的 max-width),等比例缩放并居中,适配常见浏览宽度。 |
| v0.12 | 2026-08-18 | wang.yu | 统一文档内所有截图显示尺寸:修改 .figure img 为 max-width:500px; height:auto 并居中,所有页面截图等比例压缩至 500px 宽,宽度一致。 |
| v0.11 | 2026-08-18 | wang.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.10 | 2026-08-18 | wang.yu | 细化设计文档:为每个页面(4.1–4.12)新增「交互细节」子章(4.x.1),统一按「① 字段 / 表格逐列(数据来源 / 是否可编辑 / 编辑类型 / 上线范围)② 按钮与操作(点击效果 / 编辑方式 / 确定·取消·关闭)③ 导航流(入口 / 上一步 / 下一步)」三段式逐项描述,覆盖表格每一列、每个按钮与弹窗的确认/取消/关闭语义及前后页跳转。修正可达性说明:站点结果可由站点项目点击已生成站点进入;页面预览当前无 UI 入口。 |
| v0.9 | 2026-08-18 | wang.yu | 使用 Chromium + Playwright 自动抓取全站可访问页面截图,统一嵌入设计文档:新增 4.13「界面截图(UI 总览)」,覆盖登录页、站点项目、站点基本属性、Asset 资产、功能与菜单、生成确认、领域方案库、领域方案详情、设备模版列表/详情、页面样式库(共 11 张)。替换 4.9 / 4.10 中两张 placeholder.svg 为真实截图;在 4.11 / 4.12 补充真实界面图。截图文件置于 public/design-doc-assets/。 |
| v0.8 | 2026-08-18 | wang.yu | 设备模版改为「默认展开列表、点击进入详情」:列表为紧凑表格(缩略图 / 名称 / 说明 / 采集点数 / 操作),支持按名称或说明实时搜索;点击行进入该设备模版的详情编辑区(名称 / 说明 / 图片 / 采集点),可「← 返回列表」;「+ 新增设备模版」进入新建表单,创建后定位到新建设备的详情。面向成百上千设备模版的可扩展性。同步更新 3.2 导航表、4.12 章节。 |
| v0.7 | 2026-08-18 | wang.yu | 设备模版页交互优化:设备图片改为长方形预览区(点击上传,不再溢出);移除设备侧「所属领域」多选(改为由领域/方案侧选用设备);采集点改为整宽表格编辑,支持新增一行、勾选批量删除、保存,数值范围改为下拉选择器(预设 + 自定义);修复打开卡片时 collection_points 未加载导致的 runtime error,列表接口补充返回 collection_points。后端新增 GET /api/db/device-templates/:id/image 图片服务。新增 4.12 章节。 |
| v0.6 | 2026-08-18 | wang.yu | 领域方案库重构为多菜单:列表页支持「列表 / 卡片」视图切换与按领域分类筛选;新增独立的「设备模版」页(前端 DeviceTemplates,独立维护设备模版与采集点);方案详情的设备面板改为「选用设备模版」(DeviceTemplatePicker,勾选即重写 device_template_domain_templates 关联,未找到可跳转新增);领域分类改为由 GET /api/domains 动态渲染的二级菜单。后端 domain-templates 更新支持 device_template_ids 重关联。同步更新 3.2 / 4.9 / 4.10 章节。 |
| v0.5 | 2026-08-18 | wang.yu | 设计方案支持页面截图:新增 figure / 图注 样式(自动编号),撰写方式参考 MachineCube 手册(小节标题 + 说明 +「下图」引用 + 配图 + 图注);图片置于 public/design-doc-assets/。新增「版本变更记录」,每次修改升级小版本号并登记修改人 / 日期。 |
| v0.4 | 2026-08-18 | wang.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.3 | 2026-08-18 | wang.yu | 基线版本:整站生成超时修复(提示词精简 + 最多 2 次重试 + 超时 300s→480s)、AI 智能补全(基本属性 / 资产 / 功能与菜单三页)、功能与菜单重构、导入 Cube 后空白修复(flatten custom + normalizePanelCustom)、下载 Markdown 兼容 Azure DevOps Wiki。运维流程 / 领域分类筛选 / 从方案一键建站等仍标注「尚未实现」。 |
- 功能变更后请同步更新本文档对应章节,未实现项持续标注 尚未实现,落地后移除。
- 下载 PDF:调用浏览器打印,在打印对话框选择「另存为 PDF」;勾选「页眉和页脚」可加页码,输出真实文字无乱码。
- 下载 Word:将本文档内容以 Word 兼容的
.doc格式导出(Word 可直接打开,含页脚页码与默认目录)。 - 下载 Markdown:由本页 DOM 实时转换为 Markdown 文本导出。