290 Commits
Author SHA1 Message Date
dushixiang efa505f378 feat(web): support batch traffic stats configuration 2026-08-27 21:24:19 +08:00
dushixiang 14a48f81a4 feat: support disabling agents 2026-08-26 20:24:17 +08:00
dushixiang a4ec00b47e 支持 agent 拖动排序 2026-08-26 20:06:20 +08:00
dushixiang 29582f9124 feat: 支持 Telegram 代理和自定义反代 2026-08-24 00:14:07 +08:00
dushixiang d0a5f304a0 feat: 增加每日计划维护免告警时段 2026-08-24 00:04:32 +08:00
dushixiang 4687cf7fc5 feat: 增加机器到期分级提醒 2026-08-23 23:24:33 +08:00
dushixiang 7603906c36 refactor: 优化探针详情页与流量统计页
- 探针详情: /admin/agents 前缀匹配宽屏布局;状态并入页头,返回列表改为名称旁小字链接,编辑探针移至页头右侧;基本信息/流量/防篡改/SSH 配置去卡片嵌套,内容扁平化
- 流量统计: 重构页面布局,配置与使用情况分栏;流量限额支持 GB/TB 单位切换与自动适配(后端字节存储无需改动);限额输入与单位下拉组合;使用情况改为卡片呈现
2026-08-23 20:32:56 +08:00
dushixiang 6c8d2f13d3 feat: 告警规则实体化与服务监控按标签选探针
- 告警规则:独立实体(alert_rules 表),按优先级命中第一条生效;支持三种主机目标(全部/按主机/按标签)、7 类阈值、事件通知开关、IP 打码、推送渠道选择;未命中规则的主机不产生告警;列表支持外置启停
- 服务监控:新增按标签选择探针,与指定探针取并集,均为空时全部探针执行
- 公网 IP 采集:范围支持全部探针/按探针/按标签,兼容历史 custom 取值
- 告警历史:新增规则归属列;评估链路(指标/证书/服务下线/探针离线/到期提醒/事件通知)全部按主机命中规则驱动
- 设置页:左侧菜单改为浅色卡片容器并优化对比度,通知渠道移至公网 IP 采集之后;主菜单宽度调整为 240px
2026-08-23 19:53:35 +08:00
dushixiang c730873be3 refactor: 优化设置页面布局与样式
- 设置页全宽对齐其他页面,左侧分类导航去卡片化并支持桌面端吸顶
- 通知渠道改为「渠道列表 + 配置区」布局,支持未保存提醒与校验失败自动跳转
- 系统配置/公网IP采集/告警规则页去嵌套卡片,改为平铺分区(SettingsSection)
- 主题管理页上传按钮与警告提示合并为一行
- 调整全部页面的小布局问题
2026-08-23 16:35:19 +08:00
dushixiang 45284d31c6 优化重构管理页面 2026-08-12 22:55:45 +08:00
dushixiang 435245d639 优化重构管理页面 2026-08-12 22:55:36 +08:00
dushixiang ef34036bc0 fix: proxy public pages in admin dev server 2026-08-12 20:49:40 +08:00
dushixiang 33920265e0 refactor: improve theme settings layout 2026-08-12 20:35:10 +08:00
dushixiang acf3b6b57f refactor: split default theme into standalone repository 2026-08-12 20:00:48 +08:00
dushixiang 6ab1876899 refactor(admin): remove window globals, move AdminLayout to layouts/
运行时配置不再通过 window.PikaRuntime/window.SystemConfig 全局变量传递:
- 删除 global.d.ts 和 main.tsx 的预加载逻辑,直接渲染
- 新增 api/runtime.ts:useRuntimeConfig hook 通过 React Query 从 /api/config 获取
- Header/Sider/Login 改用 useRuntimeConfig 替代 window.SystemConfig
- ColorModeContext 改用 useRuntimeConfig 替代 window.PikaRuntime
- SystemConfig 保存后 invalidate runtime-config 缓存

