<h2>2. 产品概述</h2>
<p>StationBuilder 是面向 iStation 团队的内部工具,用于通过 AI 大模型与 <b>可视化生成 Skill</b> 快速生成站点的大屏看板(Cube 仪表盘 JSON)、资产配置、功能菜单与领域方案,并可预览、反馈微调与打包下载。核心用户路径为:<b>站点列表 → 站点详情(基本属性 / 资产 / 功能与菜单 / 生成确认)→ 站点结果 / 页面预览</b>。</p>
- <h2>4. 整体导航与菜单</h2>
+ <h2>3. 整体导航与菜单</h2>
- <h3>4.1 顶栏(Topbar)</h3>
+ <h3>3.1 顶栏(Topbar)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>汉堡按钮 ☰</td><td>布局占位(移动端菜单预留)</td><td>—</td><td>当前无行为 <span class="todo">尚未实现</span></td></tr>
<tr><td>登录者头像 W / 邮箱</td><td>当前登录身份展示</td><td>静态演示</td><td>演示态,点击头像返回登录页 <span class="todo">登录态尚未实现</span>(登录页不在本文档单列章节)</td></tr>
</table>
- <h3>4.2 左侧导航整体结构(side-nav)</h3>
+ <h3>3.2 左侧导航整体结构(side-nav)</h3>
<p>左侧导航由固定顶部的「模块切换」+ 随当前模块/页面动态渲染的「分组与菜单项」组成。同一时刻仅一个模块高亮,菜单项按当前所在模块展示不同内容。完整结构如下:</p>
<pre>side-nav
├─ 模块切换 module-switch(互斥,仅一个高亮)
<table>
<tr><th>导航元素</th><th>所属模块 / 分组</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
- <tr><td>模块切换三个按钮</td><td>module-switch</td><td>切换三大模块</td><td>前端 state(page)</td><td>互斥高亮;点击切换至模块首页(见 4.3)</td></tr>
+ <tr><td>模块切换三个按钮</td><td>module-switch</td><td>切换三大模块</td><td>前端 state(page)</td><td>互斥高亮;点击切换至模块首页(见 3.3)</td></tr>
<tr><td>站点项目</td><td>StationBuilder / 站点列表</td><td>进入站点列表</td><td>—</td><td>点击 go("projects");当前页高亮</td></tr>
<tr><td>站点切换器 <select></td><td>StationBuilder / 站点详情</td><td>在已建站点间快速切换</td><td>GET /api/db/sites</td><td>选择后加载该站点并跳转(在列表页则进基本属性,在详情页则停留在当前子页)</td></tr>
<tr><td>1 基本属性 / 2 资产 / 3 功能与菜单 / 4 生成确认</td><td>StationBuilder / 生成向导</td><td>生成向导分步导航</td><td>前端 state</td><td>点击 go 对应页;当前步骤高亮;已完成步骤可回跳</td></tr>
<tr><td>全部页面样式</td><td>页面样式库 / 样式库导航</td><td>样式库列表</td><td>GET /api/db/page-styles</td><td>点击 go("styleLibrary");当前页高亮</td></tr>
</table>
- <h3>4.3 模块切换(module-switch)</h3>
+ <h3>3.3 模块切换(module-switch)</h3>
<p>三个互斥模块,同一时刻仅一个高亮:</p>
<table>
<tr><th>模块</th><th>功能</th><th>点击效果</th></tr>
<tr><td>页面样式库</td><td>可复用的 Cube 视觉样式</td><td>进入「页面样式库」页</td></tr>
</table>
- <h3>4.4 站点列表 / 站点详情 分组与站点切换器</h3>
+ <h3>3.4 站点列表 / 站点详情 分组与站点切换器</h3>
<p>StationBuilder 模块下分两类:</p>
<ul>
<li><b>站点列表</b>:站点项目页,负责站点的查看、搜索、编辑与删除(含批量删除)。</li>
<tr><td>步骤条 Steps(基本/资产/功能/生成)</td><td>向导进度指示</td><td>当前页 state</td><td>已完成步骤可点击回跳;当前步高亮、未达步骤置灰</td></tr>
</table>
- <h2>5. 页面详细说明</h2>
+ <h2>4. 页面详细说明</h2>
- <h3>5.2 站点项目 / 站点列表(projects)</h3>
+ <h3>4.2 站点项目 / 站点列表(projects)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>统计条(全部/草稿/生成中/生成完成/部分失败)</td><td>站点总量概览</td><td>GET /api/db/sites 聚合</td><td>纯展示</td></tr>
<tr><td>↻ 刷新</td><td>刷新列表</td><td>—</td><td>提示「列表已刷新」(实际未重新拉取) <span class="todo">尚未实现</span></td></tr>
</table>
- <h4>5.2.1 交互细节</h4>
+ <h4>4.2.1 交互细节</h4>
<figure><img src="design-doc-assets/projects.png" alt="站点项目"/><figcaption>站点项目:全部站点列表、统计概览、筛选与新建入口。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b>(列表表格,仅展示 + 选择,不可就地文本编辑):</p>
<table>
<li><b>下一步</b>:点击站点 → 基本属性(basic) 或 站点结果(result);点击「+ 新建站点」→ 基本属性(新建)。</li>
</ul>
- <h3>5.3 站点基本属性(basic)</h3>
+ <h3>4.3 站点基本属性(basic)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>站点名称(最多 20 字)</td><td>站点命名</td><td>PUT /api/db/sites</td><td>输入即保存(自动);超限标红</td></tr>
<tr><td>AI 智能补全</td><td>根据站点名称 / 所属领域 / 站点基本情况描述,由 AI 分析并自动补全「补充要求」</td><td>POST /api/db/sites/:id/complete(流式 NDJSON)</td><td>「开始补全」后控制台流式输出思考过程,结束将结果写入「补充要求」并自动保存;「查看提示词」可查看本次使用的完整提示词 <span class="todo">补充描述质量将按反馈持续优化</span></td></tr>
</table>
- <h4>5.3.1 交互细节</h4>
+ <h4>4.3.1 交互细节</h4>
<figure><img src="design-doc-assets/basic.png" alt="站点基本属性"/><figcaption>站点基本属性:站点名称、域名、业务描述、关键词、文件上传等基本信息维护。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b>(左栏「站点基本信息」表单 + 右栏建议/AI 面板):</p>
<table>
<li><b>下一步</b>:Asset 资产设置(assets)。</li>
</ul>
- <h4>5.3.2 AI 智能补全(站点基本属性)</h4>
+ <h4>4.3.2 AI 智能补全(站点基本属性)</h4>
<figure><img src="design-doc-assets/ai-complete-basic.png" alt="AI 智能补全·基本属性"/><figcaption>AI 智能补全进行中:点击「开始补全」后,面板下方出现黑底白字的「AI 智能补全」终端,实时滚动输出分析过程。</figcaption></figure>
<p>「开始补全」调用 <code>POST /api/db/sites/:id/complete</code>(流式 NDJSON)。终端(<code>.modal-console</code>)实时逐行输出 AI 的思考 / 分析过程(如「▶ 开始 AI 智能补全:基于站点名称 / 领域 / 描述分析并生成补充描述…」);流结束后将生成的补充描述写入「补充要求」并自动保存。点击「查看提示词」可查看本次组合提示词。补全过程中「开始补全」按钮显示「补全中…」并禁用,避免重复触发 <span class="todo">补充描述质量将按反馈持续优化</span>。</p>
- <h3>5.4 Asset 资产设置(assets)</h3>
+ <h3>4.4 Asset 资产设置(assets)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>KPI(设备类型/实例/层级)</td><td>资产概览</td><td>本地计算</td><td>随表格输入实时变化</td></tr>
<tr><td>AI 智能补全</td><td>根据站点名称 / 领域 / 描述 / 补充要求,分析并补充设备类型、数量与命名规则到资产配置列表(位于用户已填项下方,不改动已填项)</td><td>POST /api/db/sites/:id/complete-assets(流式 NDJSON)</td><td>「开始补全」后控制台流式输出思考过程;结果追加到资产配置列表(按模型给出的数量预设与命名规则);资产层级预览随之重算;「查看提示词」可看完整提示词 <span class="todo">设备补充质量将按反馈持续优化</span></td></tr>
</table>
- <h4>5.4.1 交互细节</h4>
+ <h4>4.4.1 交互细节</h4>
<figure><img src="design-doc-assets/assets.png" alt="Asset 资产设置"/><figcaption>Asset 资产设置:设备类型、数量、命名规则与资产层级预览。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b>(设备资产配置表格,行内编辑即保存):</p>
<table>
<li><b>下一步</b>:功能与菜单(functions)。</li>
</ul>
- <h4>5.4.2 AI 智能补全(Asset 资产设置)</h4>
+ <h4>4.4.2 AI 智能补全(Asset 资产设置)</h4>
<figure><img src="design-doc-assets/ai-complete-assets.png" alt="AI 智能补全·资产"/><figcaption>AI 资产补全进行中:终端实时输出设备类型 / 数量 / 命名规则的推断过程。</figcaption></figure>
<p>「开始补全」调用 <code>POST /api/db/sites/:id/complete-assets</code>(流式 NDJSON)。终端实时输出 AI 对设备类型、数量与命名规则的推断过程;结果将<strong>追加在用户已填项下方</strong>(不改动已填内容),资产配置列表随之更新,资产层级预览重算;结束自动保存。点击「查看提示词」查看完整提示词。</p>
- <h3>5.5 功能与菜单(functions)</h3>
+ <h3>4.5 功能与菜单(functions)</h3>
<p>三个子页签:</p>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>菜单结构(只读默认预览)</td><td>展示默认菜单结构</td><td>本地计算(MU + Cube)</td><td>MU 标准页面在上;所有 Cube 页面归入「综合监控」一级菜单,二级为各 Cube 页面名称;本页仅为展示,无编辑/保存 <span class="tag">默认结构</span></td></tr>
</table>
- <h4>5.5.1 交互细节</h4>
+ <h4>4.5.1 交互细节</h4>
<figure><img src="design-doc-assets/functions.png" alt="功能与菜单"/><figcaption>功能与菜单:MU 页面选择、Cube 扩展页面编辑、页面样式选择、菜单结构预览。</figcaption></figure>
<p>三个页签:MU 标准页面 / Cube 扩展页面 / 菜单结构。</p>
<p><b>① 字段 / 表格逐列</b></p>
<ul>
<li><b>入口</b>:Asset「下一步」/ 侧栏「功能与菜单」。</li>
<li><b>上一步</b>:Asset 资产设置(assets)。</li>
- <li><b>下一步</b>:生成确认(generate)。(generate 之后无 UI 入口进入站点结果/页面预览,见 5.7 / 5.8)</li>
+ <li><b>下一步</b>:生成确认(generate)。(generate 之后无 UI 入口进入站点结果/页面预览,见 4.7 / 4.8)</li>
</ul>
- <h4>5.5.2 AI 智能补全(功能与菜单 · Cube 扩展页面)</h4>
+ <h4>4.5.2 AI 智能补全(功能与菜单 · Cube 扩展页面)</h4>
<figure><img src="design-doc-assets/ai-complete-functions.png" alt="AI 智能补全·Cube"/><figcaption>AI Cube 页面补全进行中:基于站点信息与设备资产层级,实时推断并补充 Cube 扩展页面。</figcaption></figure>
<p>在「Cube 扩展页面」页签中点击「开始补全」,调用 <code>POST /api/db/sites/:id/complete-cubes</code>(流式 NDJSON)。终端实时输出 AI 对站点所需 Cube 扩展页面的推断(页面名称 + 详细内容);结果追加在用户已建页面下方并自动保存。点击「查看提示词」可查看完整组合提示词。</p>
- <h3>5.6 生成确认(generate)</h3>
+ <h3>4.6 生成确认(generate)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>生成范围确认</td><td>展示本次生成范围(站点/资产/MU/Cube)</td><td>当前 site 计算</td><td>「返回修改」占位 <span class="todo">尚未实现</span></td></tr>
<tr><td>「下载 ZIP」</td><td>下载全部交付物</td><td>GET /api/db/sites/:id/package</td><td>新标签页下载 station-package.zip</td></tr>
</table>
- <h4>5.6.1 交互细节</h4>
+ <h4>4.6.1 交互细节</h4>
<figure><img src="design-doc-assets/generate.png" alt="生成确认"/><figcaption>生成确认:选择生成范围、执行 AI 生成,并实时查看生成进度。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b></p>
<table>
<ul>
<li><b>入口</b>:功能与菜单「下一步」/ 侧栏「生成确认」。</li>
<li><b>上一步</b>:无显式按钮(为向导末步)。</li>
- <li><b>下一步</b>:生成完成后无 UI 自动跳转(站点结果/页面预览当前无入口,见 5.7 / 5.8)。</li>
+ <li><b>下一步</b>:生成完成后无 UI 自动跳转(站点结果/页面预览当前无入口,见 4.7 / 4.8)。</li>
</ul>
- <h3>5.7 站点结果(result)</h3>
+ <h3>4.7 站点结果(result)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>结果头(状态 / 修改配置 / 下载全部 / 版本历史)</td><td>概览与操作入口</td><td>当前 site</td><td>「修改配置」回 assets;「下载全部」取 package;「版本历史」开模态</td></tr>
</table>
<p class="note">页面结果卡片默认<b>纵向单列</b>排列(上下结构),每张卡片占满整行,便于在多个 Cube 页面间逐张查看与操作;每张卡片底部并排展示「预览 / JSON / 提示词 / 修改意见」四个按钮。</p>
- <h4>5.7.1 交互细节</h4>
+ <h4>4.7.1 交互细节</h4>
<figure><img src="design-doc-assets/result.png" alt="站点结果"/><figcaption>站点结果:生成完成后查看各 Cube 页面缩略图、预览、JSON 下载、提示词与修改意见。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b>(均为结果只读展示,无表单编辑):</p>
<table>
</table>
<p><b>③ 导航流</b></p>
<ul>
- <li><b>入口</b>:站点项目点击<b>已生成</b>站点(<code>go("result", id)</code>)。(注:5.6 生成完成后<b>不会</b>自动跳转至此,需回站点项目点击该站点进入。)</li>
+ <li><b>入口</b>:站点项目点击<b>已生成</b>站点(<code>go("result", id)</code>)。(注:4.6 生成完成后<b>不会</b>自动跳转至此,需回站点项目点击该站点进入。)</li>
<li><b>上一步</b>:修改配置 → Asset 资产设置(assets)。</li>
<li><b>下一步</b>:无(末页)。</li>
</ul>
- <h3>5.8 页面预览(preview)</h3>
+ <h3>4.8 页面预览(preview)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>页面选择下拉</td><td>切换预览的 Cube 页面</td><td>当前 site.cubes</td><td>切换展示对应页面</td></tr>
<tr><td>实际 Cube 渲染(info/json/feedback 标签)</td><td>真实渲染已生成 JSON</td><td>GET .../file + dashboard-renderer</td><td>展示真实生成结果(与 result 缩略图同源)</td></tr>
</table>
- <h4>5.8.1 交互细节</h4>
+ <h4>4.8.1 交互细节</h4>
<p class="note">本页当前无 UI 入口,故无对应截图;功能说明见下文。</p>
<p><b>① 字段 / 表格逐列</b>(当前为静态演示外壳,未接入真实生成数据):</p>
<table>
<p><b>② 按钮与操作</b>:演示画布内的「刷新数据 / 全屏」等仅触发提示,无业务副作用。实际 Cube 渲染区可展示真实生成结果。</p>
<p><b>③ 导航流</b></p>
<ul>
- <li><b>入口</b>:<span class="todo">当前无 UI 入口</span>——代码中无 <code>go("preview")</code> 调用,无法从任何页面进入(与 5.7 站点结果不同)。</li>
+ <li><b>入口</b>:<span class="todo">当前无 UI 入口</span>——代码中无 <code>go("preview")</code> 调用,无法从任何页面进入(与 4.7 站点结果不同)。</li>
<li><b>上一步 / 下一步</b>:均不可达。</li>
</ul>
- <h3>5.9 领域方案库(domains)</h3>
+ <h3>4.9 领域方案库(domains)</h3>
<p>领域方案库已从硬编码演示改为<strong>真实数据库驱动</strong>。列表与详情编辑器同一页面内通过 <code>openDomainTemplateId</code> state 切换:<code>null</code>=列表,<code>"create"</code>=新增表单,<code>number</code>=该方案详情编辑器。列表支持<strong>列表 / 卡片两种视图</strong>切换(右上角视图切换按钮,<code>view</code> state 控制)。列表上方提供<strong>筛选栏</strong>:文本查找框(匹配 方案名称 / 创建人)、所属领域下拉、状态下拉,结果实时过滤并显示条数;列头 <strong>所属领域 / 方案名称 / 状态 / 创建人</strong> 可点击排序(升/降切换,带 ▲▼ 指示),卡片视图复用同一筛选与排序结果。</p>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>搜索 / 筛选 / 同步方案库</td><td>(历史功能)</td><td>—</td><td>已按计划 Phase 0 移除整行(含「同步方案库」占位按钮) <span class="todo">已移除</span></td></tr>
</table>
- <h4>5.9.1 交互细节</h4>
+ <h4>4.9.1 交互细节</h4>
<figure><img src="design-doc-assets/domains.png" alt="领域方案库"/><figcaption>领域方案库:列表视图,上方为筛选栏(查找方案名称/创建人、所属领域、状态),列头 所属领域/方案名称/状态/创建人 可点击排序;支持列表/卡片切换。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b>(列表表格,仅展示 + 操作):</p>
<table>
<li><b>下一步</b>:点击「编辑」/ 卡片 → 方案详情(domainDetail);点击「+ 新增领域方案」→ CreateTemplate(保存后 → domainDetail)。</li>
</ul>
- <h3>5.10 方案详情(domainDetail / 内嵌编辑器)</h3>
+ <h3>4.10 方案详情(domainDetail / 内嵌编辑器)</h3>
<p>详情为同一页面内嵌编辑器,所有内容均可编辑,数据持久化到领域方案库相关表。各面板如下:</p>
<table>
<tr><th>面板 / 元素</th><th>功能</th><th>数据来源 / 接口</th><th>交互效果</th></tr>
<tr><td>运维流程(OpsFlowsViewer)</td><td>查看运维流程(流程名称 + 内容 JSON 串)</td><td>GET /api/ops-flows</td><td>仅展示占位记录,本功能 <span class="todo">尚未实现</span></td></tr>
</table>
- <h4>5.10.1 交互细节</h4>
+ <h4>4.10.1 交互细节</h4>
<figure><img src="design-doc-assets/domain-detail.png" alt="方案详情编辑器"/><figcaption>领域方案详情编辑器:模板信息、选用设备模版、领域页面、模板菜单、知识文档、运维流程等面板。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b></p>
<table>
<li><b>下一步</b>:无(详情为末层);可通过「选用设备模版 → + 新增设备模版」跳到设备模版页(deviceTemplates)。</li>
</ul>
- <h3>5.11 页面样式库(styleLibrary)</h3>
+ <h3>4.11 页面样式库(styleLibrary)</h3>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>样式卡片网格(缩略图 + 名称 + 编辑/删除)</td><td>浏览已有样式</td><td>GET /api/db/page-styles</td><td>3 列布局,缩略图按 16:9 比例自适应高度(object-fit:contain,整页完整可见、不被截断);缩略图点开大图预览;编辑/删除生效</td></tr>
<tr><td>样式大图预览(StylePreview)</td><td>查看样式原图</td><td>GET /api/db/page-styles/:id/image</td><td>模态展示</td></tr>
</table>
- <h4>5.11.1 交互细节</h4>
+ <h4>4.11.1 交互细节</h4>
<figure><img src="design-doc-assets/style-library.png" alt="页面样式库"/><figcaption>页面样式库:16:9 缩略图卡片网格,可新增 / 编辑 / 删除样式。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b></p>
<table>
<li><b>下一步</b>:无;样式被站点「功能与菜单」页的「站点页面样式」选择器引用。</li>
</ul>
- <h3>5.12 设备模版(deviceTemplates)</h3>
+ <h3>4.12 设备模版(deviceTemplates)</h3>
<p>独立的「设备模版」页,维护可复用的设备模版与采集点,供领域方案在详情中「选用设备模版」引用。设备模版数量可能成百上千,因此采用<strong>默认展开列表、点击进入详情</strong>的方式(而非整页卡片栅格):列表为紧凑表格(<code>.device-tpl-list</code>),含缩略图 / 名称 / 说明 / 采集点数 / 操作,并支持按名称或说明实时搜索;点击任意行进入该设备模版的详情编辑区,详情内「← 返回列表」回到列表。列表上方「+ 新增设备模版」进入新建表单(创建后定位到新建设备的详情)。</p>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源 / 接口</th><th>交互效果</th></tr>
<tr><td>新增设备模版</td><td>新建设备模版(名称 / 说明 / 图片)</td><td>POST /api/db/device-templates</td><td>列表上方「+ 新增设备模版」进入新建表单,创建后自动打开该设备模版的详情编辑区</td></tr>
</table>
- <h4>5.12.1 交互细节</h4>
+ <h4>4.12.1 交互细节</h4>
<figure><img src="design-doc-assets/device-templates.png" alt="设备模版列表"/><figcaption>设备模版列表:默认展开表格视图,支持搜索,点击行进入详情编辑。</figcaption></figure>
<figure><img src="design-doc-assets/device-detail.png" alt="设备模版详情"/><figcaption>设备模版详情:名称 / 说明 / 设备图片、长方形预览区、采集点表格编辑(新增 / 批量删除 / 保存 / 数值范围下拉)。</figcaption></figure>
<p><b>① 字段 / 表格逐列</b>(列表表格,仅展示 + 操作;详情为编辑区):</p>
<li><b>下一步</b>:无(详情为末层);亦可由领域方案详情「选用设备模版 → + 新增设备模版」跳转至此新建。</li>
</ul>
- <h3>5.13 界面截图(UI 总览)</h3>
- <p>以下截图覆盖了当前 StationBuilder 原型的主要页面。截图在 1440×900 视口下使用 Playwright + Chromium 自动抓取,图片存放于 <code>public/design-doc-assets/</code>。各页的字段、按钮与导航流逐项说明见 5.2–5.12 的「交互细节」子章;其中 5.3 / 5.4 / 5.5 另含「AI 智能补全」子章(5.3.2 / 5.4.2 / 5.5.2),展示 AI 流式输出过程。</p>
- <p class="note">可达性说明:站点项目、基本属性、Asset、功能与菜单、生成确认、站点结果(站点项目点击<b>已生成</b>站点进入)、领域方案库、方案详情、页面样式库、设备模版均可正常访问;<b>页面预览(5.8)当前无 UI 入口</b>(代码中无 <code>go("preview")</code> 调用),故未单独截图,其演示外壳见 5.8.1。</p>
+ <h3>4.13 界面截图(UI 总览)</h3>
+ <p>以下截图覆盖了当前 StationBuilder 原型的主要页面。截图在 1440×900 视口下使用 Playwright + Chromium 自动抓取,图片存放于 <code>public/design-doc-assets/</code>。各页的字段、按钮与导航流逐项说明见 4.2–4.12 的「交互细节」子章;其中 4.3 / 4.4 / 4.5 另含「AI 智能补全」子章(4.3.2 / 4.4.2 / 4.5.2),展示 AI 流式输出过程。</p>
+ <p class="note">可达性说明:站点项目、基本属性、Asset、功能与菜单、生成确认、站点结果(站点项目点击<b>已生成</b>站点进入)、领域方案库、方案详情、页面样式库、设备模版均可正常访问;<b>页面预览(4.8)当前无 UI 入口</b>(代码中无 <code>go("preview")</code> 调用),故未单独截图,其演示外壳见 4.8.1。</p>
<figure><img src="design-doc-assets/projects.png" alt="站点项目"/><figcaption>站点项目:全部站点列表、统计概览、筛选与新建入口。</figcaption></figure>
<figure><img src="design-doc-assets/basic.png" alt="站点基本属性"/><figcaption>站点基本属性:站点名称、域名、业务描述、关键词、文件上传等基本信息维护。</figcaption></figure>
<figure><img src="design-doc-assets/device-detail.png" alt="设备模版详情"/><figcaption>设备模版详情:设备基本信息、图片、采集点表格编辑。</figcaption></figure>
<figure><img src="design-doc-assets/style-library.png" alt="页面样式库"/><figcaption>页面样式库:样式缩略图网格与新增/编辑入口。</figcaption></figure>
- <h2>6. 生成流程(端到端)</h2>
+ <h2>5. 生成流程(端到端)</h2>
<div class="flow">
<ol>
<li><b>发起</b>:在「生成确认」点「开始生成」→ 前端 <code>POST /api/db/sites/:id/generate-all</code>(携带各 Cube 的名称与内容)。</li>
<p><b>性能优化(本轮)</b>:在不影响显示效果的前提下做了四项优化 —— ① <b>代码级自动修复</b>:校验失败优先用 <code>fixDashboard</code> 程序化修正,避免为小问题重跑模型;② <b>精简模拟数据</b>:提示词约束时序 ≤16 点、样例 ≤6 行,缩小输出 token;⑤ <b>重试降级</b>:模型调用由最多 3 次降为最多 2 次(首次失败先走代码修复);⑥ <b>并行生成</b>:整站各 Cube 由顺序改为 <code>Promise.all</code> 并发。综合效果:整站生成约 4–9× 提速(75–90% 耗时下降),单次超时页(16 面板)约 60% 提速;已较快的单页提升约 30%。</p>
</div>
- <h2>7. AI 问答(悬浮按钮 + 对话框)</h2>
+ <h2>6. AI 问答(悬浮按钮 + 对话框)</h2>
<table>
<tr><th>元素</th><th>功能</th><th>数据来源</th><th>交互效果</th></tr>
<tr><td>右下角悬浮按钮(AI 图标)</td><td>打开 / 收起 AI 助手</td><td>—</td><td>点击开对话框;<b>可拖动改变位置,双击复位</b>(光标为 pointer,拖动时 grabbing)</td></tr>
<tr><td>模型选择弹层</td><td>切换问答模型</td><td>前端 MODELS</td><td>仅免费模型可选</td></tr>
</table>
- <h2>8. 模态框(Modal)</h2>
+ <h2>7. 模态框(Modal)</h2>
<table>
<tr><th>类型</th><th>功能</th><th>交互效果</th></tr>
<tr><td>提出修改意见(feedback)</td><td>对单页提反馈并重新生成</td><td>弹窗顶部即「修改意见」输入框(自动聚焦),下方展示影响范围(仅当前页 / 模拟数据 / 不受影响项);提交后弹窗内出现黑底白字的 <b>AI 生成工作流</b> 终端,实时滚动 AI/Skill 生成进度;流结束后立即复位「重新生成中…」按钮并自动刷新站点、关闭弹窗,并设有 >10 分钟超时看门狗兜底,避免界面卡在「生成中」</td></tr>
<tr><td>生成提示词(prompt)</td><td>查看/复制组合提示词</td><td>展示发送给模型的完整提示词,可复制到剪贴板</td></tr>
</table>
- <h2>9. 数据与存储</h2>
+ <h2>8. 数据与存储</h2>
<table>
<tr><th>对象</th><th>说明</th><th>接口</th></tr>
<tr><td>sites</td><td>站点主记录(名称/领域/描述/状态/style_id)</td><td>/api/db/sites</td></tr>
<tr><td>SQLite 文件</td><td>持久化库(位于仓库 data/db/StationBuilder.sqlite,纳入 Git)</td><td>db-sidecar 读写</td></tr>
</table>
- <h2>10. 尚未实现功能汇总</h2>
+ <h2>9. 尚未实现功能汇总</h2>
<ul>
<li>真实登录 / 账号体系(当前为演示登录) <span class="todo">尚未实现</span></li>
<li>领域方案库真实数据 CRUD(领域模板 / 设备模板 / 采集点 / 领域页面 / 模板菜单 / 知识文档)已落地;「直接使用 / 加入站点」将从方案一键建站 <span class="todo">尚未实现</span></li>
<li>顶栏汉堡按钮的移动端菜单 <span class="todo">尚未实现</span></li>
</ul>
- <h2>11. 维护与导出说明</h2>
+ <h2>10. 维护与导出说明</h2>
- <h3>11.1 版本变更记录(Changelog)</h3>
+ <h3>10.1 版本变更记录(Changelog)</h3>
<table class="changelog">
<tr><th>版本</th><th>日期</th><th>修改人</th><th>说明</th></tr>
<tr><td>v0.24</td><td>2026-08-20</td><td>wang.yu</td><td>AI 并发调用统一限流:新增全局信号量 <code>AI_CONCURRENCY = 2</code>,包裹 <code>runCodebuddy</code>(db-sidecar.mjs),使站点生成(含批内并行)、各项补全(complete / complete-assets / complete-cubes)、领域方案补全(dt-complete 系列)等全部 AI 功能任意时刻最多 2 个 codebuddy 子进程并发,避免无脑全并行抢占资源导致超时。站点「生成全部」批内并行数 <code>GEN_CONCURRENCY</code> 由硬编码 3 改为复用 <code>AI_CONCURRENCY</code>,对应日志文案同步为「最多 2 个并行调用」。AI 聊天侧(ai-sidecar.mjs /api/chat)本身以 <code>running</code> 布尔量串行(同一时刻仅 1 个),已满足 ≤2。</td></tr>
<tr><td>v0.20</td><td>2026-08-20</td><td>wang.yu</td><td>领域分类管理增强:① 默认分类调整——移除「工业制造 / 工业园区 / 智慧楼宇」,新增「其他」(<code>DEFAULT_DOMAINS</code> 同步更新,重启不再复活被删分类);② 领域方案库新增「管理领域」面板,列出全部领域及其方案数,「其他」标注「默认保留」且不可删除,其余领域提供「删除」按钮,经自定义确认弹窗二次确认后调用 <code>DELETE /api/domains/:id</code>;③ 后端新增 <code>DELETE /api/domains/:id</code>:禁止删除「其他」,删除前将待删领域的 <code>domain_templates</code> 与 <code>device_template_domains</code> 关联迁移至「其他」(避免 <code>ON DELETE CASCADE</code> 误删方案),再删除领域;④ 删除后前端刷新领域列表,并在当前筛选命中该领域时自动清除筛选。</td></tr>
<tr><td>v0.19</td><td>2026-08-20</td><td>wang.yu</td><td>修复领域方案「功能与菜单 → Cube 扩展页面」两处问题:①「生成」按钮改为流式请求(消费 NDJSON 响应体以保持连接),生成期间按钮显示「生成中…」并禁用、底部「AI 生成页面」控制台实时输出进度并据服务端 <code>{status:failed}</code> 事件弹失败提示;此前前端用普通 <code>fetch</code> 不读取响应体,连接被提前关闭导致服务端 AI 生成中断(<code>status='failed'</code>)、Json 未写入。② AI 智能补全(complete-cubes)由「逐条静默 <code>.catch(()=>{})</code> 插入」改为「收集结果后逐个 <code>await</code> 插入、失败显式 <code>notify</code>」,并捕获服务端 <code>{status:failed}</code> 事件弹失败提示,避免补全内容静默丢失、列表无变化。</td></tr>
<tr><td>v0.17</td><td>2026-08-19</td><td>wang.yu</td><td>修复左侧目录(TOC)点击章节后消失:根因为顶部版本说明段落含全角空格不换行,在 flex 布局下把 <code>main#doc</code> 撑到约 2238px 宽(flex item 默认 <code>min-width:auto</code> 不收缩),点击锚点时浏览器水平滚动将 sticky 目录推出左边界。给 <code>main#doc</code> 增加 <code>min-width:0</code> 使其可收缩、内容正常折行,消除水平滚动,目录任意宽度常驻可见。</td></tr>
- <tr><td>v0.18</td><td>2026-08-20</td><td>wang.yu</td><td>领域方案「功能与菜单 → Cube 扩展页面」表格增强:① 新增「来源」列,以徽标区分 上传 / AI生成 / 手动;② 原「生成文件」列更名为「Json文件」,对上传页面提供原始 .json 文件名下载、对 AI 生成页面提供生成的 Cube .json 下载(未生成显示"未生成");③ domain_pages 新增 source 字段,上传/生成时分别写入 source=upload/ai 与 gen_filename;④ 生成确认页状态徽标区分「AI已生成 / 已上传 / 未生成 · 来源」。同步更新 5.10 章节。</td></tr>
- <tr><td>v0.16</td><td>2026-08-19</td><td>wang.yu</td><td>设计方案文档修订:① 左侧目录改为任意宽度常驻可见(移除窄屏 <code>display:none</code>,窄屏下列表转为顶部可滚动常驻栏),点击章节后目录不再消失;② 移除「内部登录」章节(5.1)及 5.13 登录截图,可达性说明去掉登录;③ 新增 AI 智能补全子章(5.3.2 / 5.4.2 / 5.5.2),附 AI 流式输出终端截图(ai-complete-basic/assets/functions.png);④ 修复 PDF 导出图片被分页截断(<code>@media print</code> 增加 <code>page-break-inside:avoid</code> 与图片适配);⑤ 修复 Word 导出无图片(<code>downloadWord</code> 将图片转为 base64 data URI 内嵌)。</td></tr>
+ <tr><td>v0.18</td><td>2026-08-20</td><td>wang.yu</td><td>领域方案「功能与菜单 → Cube 扩展页面」表格增强:① 新增「来源」列,以徽标区分 上传 / AI生成 / 手动;② 原「生成文件」列更名为「Json文件」,对上传页面提供原始 .json 文件名下载、对 AI 生成页面提供生成的 Cube .json 下载(未生成显示"未生成");③ domain_pages 新增 source 字段,上传/生成时分别写入 source=upload/ai 与 gen_filename;④ 生成确认页状态徽标区分「AI已生成 / 已上传 / 未生成 · 来源」。同步更新 4.10 章节。</td></tr>
+ <tr><td>v0.16</td><td>2026-08-19</td><td>wang.yu</td><td>设计方案文档修订:① 左侧目录改为任意宽度常驻可见(移除窄屏 <code>display:none</code>,窄屏下列表转为顶部可滚动常驻栏),点击章节后目录不再消失;② 移除「内部登录」章节(4.1)及 4.13 登录截图,可达性说明去掉登录;③ 新增 AI 智能补全子章(4.3.2 / 4.4.2 / 4.5.2),附 AI 流式输出终端截图(ai-complete-basic/assets/functions.png);④ 修复 PDF 导出图片被分页截断(<code>@media print</code> 增加 <code>page-break-inside:avoid</code> 与图片适配);⑤ 修复 Word 导出无图片(<code>downloadWord</code> 将图片转为 base64 data URI 内嵌)。</td></tr>
<tr><td>v0.15</td><td>2026-08-19</td><td>wang.yu</td><td>领域方案库列表增强:列顺序调整为「所属领域 → 方案名称 → 版本 → 状态 → 创建人 → 设备/页面/文档 → 操作」,版本/状态列收窄、所属领域/方案名称列加宽;新增筛选栏(查找 方案名称/创建人 + 所属领域下拉 + 状态下拉 + 条数)与可排序列头(所属领域/方案名称/状态/创建人,升降切换带 ▲▼),卡片视图复用同结果。</td></tr>
<tr><td>v0.14</td><td>2026-08-19</td><td>wang.yu</td><td>左侧目录(TOC)贴齐浏览器最左侧:<code>.doc-layout</code> 取消 <code>margin:0 auto</code> 自动居中(改为 <code>margin:0; padding-left:12px</code>),宽屏下不再左右留白,目录紧贴视口左缘。</td></tr>
<tr><td>v0.13</td><td>2026-08-18</td><td>wang.yu</td><td>截图显示宽度由 500px 调整为 360px(<code>.figure img</code> 的 <code>max-width</code>),等比例缩放并居中,适配常见浏览宽度。</td></tr>
<tr><td>v0.12</td><td>2026-08-18</td><td>wang.yu</td><td>统一文档内所有截图显示尺寸:修改 <code>.figure img</code> 为 <code>max-width:500px; height:auto</code> 并居中,所有页面截图等比例压缩至 500px 宽,宽度一致。</td></tr>
- <tr><td>v0.11</td><td>2026-08-18</td><td>wang.yu</td><td>补齐每个交互细节小节(5.1.1–5.12.1)的对应截图:新增 result.png(由 generated 站点「北方污水厂」进入结果页截取),将 5.9–5.12 的截图移入对应子节,5.13 截图总览同步加入 result.png。5.8 页面预览因无 UI 入口保留文字说明;5.1–5.7 子节补嵌实图。</td></tr>
- <tr><td>v0.10</td><td>2026-08-18</td><td>wang.yu</td><td>细化设计文档:为每个页面(5.1–5.12)新增「交互细节」子章(5.x.1),统一按「① 字段 / 表格逐列(数据来源 / 是否可编辑 / 编辑类型 / 上线范围)② 按钮与操作(点击效果 / 编辑方式 / 确定·取消·关闭)③ 导航流(入口 / 上一步 / 下一步)」三段式逐项描述,覆盖表格每一列、每个按钮与弹窗的确认/取消/关闭语义及前后页跳转。修正可达性说明:站点结果可由站点项目点击已生成站点进入;页面预览当前无 UI 入口。</td></tr>
- <tr><td>v0.9</td><td>2026-08-18</td><td>wang.yu</td><td>使用 Chromium + Playwright 自动抓取全站可访问页面截图,统一嵌入设计文档:新增 5.13「界面截图(UI 总览)」,覆盖登录页、站点项目、站点基本属性、Asset 资产、功能与菜单、生成确认、领域方案库、领域方案详情、设备模版列表/详情、页面样式库(共 11 张)。替换 5.9 / 5.10 中两张 placeholder.svg 为真实截图;在 5.11 / 5.12 补充真实界面图。截图文件置于 public/design-doc-assets/。</td></tr>
- <tr><td>v0.8</td><td>2026-08-18</td><td>wang.yu</td><td>设备模版改为「默认展开列表、点击进入详情」:列表为紧凑表格(缩略图 / 名称 / 说明 / 采集点数 / 操作),支持按名称或说明实时搜索;点击行进入该设备模版的详情编辑区(名称 / 说明 / 图片 / 采集点),可「← 返回列表」;「+ 新增设备模版」进入新建表单,创建后定位到新建设备的详情。面向成百上千设备模版的可扩展性。同步更新 4.2 导航表、5.12 章节。</td></tr>
- <tr><td>v0.7</td><td>2026-08-18</td><td>wang.yu</td><td>设备模版页交互优化:设备图片改为长方形预览区(点击上传,不再溢出);移除设备侧「所属领域」多选(改为由领域/方案侧选用设备);采集点改为整宽表格编辑,支持新增一行、勾选批量删除、保存,数值范围改为下拉选择器(预设 + 自定义);修复打开卡片时 collection_points 未加载导致的 runtime error,列表接口补充返回 collection_points。后端新增 GET /api/db/device-templates/:id/image 图片服务。新增 5.12 章节。</td></tr>
- <tr><td>v0.6</td><td>2026-08-18</td><td>wang.yu</td><td>领域方案库重构为多菜单:列表页支持「列表 / 卡片」视图切换与按领域分类筛选;新增独立的「设备模版」页(前端 DeviceTemplates,独立维护设备模版与采集点);方案详情的设备面板改为「选用设备模版」(DeviceTemplatePicker,勾选即重写 device_template_domain_templates 关联,未找到可跳转新增);领域分类改为由 GET /api/domains 动态渲染的二级菜单。后端 domain-templates 更新支持 device_template_ids 重关联。同步更新 4.2 / 5.9 / 5.10 章节。</td></tr>
+ <tr><td>v0.11</td><td>2026-08-18</td><td>wang.yu</td><td>补齐每个交互细节小节(4.1.1–4.12.1)的对应截图:新增 result.png(由 generated 站点「北方污水厂」进入结果页截取),将 4.9–4.12 的截图移入对应子节,4.13 截图总览同步加入 result.png。4.8 页面预览因无 UI 入口保留文字说明;4.1–4.7 子节补嵌实图。</td></tr>
+ <tr><td>v0.10</td><td>2026-08-18</td><td>wang.yu</td><td>细化设计文档:为每个页面(4.1–4.12)新增「交互细节」子章(4.x.1),统一按「① 字段 / 表格逐列(数据来源 / 是否可编辑 / 编辑类型 / 上线范围)② 按钮与操作(点击效果 / 编辑方式 / 确定·取消·关闭)③ 导航流(入口 / 上一步 / 下一步)」三段式逐项描述,覆盖表格每一列、每个按钮与弹窗的确认/取消/关闭语义及前后页跳转。修正可达性说明:站点结果可由站点项目点击已生成站点进入;页面预览当前无 UI 入口。</td></tr>
+ <tr><td>v0.9</td><td>2026-08-18</td><td>wang.yu</td><td>使用 Chromium + Playwright 自动抓取全站可访问页面截图,统一嵌入设计文档:新增 4.13「界面截图(UI 总览)」,覆盖登录页、站点项目、站点基本属性、Asset 资产、功能与菜单、生成确认、领域方案库、领域方案详情、设备模版列表/详情、页面样式库(共 11 张)。替换 4.9 / 4.10 中两张 placeholder.svg 为真实截图;在 4.11 / 4.12 补充真实界面图。截图文件置于 public/design-doc-assets/。</td></tr>
+ <tr><td>v0.8</td><td>2026-08-18</td><td>wang.yu</td><td>设备模版改为「默认展开列表、点击进入详情」:列表为紧凑表格(缩略图 / 名称 / 说明 / 采集点数 / 操作),支持按名称或说明实时搜索;点击行进入该设备模版的详情编辑区(名称 / 说明 / 图片 / 采集点),可「← 返回列表」;「+ 新增设备模版」进入新建表单,创建后定位到新建设备的详情。面向成百上千设备模版的可扩展性。同步更新 3.2 导航表、4.12 章节。</td></tr>
+ <tr><td>v0.7</td><td>2026-08-18</td><td>wang.yu</td><td>设备模版页交互优化:设备图片改为长方形预览区(点击上传,不再溢出);移除设备侧「所属领域」多选(改为由领域/方案侧选用设备);采集点改为整宽表格编辑,支持新增一行、勾选批量删除、保存,数值范围改为下拉选择器(预设 + 自定义);修复打开卡片时 collection_points 未加载导致的 runtime error,列表接口补充返回 collection_points。后端新增 GET /api/db/device-templates/:id/image 图片服务。新增 4.12 章节。</td></tr>
+ <tr><td>v0.6</td><td>2026-08-18</td><td>wang.yu</td><td>领域方案库重构为多菜单:列表页支持「列表 / 卡片」视图切换与按领域分类筛选;新增独立的「设备模版」页(前端 DeviceTemplates,独立维护设备模版与采集点);方案详情的设备面板改为「选用设备模版」(DeviceTemplatePicker,勾选即重写 device_template_domain_templates 关联,未找到可跳转新增);领域分类改为由 GET /api/domains 动态渲染的二级菜单。后端 domain-templates 更新支持 device_template_ids 重关联。同步更新 3.2 / 4.9 / 4.10 章节。</td></tr>
<tr><td>v0.5</td><td>2026-08-18</td><td>wang.yu</td><td>设计方案支持页面截图:新增 figure / 图注 样式(自动编号),撰写方式参考 MachineCube 手册(小节标题 + 说明 +「下图」引用 + 配图 + 图注);图片置于 public/design-doc-assets/。新增「版本变更记录」,每次修改升级小版本号并登记修改人 / 日期。</td></tr>
<tr><td>v0.4</td><td>2026-08-18</td><td>wang.yu</td><td>领域方案库升级为真实数据库驱动 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 控制 列表·新增·详情 切换。</td></tr>
<tr><td>v0.3</td><td>2026-08-18</td><td>wang.yu</td><td>基线版本:整站生成超时修复(提示词精简 + 最多 2 次重试 + 超时 300s→480s)、AI 智能补全(基本属性 / 资产 / 功能与菜单三页)、功能与菜单重构、导入 Cube 后空白修复(flatten custom + normalizePanelCustom)、下载 Markdown 兼容 Azure DevOps Wiki。运维流程 / 领域分类筛选 / 从方案一键建站等仍标注「尚未实现」。</td></tr>