]> acesimba.cloud Git - StationBuilder.git/commit
feat: AI 助手会话隔离与 StationBuilder 概览接入;fix: 点击站点卡片误建空站点
authorwang.yu <wang.yu@advantech.com>
Sun, 16 Aug 2026 13:56:51 +0000 (21:56 +0800)
committerwang.yu <wang.yu@advantech.com>
Sun, 16 Aug 2026 13:56:51 +0000 (21:56 +0800)
commit54810273da0c3ec759c2e4af8f6c91240854f2f0
tree53809980a46f9c51c21575f25b0fd9e38455daae
parent6f9b19590b3cd5eb2a07a303a025203a1569d022
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/编程/无关请求仍拒;
多次点击站点不再产生未命名站点)。
ai-sidecar.mjs
app/api/chat/route.ts
app/page.tsx
db-sidecar.mjs