Commit Graph
516 Commits
Author SHA1 Message Date
Logan.Li 95066083bd feat(agentcli): Web 端运行中消息排队
忙时输入入队,支持立即(abort 后发)、编辑、撤销;
任务结束后自动 continue 排队内容。配套 docs/14。
2026-10-19 03:53:09 +08:00
Logan.Li 1c98c25c74 feat(agentcli): 运行结果 incomplete 语义与契约文档
RunResult 增加 Outcome/Reason;触顶标记 incomplete:max_steps;
WebSocket finish 区分 incomplete 与 fatal error。补充 ai-agent docs 13 与挂点索引。
2026-10-19 03:53:09 +08:00
Logan.Li f3a4fb569f fix(deploy): 全新部署链路健壮性(0004 幂等 + 迁移前置 + 空库守卫)
AIOps CI / Backend (test, vet, build) (push) Canceled after 0s
AIOps CI / Agent (test, vet, build) (push) Canceled after 0s
AIOps CI / Frontend (typecheck, lint, build) (push) Canceled after 0s
AIOps CI / API integration (SQLite + redka) (push) Canceled after 0s
- 0004_metric_aggregate_unique 改为幂等:新库基线已由模型 uniqueIndex 建出
  uniq_metric_agg,再次 CREATE 会以 1061 重复键名中断 migrate up,
  导致 0005_agent_settings 建不出来(全新部署实测复现)
- 新增 database.IndexExists:跨 SQLite/MySQL/PostgreSQL 判断索引是否存在
- 新增 database.EnsureSchemaInitialized:服务启动遇到空库时明确失败并给出
  执行 aiops migrate up 的指引,避免「服务起来了但页面全是空数据」
- run.sh docker up/upgrade/update 先跑一次 aiops migrate up 再启动服务

// Logan.Li
2026-09-14 09:02:42 +00:00
Logan.Li 7a96381dc7 fix(version): 界面版本号改为动态读取,统一版本为 v1.0.2
界面侧栏与页脚硬编码 v1.0.0,发版后始终显示陈旧版本。

- 新增 useAppVersion hook:从后端 /version 读取并做模块级缓存
- Sidebar / MainLayout 改用该 hook
- /agent/arch 的 version 字段原先硬编码 "1.0.0",改由 main 注入 router.AppVersion
- Dockerfile 增加 AGENT_VERSION 构建参数,与镜像 VERSION 解耦,
  避免纯前端改动也触发全量 Agent 重推

统一版本:镜像 lghost/aiops:v1.0.2,内置 Agent v1.0.2。

// Logan.Li
2026-09-14 08:46:40 +00:00
Logan.Li 9360ebefd8 fix(agent): 修复 ticker 被反复 Reset 导致上报间隔失效
配置轮询每 30s 都会收到相同的 report_interval 并触发 ticker.Reset,
而 Reset 会重新计时 —— 30s 的 ticker 永远等不到触发,
实际上报被无形拖长到 60~90s(实测 17 次/60s,应为 52 次)。

改为记录已生效的间隔,仅在值真正变化时才 Reset。
配置轮询间隔同样处理,否则每次轮询都 Reset 会让 ticker 永不触发。

验证:升级后上报 53 次/60s,Redis 采样时间戳精确 30s 间隔。

// Logan.Li
2026-09-14 08:34:02 +00:00
Logan.Li 610402d47f fix(dashboard): 修复大屏主机列表恒为空 —— 区域表名错误且错误被静默吞掉
现象:/servers 资产里有 31 台,/dashboards 大屏一台都不显示。

根因:GetLatestReports 的 SQL 中 JOIN 了不存在的表 asset_regions,
实际表名是 asset_cloud_regions(见 model/server.go 的 Region.TableName())。
查询直接报 Error 1146,但 Scan() 的错误未校验,函数静默返回空数组,
接口始终 200 + data:[],因此前端无任何报错可循。

- agent.go: JOIN 改为 asset_cloud_regions,并补上错误校验与 500 响应
- agent_report_test.go: 移除手工创建的 asset_regions,
  改由 AutoMigrate(&model.Server{}) 级联建立 asset_cloud_regions,
  避免测试用错误表名掩盖生产问题

验证:/agent/latest 由 0 台恢复为 31 台(含未装 Agent 的 not_installed 主机)。

// Logan.Li
2026-09-14 08:29:56 +00:00
Logan.Li 4010b4fd70 build: 镜像内置 Linux amd64/arm64 + Windows amd64 三平台 Agent,固定版本 v1.0.1
- Dockerfile/backend/Dockerfile: 显式交叉编译 linux-amd64、linux-arm64、
  windows-amd64.exe(原实现只产出容器目标架构,ARM 主机会下载 404)
