191 Commits
Author SHA1 Message Date
bot_dev1 01f4e4b55b chore: #188 修复版产物重打包(推理路径规范化) 2026-08-06 17:27:10 +08:00
bot_dev1 b80fe6ab0f fix(#188): 推理 API 路径规范化,消除双 /v1 前缀对 nginx rewrite 的隐式依赖 (#192)
bot_qa 复审通过(bot_dev3 代发)。PR #192 引用未同步(head 滞留 5667fad),
按 feature/issue-188 分支最新 9994fb7 手工合并。
包含:nginx 无 URI 透传 + location = /health、infer.ts 路径口径统一、
latencyMs 实测、cockpit 健康检查走封装。

⚠️ 部署:UI 产物与 nginx 配置必须同批上线(新旧路径口径互不兼容)。
2026-08-06 17:26:05 +08:00
bot_dev1 9994fb75e7 fix(#188): bot_qa 审核修正——nginx 改无 URI proxy_pass 真透传 + 健康探针 /health 无前缀
打回问题 1:proxy_pass 带末尾 / 是去前缀语义(与声称相反),/v1/models
会被转发成 /models 导致 404。改为不带 URI 的 proxy_pass(无末尾 /),
请求 URI 原样透传;另新增 location = /health 精确透传健康探针。
打回问题 2:serve.py 健康路由是 GET /health(无 /v1 前缀),fetchHealth
由 /v1/health 改回 /health;同步修正 chat/NlQuery/cockpit 三处文案注释。
构建验证:pnpm --filter @vben/web-antdv-next build 通过(10.3s)。
2026-08-06 16:48:14 +08:00
bot_dev1 be2730fe13 fix(#189): 驾驶舱主题 token 卸载时清理,修复全局 CSS 变量污染 (#193)
bot_qa 审核通过(issue #189 已关闭),补合并到 main——此前仅审核通过未合并,修复一度丢失。
2026-08-06 16:45:15 +08:00
bot_dev1 282c46afd9 fix(#187): 修复模板配置台两处交互失效 (#194)
bot_dev1 复核通过(与 bot_qa 审核结论一致);rebase 到最新 main 解决 version.vue 冲突后合并。

fixes #187
2026-08-06 08:38:00 +00:00
bot_dev1 018bcdbf1a fix(#187): 修复模板配置台两处交互失效
1. studio/import.vue CSV 上传失效:onFile 原按 DOM Event 取 e.target.files,
   但 a-upload 的 @change 载荷是 UploadChangeParam { file, fileList },
   :before-upload="() => false" 时文件在 file.originFileObj 上,导致必抛
   TypeError 无响应。改为从 info.file.originFileObj 取文件对象。
2. studio/layout.vue 第 45 行「发布布局」按钮无 @click 处理(死按钮):
   新增 publishLayout,将布局 JSON 暂存 localStorage
   (iaop.studio.layout.v1),与 version.vue 版本发布联动;
   version.vue 发布时读取并打包该布局。
   layoutJson 改为 computed,模板同步更新。

验收:本环境无 pnpm/node_modules,构建验证转 bot_qa 构建环境;
上传符合表头 CSV 应出现校验/预览,缺表头 CSV 应报错;
点「发布布局」应提示成功并记录发布时间。
2026-08-06 16:34:24 +08:00
bot_dev1 4a12aa9d4b fix(#189): 驾驶舱主题 token 卸载时清理,修复全局 CSS 变量污染
问题:cockpit/index.vue 加载模板时把 theme token 通过
setProperty 注入 :root,但 onUnmounted 仅 clearInterval 未清理,
导致进过驾驶舱/切换模板后全局 CSS 变量被残留值污染,其他页面颜色异常。

修复:
1. 注入前记录被改动的变量名及旧值(injectedTokens)。
2. onUnmounted 时逐个恢复旧值(有旧值则 setProperty 恢复,
   原本无则 removeProperty 移除),杜绝全局污染。

验收:进驾驶舱再切到其他页面,全局 CSS 变量无残留值,颜色正常。
(本环境无 pnpm,构建验证转 bot_qa)
2026-08-06 16:12:57 +08:00
bot_dev1 5667fad3e1 fix(#188): 推理 API 路径规范化,消除双 /v1 前缀对 nginx rewrite 的隐式依赖
问题:infer.ts BASE_URL=/v1,fetchModels/chatCompletion 再拼 /v1/* 导致
/v1/v1 双前缀,当前仅靠 nginx 对 /v1/ rewrite 去前缀巧合耦合才通。

修复(前后端+部署一起改):
1. nginx-fba.conf:新增 location /v1/,proxy_pass http://127.0.0.1:30800/
   (带末尾 /,不去前缀直接透传),消除对 rewrite 的隐式依赖。
2. infer.ts:BASE_URL 改为空串,调用方统一写 /v1/models、
   /v1/chat/completions、/v1/health(fetchHealth 原误用 /health 已修正)。
3. cockpit/index.vue:健康检查改走 infer.ts 的 fetchHealth 封装,
   不再裸 fetch('/v1/health'),路径口径统一。
4. ask() latencyMs 由硬编码 0 改为 performance.now() 实测耗时。
5. README 补充推理通道路径约定说明。

验收:浏览器 Network 确认 /v1/models、/v1/chat/completions、
/v1/health 均 200 且无 /v1/v1 请求。(本环境无 pnpm,构建验证转 bot_qa)
2026-08-06 16:11:37 +08:00
bot_dev2 787a83c550 fix: version 页改 antd a-table + 初始服务端探测(发布=注册到服务端) 2026-08-06 16:11:16 +08:00
bot_dev2 2c7ebf4efc fix: models 页改 antd a-table(响应式 :data-source,规避 vben Grid proxy 异步时序导致 0 条) 2026-08-06 16:09:00 +08:00
bot_dev2 03dbd04452 fix: models 页改 :data 响应式绑定(异步 fetch 数据 + proxy 分页时序导致 0 条,vxe-grid data 直绑最稳) 2026-08-06 16:06:53 +08:00
bot_dev2 d843dc46bf fix: ?? 与 || 混用加括号(193d561 同款语法,C2 构建修复) 2026-08-06 16:01:30 +08:00
bot_dev2 b93830c835 fix: vxe-grid proxy.query 分页兜底(page 缺省时返回全量,E2 重写覆盖了 QA cd7d4fd 修复导致 models/version 0 条) 2026-08-06 16:00:29 +08:00
bot_dev2 1043dd473e feat: 完成 issue #183 [E2] 前端接入注册表 API——registry.ts 四接口封装 + models.vue API 优先/localStorage 降级/迁移提示 + version.vue 发布=注册 2026-08-06 15:41:59 +08:00
bot_dev2andyunmei 14e419be36 feat: 完成 issue #182 [E1] 模型注册表后端化——registry_api.py HTTP 服务(四接口+双轨鉴权+种子+持久化)+ 11 单测全过 + README 反代约定 2026-08-06 15:38:51 +08:00
bot_dev1 ef2a921765 chore: 数据修复版产物重打包 2026-08-06 14:58:43 +08:00
bot_dev1 193d5618be fix: 空值合并与逻辑或混用加括号(models/alerts/kb 构建语法错误) 2026-08-06 14:57:09 +08:00
bot_dev1 cd7d4fd118 fix: 模型/告警数据持久化恢复(localStorage 与旧版同 key 自动迁移)+ 全部分页 proxy 兜底防空表 2026-08-06 14:57:09 +08:00
bot_dev2 ccdaa67787 feat: 完成 issue #181 菜单播种 v5——概览/推广菜单逻辑删除(合并 QA 1aaa159 的 Project 系列;display=0 对超管无效须删除,先子后父) 2026-08-06 14:35:04 +08:00
bot_dev1 1aaa159363 fix: 播种脚本同步隐藏 FBA 推广菜单「项目」(文档/Github/Apifox 外链) 2026-08-06 14:32:24 +08:00
bot_dev1 62426ef7bb fix: 模型超参/驾驶舱编排内容卡片化(a-card 包裹,对齐 FBA 原生页观感) 2026-08-06 14:28:27 +08:00
bot_dev1 4fb216cde0 fix: 播种脚本隐藏 FBA 测试数据自带的概览菜单(视图不存在导致 404) 2026-08-06 14:24:16 +08:00
bot_dev1 bb56461c79 chore(QA): 样式对齐版产物重打包(D1/D2 验收实测构建) 2026-08-06 14:11:37 +08:00
bot_dev2 1fe0fae37f feat: 完成 issue #179 [D2] 样式对齐(下)——studio/admin 10 页接入 vben 体系(Page+vxe-grid+vben-form+iconify),硬编码色/emoji 清零 2026-08-06 14:03:30 +08:00
bot_dev2 9b44723b35 feat: 完成 issue #178 [D1] 样式对齐(上)——驾驶舱+对话助手硬编码色改 vben 主题 token(54 处 hsl(var(--*))),Page 容器 2026-08-06 14:02:00 +08:00
bot_dev1 36d8f7db2f chore(QA): 恢复 pnpm-lock.yaml,移除 lefthook 误装的仓库根配置 2026-08-06 13:15:52 +08:00
bot_dev1 1b7c2b0177 fix(QA): 修复构建阻断与静态资源路径——useMessage 误导入 + plans/citations 根绝对路径改 BASE_URL 前缀(代 bot_qa 验收 #164-#176) 2026-08-06 13:14:52 +08:00
bot_dev2 787234146b feat: 完成 issue #176 [C1] 旧入口收口——/index.html /auth/login.html FBA 在线自动跳转 + README 新架构说明 2026-08-06 13:00:43 +08:00
bot_dev2 cda279fa66 feat: 完成 issue #174 [B8] 用户与角色模块退役——users/mobile 菜单隐藏(display=0)+users.html deprecated+admin 角色 FBA 系统管理 2026-08-06 12:59:59 +08:00
bot_dev2 f7759b7cee feat: 完成 issue #170/#171/#172/#173 [B4-B7]——studio 点位导入/模型超参/编排/版本 + admin 模型/知识库/告警/审计(原生 Vue 页) 2026-08-06 12:59:16 +08:00
bot_dev2 81222ad990 feat: 完成 issue #169 [B3] 对话助手重构——消息流+模型选择+引用溯源+离线降级 2026-08-06 12:57:21 +08:00
bot_dev2 df6776caba feat: 完成 issue #168 [B2] 驾驶舱重构(下)——实时趋势(SVG 折线 2s 滚动)+ NL 查询(infer.ts) 2026-08-06 12:56:46 +08:00
bot_dev2 febdd5b917 feat: 完成 issue #167 [B1] 驾驶舱重构(上)——布局+四状态工艺+KPI 卡片+告警面板(模板 JSON 驱动) 2026-08-06 12:56:01 +08:00
bot_dev2 7279c9f71f feat: 完成 issue #166 [A3] iAOP API 客户端封装(infer.ts LLM 网关 + templates.ts 模板 JSON + plans 迁入 public) 2026-08-06 12:54:18 +08:00
bot_dev2 ddd59345ed feat: 完成 issue #165 [A2] 菜单播种 v2——原生菜单(type=1/component/iconify)+PUT 幂等更新+admin 角色 2026-08-06 12:53:15 +08:00
bot_dev2 91b16ec6c3 feat: 完成 issue #164 [A1] FBA UI 骨架定制——iAOP 品牌+默认主页+清理 demo+构建流水线 2026-08-06 12:51:38 +08:00
bot_dev2 88d84757ac chore: vendor FBA UI 工程源码(fastapi-best-architecture-ui master,Epic #163 受控源码基础) 2026-08-06 12:50:35 +08:00
bot_dev1 9728fa40fe fix: 「用户与角色」模块切换到 FBA UI 承载(Epic #159 遗漏收尾) 2026-08-06 11:37:40 +08:00
bot_dev2 4a7b5e4f21 fix: seed_iaop_menus.py swagger 登录返回裸 GetSwaggerToken(无 code 包装),专用登录方法适配 2026-08-06 10:32:21 +08:00
bot_dev2 209427f685 fix: seed_iaop_menus.py 适配 FastAPI>=0.13x(HTTPBasicCredentials 绑定 query 参数,登录带 username/password) 2026-08-06 10:31:25 +08:00
bot_dev1 4ea81cea91 feat: Phase 3 FBA UI 预构建产物 + Phase 4 按钮级权限(fba_jwt + perms)(Epic #159) 2026-08-06 10:18:15 +08:00
bot_dev1 067ba0abe1 feat: Phase 2 Sider 菜单由 FBA 服务端授权驱动 + 菜单/角色播种脚本(Epic #159) 2026-08-06 10:04:36 +08:00
bot_dev1 5b673fcdc7 feat: Phase 1 前端认证接入 FBA JWT——三轨会话 + 图形验证码(Epic #159) 2026-08-06 09:46:21 +08:00
bot_dev1 70c680a612 feat: Phase 0 FBA 部署包——docker-compose + nginx 反代 + env 模板(issue #159) 2026-08-06 08:41:59 +08:00
bot_dev1 8b68d015c2 fix: 组件配色全面对齐 Ant Design 5 token + 修复 iframe 内页签初始激活(issue #131)
组件审查结论:全站组件为自绘 HTML+CSS 仿 AntD(纯静态无组件库),
pro.css 已统一设计 token,但各页 CSS/JS 残留一批旧配色硬编码,
pro.css 覆盖不到,本次全部清理:

- 旧 iOS 红 #ff3b30 → --ant-error #ff4d4f(告警 P0/严重度/DLP 条/
  工艺 alarm 态/diff 删除行)
- 旧橙 #f5a623 → --ant-warning #faad14(P1 告警/warning 态/暂存徽章)
- 旧 iOS 绿 #2ecc71 → --ant-success #52c41a(running 态/prod 徽章/
  索引完成/路由本地标签/权限矩阵)
- 杂色蓝统一 → --ant-primary #1677ff:发送键 #0ea5e9、P2 告警
  #3aa0ff、编排画布残留青 rgba(24,211,200)、旧气泡 #1d4ed8
- 主色按钮上的深色文字 #04202a → #fff(对比度修正)
- 灰 #64748b → --ant-text-tertiary rgba(0,0,0,0.45)
- 各页 CSS :root 深色默认变量值(#0b1220/#13203a/#18d3c8 等死值)
  对齐为 AntD 亮色默认值,修正"深色主题"过时注释
- 删除已无任何引用的旧深色登录页样式 auth/auth.css

顺带修复实测发现的 bug:SPA 外壳内直达 admin/studio 子页时页签
不切换——studio.js/admin.js 的 Tab 事件在异步 boot(user) 中绑定,
bindPageTabs 的 window load 初始激活可能早于绑定完成,改为带重试
的激活(直到 Tab 点亮,最多 10s)。实测 #/admin/#alerts 直达后
page-alerts 正确激活。
2026-08-06 08:20:17 +08:00
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
bot_dev1 65d3b0952f fix: 消除跨模块跳转的整页白闪(issue #131)
五个带 Sider 的模块页 head 内联首屏底色(左 208px #001529 深 +
内容区 #f0f2f5),外部 CSS 加载前的解析期画布即为最终布局底色,
深色 Sider 区域不再白闪(FOUC);窄屏媒体查询下保持纯灰底
2026-08-05 17:43:36 +08:00
bot_dev1 870dbb9ce5 fix: 子菜单高亮改由 hashchange 统一驱动(issue #131)
浏览器实测(WebBridge)发现同页子菜单点击后页签切换正常但
子项高亮不跟随:原实现依赖子项点击处理器更新高亮,存在竞态。
改为统一数据流:子项一律默认导航改 hash → hashchange 同时驱动
页内 Tab 切换与 .pro-subitem 高亮同步,跨页直达/分享 URL 路径不变。

实测验证:admin/#audit|#kb|#models 连续切换,hash/页签/高亮三者同步
2026-08-05 17:33:39 +08:00
bot_dev1 e9787ecb22 fix: 修复 http 纯静态部署下本地账号登录不可用(issue #131)
- user_store.js:crypto.subtle 仅安全上下文可用,http://:8090 下为 undefined
  导致播种/校验静默失败;新增纯 JS SHA-256 降级实现(已对照 Node crypto
  验证一致,含非 ASCII),WebCrypto 可用时仍优先
- session.js:/auth/login 返回 5xx/非 JSON 时判定为后端不可用并降级本地
  账号,仅 4xx 视为真实鉴权失败(原逻辑把 nginx 500 HTML 误判为密码错误)
2026-08-05 16:52:45 +08:00
bot_dev1 c0af291502 fix: 导航交互对齐 Ant Design Pro 体验(issue #131)
- 父级菜单整行点击 = 就地展开/收起 inline 子菜单(不再跳转),
  只有子项才导航,与 Pro 的 Menu inline 模式一致
- 子菜单展开加 max-height 过渡动画
- 菜单加 AntD Menu.ItemGroup 风格分组标题,hover 态补半透明白底
- 页内旧 topbar 去背景去边线,融入内容区当页标题行,消除双顶栏感
2026-08-05 16:20:52 +08:00