]> acesimba.cloud Git - StationBuilder.git/log
StationBuilder.git
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 及构建产物