]>
acesimba.cloud Git - StationBuilder.git/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
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 及构建产物