- 移除 darwin-arm64:服务器采集场景极少见,不再产出也不在清单中声明
- router/agent_static.go、run.sh、文档同步对齐实际产出清单

// Logan.Li
2026-09-14 08:23:36 +00:00
Logan.Li 59320aa410 perf: 修复 Agent 校验 CPU 热点并实现指标分层聚合与频率下发
CPU 根因:每个 Agent 请求都做一次 bcrypt 校验(实测 72ms),
30 台主机 18 req/s × 72ms ≈ 1.35 核,实测容器 CPU 135%。

- agentauth: 校验结果按 Token 哈希缓存(TTL 5min,轮换即失效),
  last_used_at 写入按 60s 节流。实测 CPU 135% → 1.6%,请求延迟 103ms → 1.6ms
- metricagg: 新增后台逐级降采样聚合 raw→1m/5m→1h→6h/1d,取代前端手动触发
- metrics_aggregate: 补 uniq_metric_agg 唯一索引(原 idx_agg 非唯一导致 upsert 插重复行)
- agent 合并配置接口 GET /agent/config:一次返回任务+探针+端口策略+频率,
  配置轮询 5s→30s;服务端可下发 report_interval,Agent 热更新 ticker 无需重装
- retention: agent_reports 保留期 7d→1d(趋势由聚合表承担)
- redis: 增加 maxmemory 512mb + volatile-lru
- fix(upgrade): 升级脚本改为 fail-fast,修复下载失败仍报 UPGRADE_OK 的静默谎报