AdminLayout 从 pages/ 移到 layouts/(布局框架不是页面)。
删除 components/index.ts(多余的 barrel export),PageHeader 改为直接导入。
2026-08-09 23:40:04 +08:00
dushixiang cda2585f1a refactor(admin): inline bootstrap.tsx into main.tsx
bootstrap.tsx 只有 3 个小函数,不值得单独文件。
合并到 main.tsx:运行时配置加载 + fallback + createRoot 全在一个文件里。
2026-08-09 23:26:55 +08:00
dushixiang ab95b57139 refactor(admin): remove redundant src/admin/ directory layer
src/ 下全是管理后台代码,不需要再套一层 admin/。
将 admin/{pages,components,assets} 提升到 src/ 下:
- src/admin/pages/ → src/pages/
- src/admin/components/ → src/components/
- src/admin/assets/ → src/assets/

所有 @admin/ import 改为 @/,删除 @admin alias 和 tsconfig 路径映射。
2026-08-09 23:25:36 +08:00
dushixiang 88224e3a8c chore: remove tracked yarn.lock 2026-08-09 23:20:42 +08:00
dushixiang 9a98f0a228 chore: ignore yarn.lock (project uses npm) 2026-08-09 23:20:28 +08:00
dushixiang b1a3d3d938 refactor(admin): remove shadcn/radix, split AdminLayout
移除 shadcn/ui 残留,统一到 antd 单一 UI 栈:

- 删除 components/ui/button.tsx 和 scroll-area.tsx(死代码,零引用)
- 删除 components.json(shadcn 配置)
- package.json 移除 @radix-ui/react-scroll-area、@radix-ui/react-slot、
  class-variance-authority 三个依赖
- AdminLayout 的 Radix ScrollArea 替换为 CSS overflow + thin-scrollbar 样式

拆分 AdminLayout(380行单文件 → 6个文件):
- menu.tsx: 菜单配置数据
- useThemeToggle.ts: 主题切换 + View Transition 动画
- Header.tsx: 顶部栏(logo/系统名/公共页面/主题切换/用户菜单)
- Sider.tsx: PC 侧边栏(菜单导航 + 版本信息)
- MobileNav.tsx: 移动端底部导航(修复 grid-cols-5 截断 7 项的 bug → 横向滚动)
- index.tsx: 布局壳

修复:useEffect 不再依赖 location(避免每次路由切换都重新请求版本接口)
删除遗留的 App.css
2026-08-09 23:18:11 +08:00
dushixiang 62a0f28b21 refactor: remove assemble scripts, build directly to final dirs
去掉 .dist 中间层和组装脚本,admin 和 portal 各自直接构建到最终目录:

- admin 构建到 web/dist/admin/(后端直接读取)
- portal 构建到 portal/dist/(后端默认主题从此目录读取)
- 删除 web/scripts/(assemble-web.mjs + verify-dist.mjs)
- Makefile build-web 不再调用组装/校验脚本
- 后端 defaultThemeDir 从 web/dist/default-theme 改为 portal
2026-08-09 23:05:07 +08:00
dushixiang 1dd07117a3 refactor: move portal to repo root, merge admin into web/
目录结构调整,为 portal 搬迁到独立仓库做准备:

- portal/ 从 web/portal/ 移到仓库根目录,完全自包含
- web/admin/ 内容合并到 web/ 根目录(admin 就是主仓库的前端)
- web/scripts/ 保留在主仓库(负责发布时组装 admin + portal 产物)
- admin 构建产物改为输出到 web/.dist,避免与最终 web/dist 冲突
- 更新 Makefile、assemble-web.mjs、paths.go、README 中的路径引用
2026-08-09 22:56:16 +08:00
dushixiang 1af64eccd9 refactor: simplify theme system to filesystem-only with self-contained portal
主题系统从带数据库/事务/repo 层/远程下载/配置管理/主题市场的重型架构,
彻底简化为纯文件系统操作:

后端:
- 主题数据全部存放在 data/themes/ 目录,不经过数据库
- 删除主题配置功能(managed/raw/redirect schema、配置存取 API、
  ThemeConfiguration model、theme_configurations 表、repo 层)
