]> acesimba.cloud Git - StationBuilder.git/log
StationBuilder.git
6 weeks agoUI: 反馈弹窗「AI 生成工作流」标题去掉「(实时 · 只读)」后缀
wang.yu [Mon, 17 Aug 2026 23:00:21 +0000 (07:00 +0800)]
UI: 反馈弹窗「AI 生成工作流」标题去掉「(实时 · 只读)」后缀

6 weeks agoUI: 资产层级预览按规则补全设备实例编号
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 节说明

6 weeks agoUI: 页面样式库缩略图加高,整页可见(3 列 + 16:9 自适应)
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 节说明

6 weeks agodocs: 设计方案描述脱敏,移除站点隐私与具体 AI 服务信息
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)与接口路由,作为文档契约

6 weeks agoperf: 生成流程四项优化(代码级修复/精简数据/重试降级/并行生成)
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节与性能说明

6 weeks agofix: 失败页面也显示「✎ 修改意见」入口(有生成文件即显示)
wang.yu [Mon, 17 Aug 2026 10:10:17 +0000 (18:10 +0800)]
fix: 失败页面也显示「✎ 修改意见」入口(有生成文件即显示)

- 结果页卡片「✎ 修改意见」按钮由 cube.status==="generated" 改为 cube.gen_file_id,使生成失败但留有 JSON 的页面也能提修改意见/重生成
- 设计文档 5.7 同步说明该按钮在有生成文件(含失败页面)时即显示

6 weeks agofix: 反馈弹窗将「修改意见」输入框置顶并自动聚焦,确保可见可填写
wang.yu [Mon, 17 Aug 2026 09:39:45 +0000 (17:39 +0800)]
fix: 反馈弹窗将「修改意见」输入框置顶并自动聚焦,确保可见可填写

- 反馈弹窗(feedback)将修改意见 textarea 移至弹窗顶部、紧跟影响范围标题,并加 autoFocus,避免被折叠在弹窗底部
- 提示文案改为引导在上方输入框填写
- 设计文档 8 反馈模态补充说明输入框置顶与自动聚焦

6 weeks agofix: 修复反馈弹窗提交按钮被裁切;结果页多页改为纵向单列
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 补充结果卡片纵向单列说明

6 weeks agofeat: 修改意见重新生成时展示「AI 生成工作流」实时进度
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 反馈模态)

6 weeks agodocs: 设计文档新增左侧章节目录(TOC)导航
wang.yu [Mon, 17 Aug 2026 08:59:48 +0000 (16:59 +0800)]
docs: 设计文档新增左侧章节目录(TOC)导航

- 页面左侧固定目录栏,自动由 h2/h3 生成,点击跳转、滚动高亮当前章节
- 窄屏(<=760px)隐藏目录;打印时同时隐藏目录与顶栏工具
- 第 1 章补充目录说明

6 weeks agodocs: 设计文档补充左侧导航菜单完整结构与各菜单项说明
wang.yu [Mon, 17 Aug 2026 08:54:42 +0000 (16:54 +0800)]
docs: 设计文档补充左侧导航菜单完整结构与各菜单项说明

- 4.2 新增左侧导航整体结构(side-nav)树形图,覆盖三大模块上下文的全部菜单项
- 4.2 表格逐条说明每个导航元素的功能/数据来源/交互效果
- 原模块切换与站点列表/详情小节顺延为 4.3 / 4.4

6 weeks agodocs: 新增设计文档 design-doc.html 并增加顶栏「设计方案」入口
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 样式

6 weeks agofix: 修正模块切换高亮——StationBuilder 改用正向页面集合判断,避免与页面样式库同时选中
wang.yu [Mon, 17 Aug 2026 08:33:55 +0000 (16:33 +0800)]
fix: 修正模块切换高亮——StationBuilder 改用正向页面集合判断,避免与页面样式库同时选中

6 weeks agofeat: 生成页新增只读实时终端「AI 生成工作流」并修复代理缓冲导致的过程不可见
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 生成工作流」

6 weeks agofix: AI-FAB 常态光标改为 pointer(功能按钮),拖动时仍显示 grabbing
wang.yu [Mon, 17 Aug 2026 07:59:51 +0000 (15:59 +0800)]
fix: AI-FAB 常态光标改为 pointer(功能按钮),拖动时仍显示 grabbing

6 weeks agochore: 压缩 AI 图标为 256×256 PNG(1.4MB→109KB)
wang.yu [Mon, 17 Aug 2026 07:57:20 +0000 (15:57 +0800)]
chore: 压缩 AI 图标为 256×256 PNG(1.4MB→109KB)

6 weeks agofeat: 将 AI 问答入口图标替换为机器人头像,裁剪为圆形
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 圆形展示

6 weeks agorefactor: 左侧导航重构为站点列表/站点详情,移除重复图标栏并修复误建未命名站点
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 样式

6 weeks agochore: 将运行时数据库迁入仓库 data/db/ 并纳入 Git 版本管理
wang.yu [Mon, 17 Aug 2026 07:20:44 +0000 (15:20 +0800)]
chore: 将运行时数据库迁入仓库 data/db/ 并纳入 Git 版本管理

6 weeks agofix: 删除顶部 Header 右侧无意义的四个图标
wang.yu [Mon, 17 Aug 2026 06:37:48 +0000 (14:37 +0800)]
fix: 删除顶部 Header 右侧无意义的四个图标

6 weeks agofeat: 站点级样式生成范本增强(逐面板外观/配色板/标题模板修复,注入Cube名称)
wang.yu [Mon, 17 Aug 2026 06:23:47 +0000 (14:23 +0800)]
feat: 站点级样式生成范本增强(逐面板外观/配色板/标题模板修复,注入Cube名称)

6 weeks agofeat: 站点级页面样式集成(功能与菜单中单选样式并组合到生成提示词)
wang.yu [Mon, 17 Aug 2026 04:11:15 +0000 (12:11 +0800)]
feat: 站点级页面样式集成(功能与菜单中单选样式并组合到生成提示词)

6 weeks agofeat: 页面样式库模块(列表/缩略图/新增/编辑/删除)并修复 StrictMode 取消请求导致的错误遮罩
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 噪音

6 weeks agofeat: 支持针对 Cube 页面提出修改意见并重新生成(保留累积提示词)
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 导致「提交并重新生成」无效的缺陷

6 weeks agofeat: AI 页面结果看板预览(缩略图 + 新标签页完整预览)
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,画布按内容自然增高(垂直滚动),避免面板被压缩。

6 weeks agofeat: AI 助手会话隔离与 StationBuilder 概览接入;fix: 点击站点卡片误建空站点
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/编程/无关请求仍拒;
多次点击站点不再产生未命名站点)。

6 weeks agofix: 右下角 AI 图标改为可拖动并更换为机器人图标
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 的环境类型报错为既有问题,
与本改动无关)。

6 weeks agofix: 修复资产配置布局、提示词格式与 Cube 生成卡死/空JSON 问题
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 创建功能还没有成功』。

6 weeks agofeat: 新建站点向导 + 生成提示词可查 + 站点列表多选删除
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 次自动修复重试)。但目前生成质量尚未达到预期(即“还没有成功”),
本次新增的“提示词可查”能力正是为此而加,用于排查与迭代;生成效果仍需进一步调优与
验证,不建议直接当作最终交付物使用。

6 weeks agoStationBuilder v0.3 原型:站点生成工具 UI 与真实模型 AI 聊天
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 及构建产物