// Logan.Li
2026-09-14 08:23:31 +00:00
Logan.Li 93abf81e40 fix(database): 修复空库基线迁移因索引命名不一致而失败
GORM 1.30 AutoMigrate 对已存在表的唯一索引执行 `DROP INDEX uni_<表>_<列>`,
而建表阶段用的是 idx_ 前缀,索引名永不匹配,空库执行基线必然以
Error 1091 (Can't DROP ...; check that column/key exists) 失败。

- 新增 indexNamedNaming,令 UniqueName 复用 IndexName 的 idx_ 命名
- BootstrapSchema 改为一次性 AutoMigrate(allModels...),
  让 GORM 在外键依赖排序生效(如 asset_cloud_regions 先于 asset_servers)

// Logan.Li
2026-09-14 07:59:36 +00:00
Logan.Li 0996d8a839 feat(profile): 修改密码增加确认输入并强制重新登录
- 新增「确认新密码」输入框,实时提示两次输入是否一致
- 校验:新旧密码相同 / 两次输入不一致 均给出明确提示
- 修改成功后强制登出并跳转登录页,避免旧会话继续持有权限

// Logan.Li
2026-09-14 07:59:33 +00:00
Logan.Li 815c293b28 fix(dashboard): 修复资源趋势图取数变量未定义导致构建失败
e0cc547c 移除 generateMetricsData 时删掉了 `const data = ...`,
但 AreaChart 仍引用 `data`,触发 TS2304 "Cannot find name 'data'",
前端 tsc -b 无法通过。改为引用实际的 realData。

// Logan.Li
2026-09-14 07:33:28 +00:00
Logan.Li 6c82ca9031 refactor(frontend): 主题精简为双主题
- 移除与深海蓝视觉重复的 4 个开发者暗色主题(One Dark/Dracula/Tokyo Night/Catppuccin)
- 仅保留 跟随系统/深海蓝/明亮白;删除 5 段主题 CSS 与下架文案
- 旧主题存量值统一迁移到深海蓝,ThemePicker 改为扁平列表
2026-09-14 15:28:15 +08:00
Logan.Li 0563a29de1 fix(frontend): 终端窗口壳问题修复
- 详情抽屉打开终端/RDP/文件浏览前先关闭抽屉,修复同 z-index 遮挡冲突
- 删除语义不通的黄灯按钮,绿灯随全屏状态切换 aria-label
- 连接指示点补充 role=status 与 sr-only 文案,不再仅靠颜色区分
- LiveMonitorDialog 接入 i18n;修复 TerminalDialog 乱码注释;全屏文案迁至 common 命名空间
2026-09-14 15:28:15 +08:00
Logan.Li 115e8b451c fix(i18n): 清理语言包损坏 key 并补齐英文翻译
- 删除从 JSX 误切的损坏条目,4 处代码引用改用正常 key(空数据/内存目标/删除确认)
- en-US 补翻 32 条中文残留,修复空值 portUnit
- 修复后 zh/en 各 7655 个 key 完全对齐
2026-09-14 15:28:15 +08:00
Logan.Li 5cd7ea4a39 fix(frontend): 侧边栏滚动失效与 Jenkins 图标本地化
- ScrollArea 增加 min-h-0,修复 flex 子项不收缩导致导航超屏无法滚动
- Jenkins 品牌图标替换 simple-icons 单色红为仓库本地官方多色 SVG
2026-09-14 15:27:54 +08:00
Logan.Li e0cc547c8b fix(dashboard): 资源趋势图移除随机模拟数据
- 无主机/无指标时不再用 Math.random 生成假曲线,改为空状态提示
- 移除随之不再使用的 avgCpu/avgMemory props,新增中英文 noData 文案
2026-09-14 15:27:54 +08:00
Logan.Li 1ac0a34717 feat(frontend): 401 redirect 回跳与启动期诊断输出
- 401 统一携带 redirect 跳登录,登录成功后回到原页面(防开放跳转校验)
- 并发 401 只清理会话并跳转一次
- 开发环境输出 [HTTP] 请求日志,新增 bootLog 启动横幅(API Base/Domain/Mode)
2026-09-14 15:27:54 +08:00
Logan.Li 373c1c359f fix(run.sh): dev 模式显式加载根目录 config.yaml
- 后端从 backend/ 目录启动时读不到根目录配置,落到默认 release 配置
- 启动命令追加 --config 指向项目根 config.yaml,确认 mode=local 生效
2026-09-14 15:27:54 +08:00
Logan.Li 52e93316a7 fix(frontend): 修复提示不可见导致"保存没反应"
useToast 曾是只写局部 state 的 stub,返回的 toasts 数组无任何页面渲染,
而全局仅挂载 sonner 的 <Toaster />,导致 31 个组件的操作提示全部隐形
(用户表现为"点击保存没反应",实际请求已成功到达后端)。

- use-toast.tsx: useToast 统一转发到 sonner,保持返回值结构兼容
- ProfilePage.tsx: 密码修改去掉静默 return,校验失败给出明确提示;
  保存按钮改为始终可点,保证点击必有反馈

// Logan.Li
2026-09-14 02:13:34 +00:00
Logan.LiandCursor 4658812876 feat: 增加资产主机详情抽屉并统一终端窗口壳
服务器列表可从右侧查看规格、迷你曲线和进程 TOP;SSH 与审计终端改为 macOS 风格标题栏。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 09:43:20 +08:00
Logan.LiandCursor 2fd1624bec feat: 加固 Agent CLI 执行边界并更新模型目录
收紧 SSH 命令护栏、权限校验与远程执行会话,并同步主流大模型供应商列表。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 09:43:14 +08:00
Logan.Li 67660ae1d6 docs: 完成源码统一验收记录
- 记录远程分支和三端源码一致性结果
- 记录构建、迁移与生产健康检查结果
2026-08-05 20:26:33 +08:00
Logan.Li fe07598039 fix: 修复整合后的前端类型契约
- 补齐账单币种与公共组件类型导出
- 修复 LDAP 和主机监控拆分组件类型
- 删除无后端接口且未引用的旧凭证弹窗
2026-08-05 20:18:48 +08:00
Logan.Li a0edab6569 chore: 移除误提交的依赖目录链接
- 删除 frontend/node_modules 符号链接
- 保持依赖目录由 .gitignore 排除
2026-08-05 20:05:42 +08:00
Logan.Li fd60361d93 chore: 统一本地服务器与远程仓库源码
- 合并 main 与 master 历史并以服务器结构为基线
- 保留迁移、数据保留、AWS 账单与部署安全能力
- 建立 SDD 规格和 CI 验证闭环
2026-08-05 20:03:25 +08:00
Logan.Li f22e575124 fix: 提供 SQLite 迁移故障恢复开关 2026-07-30 23:49:38 +08:00
Logan.Li 99b5d94dc2 fix: 编码套餐默认启用深度推理
- 区分编码套餐与模型推理概念
- 编码套餐切换时默认开启深度推理
- 更新中英文提示文案
2026-07-30 23:35:00 +08:00
Logan.Li 4c02d7d352 fix: 完善大模型供应商下拉
- 移除当前协议不兼容的 Perplexity 预设
- 限制供应商与模型列表高度并支持滚动
2026-07-30 22:25:18 +08:00
Logan.Li d8b124fc7c feat: 更新主流大模型供应商目录
- 按云服务、Coding Plan、API 网关和本地模型分组

- 新增兼容模型发现与供应商协议校验
2026-07-30 21:34:33 +08:00
Logan.Li 01e4435f29 fix: 更新多云账单同步说明
- 展示当前支持的五个云厂商
- 统一多云出账时效与只读权限提示
2026-07-29 06:51:05 +08:00
Logan.Li 9b895efee3 fix: 完善多云同步验证与实例统计
- 修复华为云签名、账单字段与区域映射缓存
- 按真实云实例更新账号服务器数并补充并发测试
2026-07-29 06:35:54 +08:00
Logan.Li 132fe9ba97 feat: 补全多云资产与账单同步
- 接入 AWS、华为云和 Azure 资产及账单 API

- 按原始币种隔离统计并修正账号服务器数

- 修复侧栏菜单展开后的滚动行为
2026-07-29 06:15:00 +08:00
Logan.Li 65e2f09b97 fix: 按业务时区同步昨日账单
- 固定按 Asia/Shanghai 计算账单昨日日期

- 补充 UTC 服务器时区回归测试
2026-07-29 05:57:07 +08:00
Logan.Li dd3770a66c fix: 恢复腾讯云账单同步并完善成本预测
- 接入腾讯云单日账单、全局限频和指数退避

- 修正月末费用预测并增加账期提示和费用归因

- 补充腾讯云限频及账单归因回归测试
2026-07-29 05:44:40 +08:00
Logan.Li 88c41f0b2b fix: 恢复腾讯云主机发现 2026-07-27 17:09:25 +08:00
Logan.Li e831ec2eb1 fix: 统一 Agent 在线状态时区 2026-07-27 16:32:17 +08:00
Logan.Li e557782176 fix: 修复 Agent 状态与监控大屏 2026-07-27 15:56:03 +08:00
Logan.Li 83662487cb fix: 接通服务器V2排序链路
- 将排序参数从V2 Handler传递至Service与Repository

- 增加仓储分页排序与参数白名单测试
2026-07-26 23:38:06 +08:00
Logan.Li 09e6271bb4 feat: 支持服务器主机名排序
- 服务器列表默认按主机名升序并支持表头切换

- 后端按白名单排序并区分分页缓存键
2026-07-26 23:21:10 +08:00
Logan.Li 6b5fc6a5c3 fix: 双层捕获并去重转发Escape
- Radix与终端容器共同覆盖Escape事件路径
- 对同一次按键去重后仅发送一个控制字符
2026-07-26 19:22:21 +08:00
Logan.Li 82d1b8de10 fix: 在终端容器捕获Escape按键
- 在xterm容器捕获阶段转发Escape控制字符
- 阻止Radix与xterm继续重复处理同一事件
2026-07-26 19:09:18 +08:00
Logan.Li 57e51ba1cd fix: 从xterm直接转发Escape按键
- 在xterm自定义键处理器中发送Vim Escape控制字符
- Radix弹框仅负责阻止Escape关闭窗口
2026-07-26 18:45:36 +08:00
Logan.Li d666840ed0 fix: 修复SSH终端Escape按键
- 将弹框捕获的Escape控制字符直接转发到远端
- 阻止xterm对同一次Escape事件重复发送
2026-07-26 18:21:55 +08:00
Logan.Li 82b53c043b fix: 修复SSH终端还原布局溢出
- 约束xterm容器最小宽度并隐藏旧画布溢出
- 在布局绘制前同步终端与远端PTY尺寸
2026-07-26 18:03:33 +08:00
Logan.Li 198139648d fix: 修复RDP最大化画面模糊
- 最大化时按浏览器可用尺寸重建RDP会话
- 隔离分辨率切换过程中的旧连接事件
2026-07-26 17:26:07 +08:00
Logan.Li 7a1680884d fix: 压缩RDP实时画面传输
- 将原始RGBA位图压缩为PNG后通过WebSocket发送
- 降低低带宽代理链路下的RDP首帧延迟
- 增加位图压缩与异常数据测试
2026-07-25 17:39:14 +08:00
Logan.Li 699560a270 fix: 完善Agent系统信息上报
- 持续上报系统元数据并动态更新运行时长
- 兼容旧版心跳补齐资产运行时长
- 修复监控指标当前值重复显示单位
2026-07-25 17:14:55 +08:00
Logan.Li 0c7c63017c docs: 更新腾讯云账单同步提示
- 标明阿里云与腾讯云均支持账单同步
- 补充腾讯云DescribeBillDetail权限说明
2026-07-25 16:41:19 +08:00
Logan.Li 3a3f77ea62 fix: 优化腾讯云账单同步限频
- 全局限制腾讯云API调用频率为每秒4次以内
- 对RequestLimitExceeded增加指数退避重试
- 补充限频回归测试并更新账单同步支持说明
2026-07-25 16:36:02 +08:00
Logan.Li 7bc416d22a fix: 修复Agent指标时区查询
- 统一Agent报告存储与查询的UTC时间边界
- 修复监控大屏、历史图表及离线判断取不到最新数据
- 增加UTC与UTC+8场景回归测试
2026-07-25 16:17:47 +08:00