Files
iAOP/web/studio
bot_dev1 cfa976cac3 feat: SPA 外壳——菜单切换零刷新,对齐 Ant Design Pro 体验(issue #131)
- web/index.html 重写为 SPA 外壳:Sider/顶栏常驻,模块页在
  #module-frame iframe 内容区加载,点菜单只换 iframe 地址,
  彻底消灭整页刷新与白闪(此前只是铺底色缓解)
- 新增 shared/shell.js:IAOP_SHELL.navigate() 导航、外壳 hash
  (#/admin/#models) 与 iframe 地址双向同步、登录守卫、移动端
  模块新标签打开;iframe 地址用 location.replace 避免污染
  joint history;250ms 轮询回同步(replace 不触发 load 事件);
  导航时乐观高亮(后台标签轮询被节流不能作为唯一途径);
  前进/后退若恢复了 iframe 旧地址则以外壳 hash 为准强制对齐
- pro-header.js 三模式:外壳(菜单点击走 IAOP_SHELL、导出
  IAOP_PRO.setActive)/被嵌(iframe 内,隐藏页内跨页链接与重复
  用户标识、保留 Tab-hash 联动)/独立(原行为);菜单渲染后派发
  pro:menu-rendered 事件消除导航先于渲染的高亮竞态
- session.js:logout/守卫重定向作用于顶层窗口(iframe 内不再
  只跳 iframe 自己)
- 修复 iframe 替换元素宽高 bug:fixed 时左右定位不拉伸(回退
  固有 300x150),改显式 calc 宽高
- 登录页 next 默认回外壳 ../index.html

实测(本地 http.server + WebBridge 真实浏览器):菜单切换/
子菜单切换/前进/后退/直达链接(#/admin/#models) URL、iframe、
菜单高亮、子菜单高亮全链路一致,Sider 节点全程不重建;
登录守卫 logout→顶层跳登录、登录后回外壳默认驾驶舱。
2026-08-05 22:43:47 +08:00
..

web/studio — iAOP 模板配置台 UI

issue #132 / PRD 5.7「⑤.7 模板配置台」。纯静态单页应用(无构建链), 覆盖 PRD 5.7 关键页面线框:导入页 / 超参配置页 / 驾驶舱编排页 / 版本页, 三级 RBAC(Viewer / Editor / Publisher)。

使用

cd web/studio && python -m http.server 8081
# 浏览器打开 http://localhost:8081 (Chrome / Edge 最新两版)

页面与后端语义对齐

配置台后端内核 core/template-console/ 是纯标准库引擎(暂无 HTTP 服务), 本 UI 在前端镜像其语义;配置与版本持久化在浏览器 localStorage(Demo 级)。

页面 能力 对齐内核模块
① 点位导入 CSV 上传/粘贴、校验进度条、错误列表(行号+原因)、下载错误模板 point_importer.py(表头列序/必填/数据类型/采样率/重复点号/OPC 节点/模板量纲收窄)
② 模型超参 左树 4 类模型(质量预测/异常检测/工艺优化/跨工序关联)、右表单(默认值/单位/范围)、实时 JSON 预览 config_store.py(ConfigKind.MODEL_PARAM)、core/model-framework 示例
③ 驾驶舱编排 组件库(5 种 widget)/ 12 列画布 / 数据源绑定面板,产出 iAOP-cockpit-layout-v1 JSON config_store.py(ConfigKind.LAYOUT)、core/cockpit/layout.py
④ 版本发布 版本列表(状态/时间/作者)、diff 视图、回滚(不删历史、事件可追溯)、导出模板资产包 release.py(快照固化 / semver 单调递增 / 回滚可追溯)

RBAC(对齐 core/template-console/rbac.py)

  • Viewer(readonly):只读预览,全部编辑/发布按钮禁用;
  • Editor(engineer):可配置(导入校验/超参/编排),不可发布与回滚;
  • Publisher(admin):可配置 + 发布 + 回滚。

顶栏角色切换即切换权限视图(Demo 级,未接认证——认证由 issue #134 覆盖)。

耦合边界

配置台唯一产出物是「模板资产包」JSON(版本页导出, pack_schema: iAOP-template-pack-v1,含版本快照:超参/布局/点位校验报告), 供内核灰度推送(对齐 push_channel.py 的 PushManifest 语义), 不直接改内核运行时。