- 删除远程下载(URL 安装、GitHub Release 更新、SSRF 防护、SHA-256)
- 删除版本范围检查(semver 解析/比较/匹配、pikaVersion 校验)
- 删除主题市场
- ThemeService 不再持有 db,合并为 theme.go + theme_util.go 两个文件
- 主题类型从 models 包移到 service 包(非数据库模型)
- 保留:ZIP 上传解压(含目录穿越防护)、目录扫描列表、启用/删除、
  覆盖安装、默认主题回退、启动恢复、入口 HTML 渲染缓存

前端 portal(官方默认主题):
- 从 47 个碎片文件精简到 15 个,按标准目录组织
- 删除 theme-sdk 包,API 客户端和类型内联回 portal,完全自包含
- 按职责拆分:types.ts / api.ts / constants.ts / lib/utils.ts /
  contexts/ColorMode.tsx / hooks/index.ts / components.tsx / pages/
- 每个页面一个文件,图表和子组件内联,fork 二开只需看一个文件
2026-08-09 22:45:43 +08:00
dushixiang be4919508a 升级前端依赖 2026-07-12 21:54:16 +08:00
dushixiang a510cf3be7 fix: correct traffic stats period display 2026-07-12 21:04:11 +08:00
dushixiang ff06e1aecb fix: sort offline monitors last 2026-05-23 15:36:23 +08:00
dushixiang c8ef936a71 feat: add agent expire alerts 2026-05-23 15:32:46 +08:00
dushixiang d3690832f9 优化发布构建资源加载 2026-05-07 21:45:22 +08:00
dushixiang af50627d9b Adjust server list refresh interval 2026-05-07 21:10:13 +08:00
dushixiang f9e2de81ef fix: prevent agent version column collapse 2026-05-07 20:59:15 +08:00
dushixiangandClaude Opus 4.7 a6b70e33a9 修复网络连接图表 TS 编译错误,使用类型守卫替代不安全的类型断言
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:42:46 +08:00
dushixiangandClaude Opus 4.7 c431f300bc 新增实时监控模式,agent 1s 并行采集 + 前端滑动窗口
agent
- 移除 collector.interval 配置项;按指标类型内置节奏:cpu/memory/network/
  disk_io/gpu/network_connection 1s,temperature 5s,disk 30s,host 60s
- doCollectAndSend 改为并行执行本 tick 到期的采集器,避免串行累计耗时
  超过 1s 节奏;每个 goroutine 加 recover 兜底,单点 panic 不拖垮整 tick

server
- LatestMetrics 加 sync.RWMutex + Update/Snapshot 方法,HandleMetricData
  所有写入走 Update;GetLatestMetrics 返回 Snapshot,handler 在副本上
  sanitize,修复 marshal 时与 ws 写入的 data race(go test -race 验证)
- HandleMetricData defer Set 缓存项,每次上报刷新 TTL;host case 也走
  Update,不再 1 小时后失效
- LatestMetrics.Timestamp 用服务端 time.Now(),agent 时钟倒拨不会冻结
  前端实时图;Timestamp/DiskIOSummary 字段补到 LatestMetrics
- AutoStep 新增 r ≤ 5m → 1s 档;timeRangeMilliseconds 加 2m

frontend
- 详情页加"实时"档位(默认),1s 拉 latestMetrics + 1m 历史播种 + 滑动
  2 分钟窗口;快图表(CPU/Memory/Network/DiskIO/NetworkConnection)走
  useLiveBuffer 追加,慢图表(GPU/Temperature/Monitor)保留 refetch
- useLiveBuffer:seed 不再覆盖已追加的 livePoint;resetKey 处理切网卡 /
  切 agent 时的语义复位
