需求:监控接口返回的数据本身是否变化(如 Cloudflare ips-v4 的 IP 段清单), 而不是只看服务是否可用。两者是不同的问题:服务 200 OK 但内容变了,拨测发现不了。 后端 - SiteTask 新增 content_check_mode(off/text/json)、content_paths(JSONPath)、 content_ignore_rules、content_min_length、content_confirm_times、content_sort_lines - 新增 monitor_site_baselines(基线多版本)与 monitor_site_content_changes(变更记录) - pkg/siteprobe/content.go:零依赖 JSONPath($.a.b[0]、$.a[*].b)、文本/JSON 规范化、 sha256 哈希、LCS 行级 diff、字段级 diff - 核心判定区分「采集异常」与「内容变更」:状态码非 2xx、空响应、短于最小长度、 非合法 JSON 均不算变更,避免 CDN 拦截页造成误报 - 连续 N 次(默认 2)不一致才落变更记录,抑制抖动 - 基线首次自动建立(用户选择自动接受),之后变更需人工「接受为新基线」并留审计 - 补齐历史遗留死字段:expected_content(正则断言)与 expected_length 此前 只有表结构、执行器从未校验,现已实现 - 告警引擎新增 content_changed 指标,人工处理后自动恢复 - 迁移 0006 用 AutoMigrate 实现幂等(空库 0000 已建表,静态 ALTER 会重复列) 前端 - 任务表单新增内容监控配置区(模式/JSONPath/忽略规则/最小长度/确认次数/排序) - 详情页新增内容监控面板:当前基线、待确认变更、并排 diff、版本历史、 接受/忽略操作 验证 - 9 项单元测试(JSONPath、时间戳忽略、顺序无关、采集异常、字段级监控、diff) - 端到端:Cloudflare ips-v4 建基线 v1 → 模拟变更 → 第 2 轮告警 → 接受为 v2 - JSON 模式实测快照仅含指定字段:{"$.db_driver":"mysql","$.version":"v1.0.2"} // Logan.Li
- 工具配置:新增卸载 API/UI、Go 工具链、流水线构建自动安装依赖 - 修复 ListTools VerifyTool 递归栈溢出导致获取工具配置失败 - Node.js Alpine 安装改用 unofficial-builds musl 预编译包与 index.json 解析 LTS - 站点拨测:详情页路由、告警自动恢复、并发拨测与默认可观测频率 - 日志中心:RBAC、查询构建器、ES/Loki 增强与审计 request/response 展示 - 发布配置:构建节点、流水线远程执行、Deploy RBAC 导航拆分
告警中心 - 新增统一告警(alert_unified)、监控告警规则(monitor_alert_rule)、指标目录(alert_metric_catalog) - 通知策略与消息分发(alert_notify_policy/dispatch/message)、静默规则 - 告警引擎按阈值/SNMP 拆分(alert_engine_monitor/snmp) 监控采集 - SNMP 常量/模板与历史指标(snmp templates/constants、snmp_metrics_history、snmp_collect) - 中间件监控 Redis 采集与种子(middleware_monitor_redis/seed) - 站点探测 pkg(siteprobe) + 站点视图(site_view) 自动化任务 - cron 调度器(cronscheduler)、脚本运行器(scriptrunner)、系统任务(systask)及运行记录(cron_job_run、system_task) 审计与凭证 - 审计设置(audit_setting) + 历史清理(auditcleaner) 前端 - 监控页面(host/middleware/site/snmp)拆分为子模块并大屏化 - 告警中心多 Tab(规则/指标目录/通知策略/静默)、任务管理组件重构、Agent CLI Markdown 渲染 - 移除旧脚本卡片/详情/日志组件,统一为 ScriptTable/ScriptCodeEditor/TerminalOutput Co-Authored-By: Claude <noreply@anthropic.com>