]>
acesimba.cloud Git - StationBuilder.git/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
root [Fri, 21 Aug 2026 09:13:29 +0000 (17:13 +0800)]
v0.32 领域方案「方案打包」步骤重构:方案概览多标签总览 + 扩展页面预览整页修复 + 打包下载示意弹窗
root [Fri, 21 Aug 2026 05:54:03 +0000 (13:54 +0800)]
v0.31: UI 风格对齐 KB Insight(AntD 字体栈 + 56px 渐变顶线 Header + 菜单选中/hover 浅蓝)
root [Fri, 21 Aug 2026 05:04:41 +0000 (13:04 +0800)]
v0.30: 修复领域方案页面预览空白(dashboard-renderer 按容器隔离 echarts 实例)+ 预览卡片点击放大 + 设计文档同步
root [Fri, 21 Aug 2026 04:05:27 +0000 (12:05 +0800)]
v0.29: 领域扩展页面改名置首 + AI生成醒目按钮 + 统一生成 + 图片缩略图提速
- 站点/领域两处 Cube 扩展页面页签更名为「领域扩展页面」并置于 MU 标准页面之前(默认进入)
- 生成按钮文案升级为 AI生成/AI生成中,新增醒目渐变样式 .btn-ai
- 领域扩展页面新增「AI 统一生成全部(N)」按钮,一键排队生成全部未生成页面,各页按钮同步显示 AI生成中
- 后端图片接口支持 ?w= 参数,sharp 生成落盘缓存 WebP 缩略图(约 150x 提速)
- design-doc.html 同步至 v0.29
root [Fri, 21 Aug 2026 03:24:23 +0000 (11:24 +0800)]
feat: 设备模板采集点 AI 智能补全(领域生成自动补全 + 单独打开补全)
- 后端新增 buildCompleteCollectionPointsPrompt / extractCollectionPoints / generateDeviceTemplatePoints:以设备名称/领域/说明推导 6~12 个合适采集点并批量写库(按 name 去重追加,不覆盖用户已录入采集点;数值范围优先取预设集合)
- 领域方案「AI 资产补全」自动创建设备模板后,立即为该新模板补全采集点(created:true 触发;单个失败不影响整体;推导过程回流到资产补全控制台)
- 设备模板详情新增「AI 智能补全 · 采集点」面板:开始补全(POST /api/db/device-templates/:id/complete-collection-points,流式)+ 查看提示词(GET ...-prompt),补全后重新拉取详情刷新表格
- 前端透传 onViewCpPrompt 复用 App 级提示词弹窗;资产补全超时守卫 6→10 分钟
- 同步更新 design-doc.html(v0.28,新增 §4.12.2)
root [Fri, 21 Aug 2026 02:15:23 +0000 (10:15 +0800)]
feat: 领域编辑迁移至左侧导航栏并修复单行显示
- 移除「领域方案库」首页「管理领域」面板,方案列表上移
- 领域增删入口迁至左侧「领域分类」分组:行尾 × 删除(非「其他」领域,二次确认)、行末 + 新增领域(行内输入,≤6 字)
- 修复 addDomain 仅更新 domains 未刷新 domainOptions 的问题(改由 reloadDomains 统一刷新)
- 修复领域名按钮与 ×/+ 共用 flex:1 导致 × 等宽拉伸、过滤按钮被压窄、4 字以内领域名换行的布局问题(flex:1 仅作用于过滤按钮,×/✓ 固定 30px,领域名 white-space:nowrap + 省略号)
- 同步更新 design-doc.html(v0.27)
root [Fri, 21 Aug 2026 01:00:52 +0000 (09:00 +0800)]
fix: 设计方案导出修复(PDF 真实文字/页脚页码/目录;Word 页脚页码/静态目录/截图300px)
- PDF 改 window.print 原生打印,真实文字无乱码;打印时注入静态目录(h2/h3/h4),@page 页脚页码
- Word footer 补 id + 规范 PAGE/NUMPAGES 域标记,每页底部页码;目录改可见静态目录
- 截图限宽 300px 等比例(修复 .figure 类选择器未命中 <figure> 元素导致 PDF 图片溢出)
- 图后插 <br> 使图注换行;设计文档 v0.26 + 顶部说明同步
root [Thu, 20 Aug 2026 23:16:19 +0000 (07:16 +0800)]
设计文档章节重编号:删除第3章后,原第4章起整体前移一位(4→3…11→10),含 h2/h3/h4 标题、正文交叉引用与变更日志引用
root [Thu, 20 Aug 2026 22:59:26 +0000 (06:59 +0800)]
领域方案已完成态步进导航:绿色对号 + 自由跳转
root [Thu, 20 Aug 2026 12:17:34 +0000 (20:17 +0800)]
AI 各项功能并发调用数统一限制为 2
- db-sidecar.mjs:新增全局信号量 AI_CONCURRENCY=2 包裹 runCodebuddy,
使站点生成(含批内并行)、各项补全、领域方案补全全部 AI 功能任意时刻最多
2 个 codebuddy 子进程并发;release 在 close/error/超时 三处统一释放并加 released
守卫与同步 spawn 失败保护,避免死锁。
- 站点「生成全部」批内并行数 GEN_CONCURRENCY 由硬编码 3 改为复用 AI_CONCURRENCY,
对应日志文案同步为「最多 2 个并行调用」。
- ai-sidecar.mjs(/api/chat) 本身以 running 布尔量串行(≤1),已满足 ≤2。
- design-doc.html 升 v0.24 并登记变更。
- 注:未提交 data/db/StationBuilder.sqlite(无 schema 变更,且工作库含累积业务数据)。
root [Thu, 20 Aug 2026 11:23:37 +0000 (19:23 +0800)]
领域知识上传支持 Word/Excel/PDF/图片:提取正文注入提示词
- 后端 db-sidecar.mjs:新增 async extractDocText 替换 isTextMime/readKnowledgeFile,
PDF(pdf-parse)/Word(.docx,mammoth)/Excel(.xls/.xlsx,SheetJS) 提取正文并 16k 截断注入,
图片及老 .doc 返回空串仅登记为参考来源;buildKnowledgePrompt 改为 await extractDocText。
- 前端 KnowledgeStep:上传 accept 放开至 .pdf/.doc/.docx/.xls/.xlsx/image/* 等,
提示文案补充「Word/Excel/PDF 提取正文,图片仅登记」,文件类徽标「文档」→「文件」。
- 新增依赖 pdf-parse/mammoth/xlsx(纯 JS,无原生编译)。
- design-doc.html 升 v0.23 并登记变更。
root [Thu, 20 Aug 2026 10:26:48 +0000 (18:26 +0800)]
feat(领域方案库): 领域知识提升为 Step2 并作为 AI 补全优先参考
- 方案向导步骤重排:领域知识移至「方案基本属性」之后(Step2),资产/功能菜单/运维流程/生成保存/专家确认整体后移
- 新增 KnowledgeStep:上传知识文档(多文件 base64 落库)、配置参考 URL 站点,列表可下载/删除,随方案持久化
- 新增 buildKnowledgePrompt:读取 knowledge_docs,文本文档直接注入正文、URL 站点服务端抓取正文注入(8s 超时,失败降级为参考链接),注入 buildCompletePrompt/buildCompleteAssetsPrompt/buildCompleteCubesPrompt(三构建器改 async,领域级补全 ctx 加 id;站点级无 id 不注入)
- 生成保存(DomainGenerateReview)展示真实领域知识信息并提供「返回领域知识」入口
- 设计文档更新至 v0.22
运维流程 AI 补全本期仍占位(见设计文档)
root [Thu, 20 Aug 2026 09:29:34 +0000 (17:29 +0800)]
数据:样式选择器测试产生的库变动(临时方案增删、style_id 写入/清除)
root [Thu, 20 Aug 2026 09:27:44 +0000 (17:27 +0800)]
领域方案库 Cube 页面支持选择页面样式库样式后生成(方案级,镜像站点机制)
- 后端 domain_templates 新增 style_id 列(ensureColumn 增量加列);handleDomainTemplateUpdate 支持写入/显式置空;hydrateDomainTemplateCtx 返回真实 style_id
- 前端领域方案详情「功能与菜单 → Cube 扩展页面」顶部新增「领域方案页面样式」选择器(复用 .style-picker 与样式库缩略图),选中即持久化,生成/AI 修改经共享 buildStylePrompt 自动注入所选样式主题
- 设计文档升 v0.21,补充 changelog 与交互说明
root [Thu, 20 Aug 2026 08:57:19 +0000 (16:57 +0800)]
数据:领域分类调整(删除工业制造/工业园区/智慧楼宇,新增其他)
root [Thu, 20 Aug 2026 08:54:55 +0000 (16:54 +0800)]
领域分类管理:删除工业制造/工业园区/智慧楼宇,新增其他,支持删除领域并迁移方案
- DEFAULT_DOMAINS 移除 工业制造/工业园区/智慧楼宇,新增 其他(重启不再复活)
- 后端新增 DELETE /api/domains/:id:禁止删除其他,删除前将 domain_templates 与 device_template_domains 迁移至其他,再删除领域
- 前端领域方案库新增「管理领域」面板,其他标注默认保留不可删,其余提供删除并自动刷新列表/清除筛选
- 更新设计文档 v0.20
wang.yu [Thu, 20 Aug 2026 04:13:20 +0000 (12:13 +0800)]
fix(domain): Cube 生成按钮流式化 + AI补全写入列表防静默丢失
- generatePage 改为流式消费 NDJSON 响应体(保持连接),生成期间按钮显示「生成中…」并禁用、底部新增「AI 生成页面」控制台实时输出进度,并据服务端 {status:failed} 弹失败提示;修复此前普通 fetch 不读响应体导致连接提前关闭、服务端 AI 生成中断(status=failed)、Json 未写入的问题。
- runCubesComplete 由逐条静默 .catch 插入改为收集结果后逐个 await 插入、失败显式 notify,并捕获服务端 {status:failed} 事件弹失败提示,避免补全内容静默丢失。
- design-doc 同步 v0.19 变更记录。
wang.yu [Thu, 20 Aug 2026 03:06:02 +0000 (11:06 +0800)]
领域方案 Cube 扩展页面:来源徽标 + Json文件 下载
- 表格新增「来源」列,以徽标区分 上传 / AI生成 / 手动
- 原「生成文件」列更名为「Json文件」:上传页下载原始 .json 文件,
AI 生成页下载生成的 Cube .json,未生成显示'未生成'
- domain_pages 新增 source 字段;上传/生成时分别写入 source=upload/ai
与 gen_filename;生成确认页状态徽标区分 AI已生成/已上传/未生成·来源
- 同步更新 design-doc.html(5.10 章节 + v0.18 变更记录)
wang.yu [Thu, 20 Aug 2026 02:33:54 +0000 (10:33 +0800)]
修复:领域方案 AI 资产补全未写入表格
- handleDomainCompleteAssets 在 emit 结果前,将解析后的资产按
device_template_id 去重、sort_order 顺延追加写入 domain_template_assets
- 此前仅 emit result 未落库,前端 load() 重载后覆盖本地新增行,
导致 AI 补全的设备建议不显示在资产表格中
wang.yu [Wed, 19 Aug 2026 22:45:58 +0000 (06:45 +0800)]
领域方案库:7 步向导步骤条改为单行显示
- DomainSteps 容器增加 .domain-steps 专属类
- 新增 .domain-steps{grid-template-columns:repeat(7,1fr)} 覆盖原 5 列网格,
解决 7 个步骤换行到第二行的问题
wang.yu [Wed, 19 Aug 2026 09:53:30 +0000 (17:53 +0800)]
领域方案库重构为 7 步向导(仿 Station Builder)
- 方案基本属性:补充描述输入 + 右侧填写建议 + AI 智能补全
- 资产设置:设备模板库下拉(禁止自由输入/+新增)、4 行可编辑资产表、
资产层级预览、AI 补全(自动建缺失设备模板)、新增设备模板弹窗
- 功能与菜单:MU(默认8项勾选)/Cube(上传Json+AI生成+实时预览+修改意见
精修)/菜单 三 Tab
- 运维流程/领域知识/专家确认:待开发占位(待开发徽标)
- 生成保存:资产+菜单+页面总览预览 + 专家确认方案
- 后端 db-sidecar:domain-templates 补全/资产/Cube/页面生成与精修接口,
handleDomainTemplateDetail/Update 持久化补充描述+资产+MU
wang.yu [Wed, 19 Aug 2026 08:43:41 +0000 (16:43 +0800)]
设计方案导出改造:Word(微软雅黑/黑边/页脚页码/目录域/240px) + PDF(html2pdf带页码)
wang.yu [Wed, 19 Aug 2026 08:07:12 +0000 (16:07 +0800)]
修复 Cube 编辑器表格操作按钮溢出导致右侧面板浮起的问题
wang.yu [Wed, 19 Aug 2026 07:14:32 +0000 (15:14 +0800)]
提示框改为页面居中:用自定义弹窗替换原生 confirm/prompt
- 新增 useConfirm/usePrompt hook,返回 promise 化 confirm/prompt 及居中弹窗节点
- 替换全部原生 confirm(9处) 与 prompt(2处) 调用,组件根部渲染对应弹窗
- globals.css 新增 .dlg-backdrop 全屏遮罩 + .dlg-box 居中对话框(含输入框/Enter确认/Esc取消)
- 文件上传仍用原生文件控件(非提示框,无法CSS居中)
wang.yu [Wed, 19 Aug 2026 06:21:34 +0000 (14:21 +0800)]
领域方案库:修复创建失败与设备模版选择抖动
- CreateTemplate: domain_id 在 domains 异步加载后自动默认到首个领域,
并加兜底校验,避免提交 domain_id=0 被后端拒(创建失败/列表不显示)
- DomainDetail.load 增加 silent 模式;DeviceTemplatePicker 勾选后静默刷新,
不再触发全屏「加载中」导致的页面抖动
wang.yu [Wed, 19 Aug 2026 03:44:39 +0000 (11:44 +0800)]
设备模版:图片框改正方形 + 修复创建无响应
- app/globals.css: .device-img-field 固定 160x160 正方形,img 充满方框
- db-sidecar.mjs: 路由级 catch 在响应未结束时回 500,避免 async 处理器
首个 await 后抛错导致客户端永久挂起(表现为点创建没反应)
wang.yu [Wed, 19 Aug 2026 02:25:24 +0000 (10:25 +0800)]
docs: 修复设计文档左侧目录点击章节后消失(flex min-width:0 消除水平滚动)
- 根因:顶部版本说明段落含全角空格不换行,flex item 默认 min-width:auto 不收缩,
将 main#doc 撑到约 2238px 宽;点击锚点时浏览器水平滚动把 sticky 目录推出左边界。
- 修复:main#doc 增加 min-width:0,内容正常折行、消除水平滚动。
- 设计文档升 v0.17 并登记 changelog。
wang.yu [Wed, 19 Aug 2026 01:41:42 +0000 (09:41 +0800)]
docs: 设计方案 v0.16 修订(目录常驻/删登录章/AI补全子章/PDF-Word导出修复)
- 左侧目录任意宽度常驻可见(移除窄屏 display:none,窄屏转顶部可滚动常驻栏)
- 移除「内部登录」章节(5.1)及 5.13 登录截图,可达性说明去登录
- 新增 AI 智能补全子章 5.3.2/5.4.2/5.5.2,附流式输出终端截图(ai-complete-*.png)
- 修复 PDF 导出图片被分页截断(@media print 增加 page-break-inside:avoid 与图片适配)
- 修复 Word 导出无图片(downloadWord 将图片转 base64 data URI 内嵌)
- 删除孤立资源 login.png
wang.yu [Wed, 19 Aug 2026 00:53:42 +0000 (08:53 +0800)]
feat: 领域方案库列表增强排序与筛选(列重排+筛选栏)
- 列顺序改为 所属领域→方案名称→版本→状态→创建人→设备/页面/文档→操作
- 版本/状态列收窄, 所属领域/方案名称列加宽
- 新增筛选栏: 查找(方案名称/创建人) + 所属领域下拉 + 状态下拉 + 条数
- 四列(所属领域/方案名称/状态/创建人)可点击排序, 升/降切换带 ▲▼
- 同步设计文档至 v0.15
wang.yu [Wed, 19 Aug 2026 00:43:05 +0000 (08:43 +0800)]
docs: 设计文档细化交互细节+每页配图+目录贴左(v0.10~v0.14)
- 5.1~5.12 每页新增「交互细节」小节(字段/按钮/导航流),并嵌入对应截图
- 截图宽度统一 360px 等比例缩放
- 左侧目录取消自动居中,贴齐视口最左缘
- 新增站点生成结果截图 result.png
wang.yu [Tue, 18 Aug 2026 23:09:21 +0000 (07:09 +0800)]
feat: 设备模版列表→详情 + 全站界面截图嵌入设计文档
- 设备模版改为默认展开列表、点击进入详情,支持按名称/说明搜索(v0.8)
- 新增列表视图 CSS(.device-tpl-list / .tpl-thumb / .list-toolbar 等)
- 使用 Chromium + Playwright 自动抓取 11 张页面截图,嵌入设计文档
5.13「界面截图(UI 总览)」,并替换 5.9/5.10 占位图、补充 5.11/5.12 实图
- 设计文档升至 v0.9,新增 changelog 条目
wang.yu [Tue, 18 Aug 2026 13:26:59 +0000 (21:26 +0800)]
设备模版页交互优化与修复
- 设备图片改为长方形预览区(点击上传,object-fit:cover 不再溢出),后端新增 GET /api/db/device-templates/:id/image 图片服务
- 移除设备侧「所属领域」多选(改为由领域/方案侧选用设备)
- 采集点改为整宽表格编辑:新增一行、勾选批量删除、保存;数值范围改为下拉选择器(预设 + 自定义)
- 修复打开卡片时 collection_points 未加载导致的 runtime error,列表接口补充返回 collection_points
- 设计文档升级至 v0.7,新增 5.12 设备模版章节
wang.yu [Tue, 18 Aug 2026 13:05:57 +0000 (21:05 +0800)]
领域方案库重构为多菜单:列表/卡片切换、设备模版独立页、选用设备模版关联
- 导航拆分:领域方案库模块下新增「领域方案」「设备模版」;领域分类改为 GET /api/domains 动态二级菜单,点击按 domainFilter 筛选方案
- 领域方案列表支持列表/卡片视图切换
- 新增独立「设备模版」页(DeviceTemplates),独立维护设备模版与采集点、所属领域多选
- 方案详情设备面板改为「选用设备模版」勾选器,保存即重写 device_template_domain_templates 关联
- 后端 domain-templates 更新支持 device_template_ids 重关联
- 设计文档升级至 v0.6,更新 4.2/5.9/5.10 与 changelog
wang.yu [Tue, 18 Aug 2026 11:46:11 +0000 (19:46 +0800)]
fix: 领域方案新增表单修复(标签/版本/创建人/输入框样式/创建崩溃)
- 新增方案表单「模板名称」改为「方案名称」
- 模板版本默认值由 V1.0 改为 1.0
- 创建人默认带入 header 登录邮箱 wang.yu@advantech.com
- 全局 .form-grid>label 输入框/下拉/文本域补齐边框与 focus 样式
- 修复创建成功后跳转详情时因 m 状态为 null 导致的读取 domain_id 崩溃
- 不提交 DB(本轮仅 UI/样式修复,无 schema 变更)
wang.yu [Tue, 18 Aug 2026 09:52:08 +0000 (17:52 +0800)]
feat: 领域方案库升级为真实数据库驱动的 CRUD
- Phase 0:移除领域方案库页 Search 行(含「同步方案库」占位按钮)
- db-sidecar 新增 schema:domain_templates / device_templates + device_collection_points /
device_template_domains / device_template_domain_templates(两处多对多)/ domain_pages /
template_menu_items / knowledge_docs(doc_type 区分超链与文件,文件落盘 data/db/uploads/)/
ops_flows(仅占位)
- 全套 CRUD 接口 /api/domain-templates(详情聚合设备·采集点·页面·菜单·文档·流程)、
/api/device-templates(图片 base64 上传)、/api/collection-points、/api/domain-pages、
/api/template-menu-items、/api/knowledge-docs(含 /file 下载)、/api/ops-flows
- 前端 DomainLibrary + DomainDetail 内嵌编辑器(模板信息 / 设备与采集点 / 领域页面 Cube JSON /
模板菜单 / 知识文档 / 运维流程占位),openDomainTemplateId 控制 列表·新增·详情 切换
- 修复:sidecar 路由前缀由 /api/db 改为 /api(匹配代理层改写);设备 domain_ids 由 JSON 字符串
解析为数组;DomainDetail 修正 hooks 顺序
- 更新设计文档 5.9/5.10、尚未实现汇总、更新记录
- 提交变更 schema 的 DB 文件
wang.yu [Tue, 18 Aug 2026 06:12:06 +0000 (14:12 +0800)]
fix: 修复整站生成大量超时失败(北方污水厂)
- DASHBOARD_SPEC 撤销「逐项读取模板文件」指令,改为内联各面板紧凑 custom 骨架,消除文件工具开销,单页耗时回到 300s 内
- extractJson 增强容错:原生解析失败再去除注释/尾逗号重试
- runCodebuddy 超时阈值 300s -> 480s
- generateCubeJson 将「调用超时/JSON 解析失败/结构校验失败」统一纳入最多 2 次重试,把确切错误(含问题位置原文)回传模型自我修正
- 提示词加约束:不得添加 query/linkage/triggerByTimer/minW 等规范外字段
- 移除临时调试写盘
- 同步更新 public/design-doc.html 更新记录
验证:北方污水厂 7 个 Cube 全部重新生成成功,custom 结构正确(LineChart/Bar 扁平、其余 dataConfig+chartConfig),导入无空白。
wang.yu [Tue, 18 Aug 2026 04:19:40 +0000 (12:19 +0800)]
修复生成看板导入Cube后空白:DASHBOARD_SPEC强制照模板custom结构 + fixDashboard归一化兜底
wang.yu [Tue, 18 Aug 2026 03:38:33 +0000 (11:38 +0800)]
整站生成限制最多3个并发,避免资源争抢导致超时;失败仅提示手动重试
wang.yu [Tue, 18 Aug 2026 03:29:55 +0000 (11:29 +0800)]
功能与菜单页改造:MU树状全选、Cube AI补全、菜单只读预览,并精简MU标准页为9项
wang.yu [Tue, 18 Aug 2026 02:41:30 +0000 (10:41 +0800)]
feat: Asset 资产设置页新增「AI 智能补全」
- 后端 db-sidecar 新增 POST /api/sites/:id/complete-assets(流式 NDJSON:思考过程 +
以【资产配置】标记提取 JSON 设备清单 [{type,count,rule}])与 GET .../complete-assets-prompt
- 前端 Assets 页改为两栏:右栏与基本属性同款「填写建议 + AI 智能补全」(开始补全 +
查看提示词 + 流式控制台);结果追加到用户已填项下方(不改动已有项),资产层级预览随之重算
- 设计文档 §5.4 与 11.1 同步更新
wang.yu [Tue, 18 Aug 2026 01:58:53 +0000 (09:58 +0800)]
feat: 新增「AI 智能补全」功能(站点基本属性)
- 后端 db-sidecar 新增 POST /api/sites/:id/complete(流式 NDJSON 输出思考过程 +
以【补充描述】标记提取最终补充描述)与 GET .../complete-prompt(查看提示词)
- 前端 Basic 页「填写建议」下方新增「AI 智能补全」面板:开始补全按钮 + 查看提示词
(复用提示词弹窗,新增 completePrompt 类型)+ 与「AI 生成工作流」同款流式控制台;
结果写入「补充要求」并走现有 autosave 持久化
- 设计文档 §5.3 与 11.1 同步更新
wang.yu [Tue, 18 Aug 2026 01:28:51 +0000 (09:28 +0800)]
fix: Markdown 导出时转义表格单元格 HTML 尖括号,兼容 Azure DevOps Wiki
表格单元格中的 <select> 在导出时被解码为原始 <select>,Azure Wiki 会把它
当成未闭合的 HTML 标签并吞掉后续 Markdown。现在在 table2md 中将 < 和 >
转义为 < / >,避免解析器进入 HTML 状态。
wang.yu [Tue, 18 Aug 2026 01:23:30 +0000 (09:23 +0800)]
fix: Markdown 导出改为缩进式代码块,兼容 Azure DevOps Wiki
代码块不再用 ``` 围栏(围栏闭合异常会吞掉后续章节),
改为 4 空格缩进式代码块,解决导入 Azure Wiki 后仅显示到 §4.2 的问题。
wang.yu [Tue, 18 Aug 2026 01:14:34 +0000 (09:14 +0800)]
docs: 删除设计方案中「3. 技术架构与运行环境」章节
wang.yu [Tue, 18 Aug 2026 01:08:18 +0000 (09:08 +0800)]
fix: 修复 AI 悬浮按钮拖动时常失效的问题
图标改为不可原生拖拽(draggable=false)并让事件直接落在按钮上(pointer-events:none),
避免浏览器图片拖拽劫持 Pointer 拖拽手势;按下拖动时移除 1px 移位。
wang.yu [Mon, 17 Aug 2026 23:47:50 +0000 (07:47 +0800)]
fix: 反馈重新生成结束后按钮卡在「重新生成中…」
- refineCube 流结束后立即复位 refining 并关闭弹窗,站点刷新改为后台异步(不再阻塞按钮复位)
- 新增 >10 分钟看门狗:流异常挂起时强制复位并关闭窗口,避免界面卡死
- 同步更新 design-doc 第 8 节反馈说明
wang.yu [Mon, 17 Aug 2026 23:00:21 +0000 (07:00 +0800)]
UI: 反馈弹窗「AI 生成工作流」标题去掉「(实时 · 只读)」后缀
wang.yu [Mon, 17 Aug 2026 14:46:29 +0000 (22:46 +0800)]
UI: 资产层级预览按规则补全设备实例编号
- formatInstances 在命名规则为纯前缀时自动补 -01/-02… 序号(beng- -> beng-01、guolu -> guolu-01…10 等)
- 修正 # 占位 bug:CH-## 现在正确生成 CH-01/02/03(原先 CH-0101)
- 同步更新 design-doc 第 5.4 节说明
wang.yu [Mon, 17 Aug 2026 14:20:42 +0000 (22:20 +0800)]
UI: 页面样式库缩略图加高,整页可见(3 列 + 16:9 自适应)
- 样式卡片网格由 4 列改为 3 列,单卡更宽
- 缩略图去掉固定 150px 高度,改为 aspect-ratio:16/9 + min-height:200px,配合 object-fit:contain 展示完整页面,不再截断底部
- 灯箱大图 max-height 72vh -> 88vh
- 同步更新 design-doc 第 5.11 节说明
wang.yu [Mon, 17 Aug 2026 14:08:32 +0000 (22:08 +0800)]
docs: 设计方案描述脱敏,移除站点隐私与具体 AI 服务信息
- 移除 IP/端口(:37823/:37822 等)、DNS、域名等站点隐私信息,改为组件名
- 将 codebuddy CLI / Wordbuddy Hy3 / dashboard-json-generator Skill 等具体 AI 服务描述
改写为中性的「AI 生成服务」「可视化生成 Skill」「后端固定配置模型」等表述
- 保留通用技术栈(Next.js/Vite/Cloudflare Worker)与接口路由,作为文档契约
wang.yu [Mon, 17 Aug 2026 14:02:04 +0000 (22:02 +0800)]
perf: 生成流程四项优化(代码级修复/精简数据/重试降级/并行生成)
- ① 新增 fixDashboard + repairAndValidate:校验失败优先程序化修复(越界/重叠/Title定位/KPI与Radar字段/缺失id/gridPos),免重跑模型
- ⑤ 生成与微调重试由最多 3 次模型调用降为 2 次(首次失败先走代码修复),修复过程推送 AI 生成工作流日志
- ② DASHBOARD_SPEC 与站点上下文约束模拟数据规模(时序<=16点、样例<=6行)以缩减输出 token
- ⑥ handleGenerateAll 由顺序循环改为 Promise.all 并发生成各 Cube
- 同步更新 public/design-doc.html 第6节与性能说明
wang.yu [Mon, 17 Aug 2026 10:10:17 +0000 (18:10 +0800)]
fix: 失败页面也显示「✎ 修改意见」入口(有生成文件即显示)
- 结果页卡片「✎ 修改意见」按钮由 cube.status==="generated" 改为 cube.gen_file_id,使生成失败但留有 JSON 的页面也能提修改意见/重生成
- 设计文档 5.7 同步说明该按钮在有生成文件(含失败页面)时即显示
wang.yu [Mon, 17 Aug 2026 09:39:45 +0000 (17:39 +0800)]
fix: 反馈弹窗将「修改意见」输入框置顶并自动聚焦,确保可见可填写
- 反馈弹窗(feedback)将修改意见 textarea 移至弹窗顶部、紧跟影响范围标题,并加 autoFocus,避免被折叠在弹窗底部
- 提示文案改为引导在上方输入框填写
- 设计文档 8 反馈模态补充说明输入框置顶与自动聚焦
wang.yu [Mon, 17 Aug 2026 09:24:59 +0000 (17:24 +0800)]
fix: 修复反馈弹窗提交按钮被裁切;结果页多页改为纵向单列
- modal-body 增加 flex:1/min-height:0,内容超长时内部滚动,页脚「提交并重新生成」按钮始终可见
- result-pages 由三列网格改为单列纵向排列(上下结构),卡片占满整行,四个操作按钮并排可见
- 设计文档 5.7 补充结果卡片纵向单列说明
wang.yu [Mon, 17 Aug 2026 09:14:50 +0000 (17:14 +0800)]
feat: 修改意见重新生成时展示「AI 生成工作流」实时进度
- db-sidecar: handleRefineCube 改为 NDJSON 流式返回,refineCubeJson 透传 onEvent,发射 log 进度与 task 状态
- 前端 refineCube 改为读取流并累积 refineLog;反馈弹窗「修改意见」下方新增黑底白字只读终端,自动滚动
- 设计文档同步更新(5.7 修改意见 / 8 反馈模态)
wang.yu [Mon, 17 Aug 2026 08:59:48 +0000 (16:59 +0800)]
docs: 设计文档新增左侧章节目录(TOC)导航
- 页面左侧固定目录栏,自动由 h2/h3 生成,点击跳转、滚动高亮当前章节
- 窄屏(<=760px)隐藏目录;打印时同时隐藏目录与顶栏工具
- 第 1 章补充目录说明
wang.yu [Mon, 17 Aug 2026 08:54:42 +0000 (16:54 +0800)]
docs: 设计文档补充左侧导航菜单完整结构与各菜单项说明
- 4.2 新增左侧导航整体结构(side-nav)树形图,覆盖三大模块上下文的全部菜单项
- 4.2 表格逐条说明每个导航元素的功能/数据来源/交互效果
- 原模块切换与站点列表/详情小节顺延为 4.3 / 4.4
wang.yu [Mon, 17 Aug 2026 08:51:49 +0000 (16:51 +0800)]
docs: 新增设计文档 design-doc.html 并增加顶栏「设计方案」入口
- public/design-doc.html: 朴实风格的在线设计文档,逐页/逐元素说明功能、数据来源、交互效果,含端到端生成流程、AI 问答、模态框、数据存储,未实现功能标注「尚未实现」,支持导出 PDF/Word/Markdown
- app/page.tsx: 顶栏登录名左侧新增「设计方案」超链,新窗口打开 design-doc.html
- app/globals.css: 新增 .design-link 样式
wang.yu [Mon, 17 Aug 2026 08:33:55 +0000 (16:33 +0800)]
fix: 修正模块切换高亮——StationBuilder 改用正向页面集合判断,避免与页面样式库同时选中
wang.yu [Mon, 17 Aug 2026 08:29:46 +0000 (16:29 +0800)]
feat: 生成页新增只读实时终端「AI 生成工作流」并修复代理缓冲导致的过程不可见
- 新增 DB 代理流式透传(原 Buffer 整段缓存使生成过程在完成后才一次性返回)
- db-sidecar 将 codebuddy CLI 实时输出(text_delta)与 Skill 调用标记以 {log} 事件转发
- Generate 组件新增只读终端面板,节流刷新 + 自动滚动,点开始生成时清空
- globals.css 新增 .gen-right/.console-panel/.gen-console 终端样式
- 面板标题定为「AI 生成工作流」
wang.yu [Mon, 17 Aug 2026 07:59:51 +0000 (15:59 +0800)]
fix: AI-FAB 常态光标改为 pointer(功能按钮),拖动时仍显示 grabbing
wang.yu [Mon, 17 Aug 2026 07:57:20 +0000 (15:57 +0800)]
chore: 压缩 AI 图标为 256×256 PNG(1.4MB→109KB)
wang.yu [Mon, 17 Aug 2026 07:49:34 +0000 (15:49 +0800)]
feat: 将 AI 问答入口图标替换为机器人头像,裁剪为圆形
- 新增 public/ai-icon.png(AI 机器人头像)
- 右下角 AI-FAB 中的 SVG 图标替换为 <img> 引用 /ai-icon.png
- globals.css 将 AI-FAB 背景设为透明,图片以 54×54 圆形展示
wang.yu [Mon, 17 Aug 2026 07:43:25 +0000 (15:43 +0800)]
refactor: 左侧导航重构为站点列表/站点详情,移除重复图标栏并修复误建未命名站点
- 删除最左侧 icon-rail 图标栏及 const nav,消除与主菜单重复
- go() 详情类页面无 siteId 时不再自动建站,跳回站点列表并提示
- 侧栏分为「站点列表」与「站点详情」,详情含站点切换器 <select>
- 面包屑区分 站点列表 / 站点详情 / 子视图名
- CSS 调整 side-nav 左偏移与 app-shell 内边距,新增 site-switcher 样式
wang.yu [Mon, 17 Aug 2026 07:20:44 +0000 (15:20 +0800)]
chore: 将运行时数据库迁入仓库 data/db/ 并纳入 Git 版本管理
wang.yu [Mon, 17 Aug 2026 06:37:48 +0000 (14:37 +0800)]
fix: 删除顶部 Header 右侧无意义的四个图标
wang.yu [Mon, 17 Aug 2026 06:23:47 +0000 (14:23 +0800)]
feat: 站点级样式生成范本增强(逐面板外观/配色板/标题模板修复,注入Cube名称)
wang.yu [Mon, 17 Aug 2026 04:11:15 +0000 (12:11 +0800)]
feat: 站点级页面样式集成(功能与菜单中单选样式并组合到生成提示词)
wang.yu [Mon, 17 Aug 2026 03:44:45 +0000 (11:44 +0800)]
feat: 页面样式库模块(列表/缩略图/新增/编辑/删除)并修复 StrictMode 取消请求导致的错误遮罩
- 新增页面样式库模块,与 StationBuilder、领域方案库并列:卡片网格展示五种内置样式及缩略图,支持大图预览与新增/编辑/删除(上传 JSON + 预览图 + 命名)
- 后端 db-sidecar 增加 page_styles 表与种子数据、列表/详情/图片/增删改接口
- 加固 sidecar:吞掉客户端断开时的写错误,单条请求异常不再拖垮服务
- dev 代理对 /api/db 上游响应全量缓冲并按客户端断开返回 499
- vite.config 关闭 HMR 错误遮罩,避免 StrictMode 双挂载取消请求引发的 terminated 噪音
wang.yu [Mon, 17 Aug 2026 01:52:53 +0000 (09:52 +0800)]
feat: 支持针对 Cube 页面提出修改意见并重新生成(保留累积提示词)
- 后端新增 POST /api/sites/:id/cubes/:cubeId/refine:基于当前已生成 JSON + 修改意见
重新生成,修改意见以「--- 修改意见(时间)---」形式累积写入 cubes.prompt;
/prompt 端点改为返回已存储(含历史修改意见)的提示词
- 前端 Result 页每个已生成 Cube 增加「✎ 修改意见」按钮,弹窗提交后刷新站点数据,
缩略图(依赖 generated_at)与新标签页预览自动更新
- 强化 refine 对删除类意见的可靠性:提示词列出当前面板清单并明确删/移/增/改规则,
生成后校验删除是否真正生效,未生效则重试最多 3 次并指名待删面板
- 修复 Modal 漏传 feedbackCube/refineCube/refining 导致「提交并重新生成」无效的缺陷
wang.yu [Sun, 16 Aug 2026 23:15:30 +0000 (07:15 +0800)]
feat: AI 页面结果看板预览(缩略图 + 新标签页完整预览)
- 内置 ECharts(public/echarts.min.js),预览与真实 Cube 同源渲染引擎:
图表面板按 custom.chartConfig + data 构造 ECharts option,
Title/KPI/StatusLight/Table 用 HTML 还原,预览效果与真实 Cube 一致。
- 结果页每个 Cube 卡片内联渲染缩略图(DashboardThumb),按 gridPos 布局并等比缩放。
- 新增「预览」按钮:以 Blob 在新标签页打开完整看板(按屏宽铺满、垂直滚动)。
- loadRenderer 改为先加载 /echarts.min.js 再加载渲染脚本;
修正此前用 import() 加载 /public 内 JS 被 Vite 拒绝导致整站 500 的问题。
- 面板行高采用标准 1080/25,画布按内容自然增高(垂直滚动),避免面板被压缩。
wang.yu [Sun, 16 Aug 2026 13:56:51 +0000 (21:56 +0800)]
feat: AI 助手会话隔离与 StationBuilder 概览接入;fix: 点击站点卡片误建空站点
## AI 助手:会话隔离 + 基于注入上下文回答 StationBuilder 自身信息
- ai-sidecar: 每次会话使用独立 sessionId,配合 --no-session-persistence 与 --tools "",
实现会话隔离(不跨会话、不查其他会话、不触碰服务器/文件/命令);
守卫明确仅允许基于前端注入的只读上下文作答 StationBuilder 配置与已生成内容。
- 前端在 /api/chat 请求中注入 overview(站点总数 + 每站点的领域/状态/设备数/Cube 数/
已生成数)与当前站点的已生成文件名;db-sidecar siteList 增加 gen_count 列。
- 会话上下文前端持久化到 sessionStorage,刷新不丢失。
## fix: 点击站点卡片误建空站点(未命名站点)
根因:go() 在卡片点击后读取过期的 siteId 闭包(首次打开仍为 null),误判"未选站点"
而自动 createSite,生成多余空站点,导致首次打开为空、二次才正常。
- go(target, sid?) 显式接收站点 id;卡片/表格点击传 row.id,不再依赖闭包。
- "新建站点" 改用 go("basic","new") 哨兵,始终新建空白站点。
- Projects 组件 go 属性类型同步放宽。
验证:已通过 tsc 类型检查与实机测试(站点总数/已生成内容可答,服务器 IP/编程/无关请求仍拒;
多次点击站点不再产生未命名站点)。
wang.yu [Sun, 16 Aug 2026 02:34:49 +0000 (10:34 +0800)]
fix: 右下角 AI 图标改为可拖动并更换为机器人图标
问题:右下角固定的 AI 悬浮按钮有时会遮挡「下一步」按钮,且原 ✦ 图标不够突出。
改动:
- 悬浮按钮支持拖拽移动:基于 Pointer 事件 + setPointerCapture 实现,
拖动实时更新位置并持久化到 localStorage(刷新后保持),超出视口自动夹紧;
拖动阈值 4px 内仍视为点击(打开对话框),双击复位到默认右下角。
- CSS 增加 cursor:grab/grabbing、touch-action:none、user-select:none,
触屏也可拖动。
- 图标由 ✦ 替换为机器人 SVG(屏幕+天线+双眼+嘴),在紫蓝渐变圆底上
更醒目,明确体现 AI 助手。
验证:tsc 对本项目改动文件无报错(db/vite/worker 的环境类型报错为既有问题,
与本改动无关)。
wang.yu [Sat, 15 Aug 2026 10:36:05 +0000 (18:36 +0800)]
fix: 修复资产配置布局、提示词格式与 Cube 生成卡死/空JSON 问题
本次提交修复三处问题,均已用真实接口验证:
1. 资产配置页输入框被压窄(布局变形)
- .data-table.editable 改为 table-layout:fixed 并明确列宽
- 设备类型/命名规则输入框稳定撑满单元格,删除按钮补样式
2. 生成提示词:格式不符预期 + 未保存 Cube 点不开
- 站点级与页面级提示词改为中文指令格式(学习领域特点、
生成可导入 Cube 的 JSON、含合理模拟数据),与用户预期一致
- 新增 GET /api/sites/:id/cubes/prompt?name=&content= 端点,
未保存(无 id)的 Cube 也能查看提示词,修复点击无反应
3. Cube 生成卡死 / 生成出空 JSON([])—— 两个真正根因
- 根因A:generate-all 只读数据库 cubes 表,未保存的草稿 Cube
不会生成,包里只剩 menu-config.json(即用户看到的 [])。
修复:generate-all 读取请求体 cubes 并先 upsert 入库再生成;
前端 start() 一并提交 site.cubes,无需先点保存。
- 根因B:codebuddy 默认开启高强度思考,单页生成 >5 分钟仍不结束,
Cube 永远 pending。修复:runCodebuddy 增加 --effort minimal
(单页约 1 分钟产出合法 JSON)+ 300s 超时保护(超时即终止并
报错,避免 UI 无限转圈)。
验证:未保存 Cube『设备监控』(无 id) 自动建库并生成成功;
已保存 Cube『运行总览』生成 39KB 合法仪表盘 JSON,状态 generated。
注:生成质量(布局/数据合理性)仍待人工复核,但已能端到端产出
有效 Cube JSON,解决了此前 commit 中记录的『AI 创建功能还没有成功』。
wang.yu [Sat, 15 Aug 2026 09:20:43 +0000 (17:20 +0800)]
feat: 新建站点向导 + 生成提示词可查 + 站点列表多选删除
新建站点全流程(基本属性 / 资产配置 / 功能与菜单 / 生成确认 / 结果 / 预览),
数据持久化到 SQLite(新增 db-sidecar 后端 + /api/db 代理路由):
- 新建站点向导:Basic 基本信息(名称≤20字、领域可扩充下拉)、Assets 设备资产配置
(默认 4 行占位、资产层级预览)、Functions(MU 标准页树选 + Cube 扩展页编辑 +
菜单结构)、Generate 确认(模型准备 + 各 Cube + 打包校验)、Result/Preview。
- 生成前可查看组合提示词:每个 Cube 页面 + 站点级通用上下文(站点背景 + 完整 Cube
规则 spec),便于在点击“开始生成”前核对、定位生成质量问题。
- 站点列表:Asset 列改为“设备数量”(资产 count 求和);删除“创建人”列及对应筛选;
“操作”列改为删除按钮;新增多选勾选 + 批量删除(DELETE /api/sites,级联清理
资产/页面/生成文件并删除生成目录)。
已知状态 / AI 创建功能说明:
Cube JSON 生成已通过 codebuddy 调用 dashboard-json-generator Skill 实现,并带 JSON
结构自校验(最多 3 次自动修复重试)。但目前生成质量尚未达到预期(即“还没有成功”),
本次新增的“提示词可查”能力正是为此而加,用于排查与迭代;生成效果仍需进一步调优与
验证,不建议直接当作最终交付物使用。
wang.yu [Fri, 14 Aug 2026 12:28:50 +0000 (20:28 +0800)]
StationBuilder v0.3 原型:站点生成工具 UI 与真实模型 AI 聊天
- 框架:Vinext(Next.js 16 + React 19 + Vite + Cloudflare Worker 运行时),纯前端 UI 原型
- 站点生成向导:项目列表 / 基本属性 / Asset 资产 / 功能菜单 / AI 配置 / 生成确认 / 结果预览 / 领域方案库等页面
- Wordbuddy 模型选择器(侧边栏弹出式):单选、仅免费模型 Hy3 可选,其余灰显并标注 免费 / 订阅优先 / 费率
- 右下角浮动 AI 入口:点击打开 1/4 屏宽 × 70% 高对话窗口,可关闭
- AI 对话接通真实模型(CodeBuddy 能力):按所选模型流式返回,渲染为对话气泡
- 后端:Worker 路由 /api/chat 同源代理到本地 Node 旁路 ai-sidecar.mjs,由旁路调用 codebuddy CLI(-p + stream-json)产出干净文本并流式回传;模型/密钥不进前端
- 已忽略 node_modules、.wrangler、.sites-runtime、.openai 及构建产物