- formatChartTime live 档位精确到秒;修复 1d/24h 仅显示 HH:mm 跨夜歧义
- 慢图表用 React.memo,阻断 1Hz 节奏的级联重渲染
- GpuChart 修复 utilization/temperature 时间戳错位时温度点丢失

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:18:50 +08:00
dushixiang 29d8b3e9cf 调整指标数据使用 max 聚合,避免消峰 2026-05-05 17:09:26 +08:00
dushixiang 77967a37cd 修复告警记录间隔不对的问题 2026-05-05 16:25:16 +08:00
yumusb 47c9a515a2 feat: 支持短UUID访问服务器详情,前端默认使用短链接
- 后端支持通过UUID前缀(第一段)匹配探针,保留完整UUID兼容
- 注册时自动检测短ID前缀冲突,冲突时分配新UUID
- 前端列表和卡片默认链接到短UUID(前8位)
2026-04-30 14:10:39 +08:00
yumusb 9c113a0bab feat: 通信密钥管理页面增加部署指南入口
- 在 PageHeader 添加"部署指南"按钮
- 点击跳转到探针一键安装页面
- 使用 Terminal 图标,提升用户体验
2026-04-24 20:16:17 +08:00
yumusb f53f2caa91 feat: 探针部署页面增加创建通信密钥按钮
- 一键安装和手动安装页面均添加"创建密钥"按钮
- 点击按钮直接弹出创建通信密钥弹窗,无需跳转
- 创建成功后自动选中新密钥并刷新密钥列表
- 创建完成后显示成功提示和完整密钥值
- 优化密钥选择区域布局,按钮和标题并排显示
2026-04-24 19:27:27 +08:00
yumusb 242d2690c2 fix: 修复安装页面体验问题
- 服务端地址和自定义名称改为受控 Input,输入即更新安装命令
- 服务端地址保存增加独立"保存"按钮和 loading 状态
- 通信密钥入口链接改为 react-router Link,避免整页刷新
- 复制密钥按钮增加行级 loading 状态,防止重复点击
2026-04-24 19:20:28 +08:00
yumusb 89b5dbf2d5 fix: 修复服务监控列表右侧留白 2026-04-24 19:11:13 +08:00
yumusb 951b19edeb fix: 管理后台认证失效时跳转登录 2026-04-24 18:45:02 +08:00
yumusb 9ff0d2acc1 feat: 添加通信密钥与管理 API Key 前端管理 2026-04-24 18:45:01 +08:00
yumusbandClaude Opus 4.6 d56251a4e7 fix: 移除会话失效时强制跳转登录页的行为
前端在检测到 401 或本地无 token 时不再自动跳转到 /login,
改为仅清理本地缓存并抛出错误,由调用方自行决定后续行为。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 20:38:11 +08:00
yumusb b504a704a6 Update CyberCard.tsx 2026-04-10 21:21:59 +08:00
yumusbandClaude Opus 4.6 9c1752bb4d fix: 删除探针时清理内存缓存中的监控数据
删除探针时只清理了 VictoriaMetrics 时序数据,但没有清理内存中的监控缓存,
导致监控页面显示已删除探针的 agent_id (hash) 作为名称。

- 新增 CleanAgentFromMonitorCache 方法遍历清理监控缓存
- 新增 DeleteAgentLatestMetricsCache 方法清理探针指标缓存
- DeleteAgent 删除探针时增加清理内存缓存步骤
- CleanOrphanedAgentMetrics 手动清理时也清理内存缓存
- 前端隐藏"清理残留指标数据"按钮(已自动清理无需手动操作)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 16:14:04 +08:00
yumusbandClaude Opus 4.6 d4a42c6f22 feat: 优化前端 UI 交互
- 添加操作加载状态
- 表格支持水平滚动
- 优化多个页面组件展示

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 12:53:21 +08:00
yumusbandClaude Opus 4.6 85a55af6a5 feat: 优化监控图表展示
- 增强 MonitorChart 组件功能和样式
- 优化 ResponseTimeChart 图表显示
- 添加可选择图例功能
- 统一图表插值和 connectNulls 配置
- 优化 MiniChart 和 MonitorCard 展示

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 12:53:04 +08:00
yumusb fd452e56d8 增加测试镜像、增加删除残留数据。 2026-04-08 20:24:03 +08:00
dushixiang 6ba52a1850 修复告警恢复当前值不正确的问题 2026-02-25 15:13:41 +08:00
dushixiang d40fc1314f 1. 修改注册探针的服务端地址为手动填写
2. 优化 Linux 系统服务模板
3. 优化首页流量展示方式
2026-02-10 19:56:46 +08:00
dushixiang 69a6c3b453 优化 DDNS 的列表操作按钮 2026-02-07 16:00:43 +08:00