⚡
PushNova 终端推送控制台 v3.2 Edge
今日: 0 / 剩余: 1,000
🛠️ 运维监控 📖 接口手册
NP
▾

📱 手机分类治理与拖拽看板

直接拖拽手机卡片到目标群组即可完成分类,每个群组已自动绑定广播 Topic,操作即时生效。

📲 手机终端注册与绑定

将 Android 客户端生成的设备专属 Token 录入控制台,登记型号即可自动匹配品牌徽标,并分配业务群组。

已登记纳管的手机设备台账 共 0 台
品牌与设备型号 设备备注名称 所属业务群组 设备专属 Token 最后在线 操作

📁 群组与广播频道管理

手机归属于群组,一个频道可以包含多个群组,一个群组可以加入多个频道。所有选择频道处均为下拉框,发信按频道群发直达全部组内手机。

🔍
已选 0 个群组
设备群组列表 (Groups) 0 个群组

所有手机均属于具体的业务群组。每个群组可订阅加入多个广播频道。

加载中...
📢 广播频道与群组订阅 (Topic) 0 个频道

一个频道可聚合多个业务群组。向频道发送推送时,该频道下所有群组旗下的手机都将同时接收到消息。

各频道包含群组清单
加载中...

🚀 消息推送与群发测试台

支持按业务群组一键群发、单机单播直连、频道广播或全员广播;内置 12 种通知模式(HITL / 进度 / 富文本 / 指标 / Diff / 风暴折叠 / E2EE 等)。

自动扣减账号配额
快速开始
使用上方按钮切换受众,下方命中预估会实时更新。
🎯 正在估算命中终端…
审批与协作
报表与数据
告警与通知
安全与审查
⚙️ HITL 审批决策专有配置 超时: 120s
预置动作按钮: [APPROVE] 准许扩容 [REJECT] 驳回请求 [PARAM_OVERRIDE] 覆盖 / OTP

下方 JSON 由上方步骤实时生成;在此直接编辑会反向同步回表单字段。

📱 手机端动态卡片预览 ● 实时渲染
POST /v1/action/ack
PushNova Mobile OS 14.0 14:30 ⚡ 5G 100%
⚡
PushNova • 刚才
EMERGENCY
生产环境集群应急扩容审批
检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:
⚡ 真机联动已开启 — 点击上方按钮会写入真实 ACK 回执,并向你的回调地址发起 POST。
本次派发 POST /v1/dispatch
尚未派发 — 配置好目标后点击下方「立即派发推送」。
最近派发
    本次会话暂无派发记录
    💻 终端与自动化集成代码
    # 正在生成命令...
    💡 群发提示:JSON 中指定 "topic": "ops_alerts" 一条消息群发全频道;或传 "to_devices": ["tokenA","tokenB"] 指定名单推送;"group" 按群组定向。
    正在估算本次派发…
    配额按实际命中终端数扣减。

    📋 HITL 人机协同审批与 Webhook 回执

    配置移动端决策回调地址,实时记录运维人员在手机端点击【批准/拒绝】的双向回执流水与 HMAC-SHA256 验签状态。

    🔗 Webhook 回调配置与连通性验证
    HMAC-SHA256 签名

    当手机端用户在通知栏或 App 内点击决策按钮时(如准许/驳回),PushNova 将携带加密签名 POST 此 Webhook:

    接收端凭此 Secret 校验 X-PushNova-Signature

    密钥由平台按租户用 CSPRNG 自动生成(256-bit)。请填入你的回调接收端验签配置;疑似泄露请立即"重新生成"。

    双向审批闭环记录审计
    回执时间 通知 ID 审批操作 操作终端 附带附言 HMAC-SHA256 Webhook 应答
    暂无回执记录。手机端点击【准许/驳回】或测试 Ping 后在此实时回显。

    🔑 开发者 API Key 与账号配额

    用于脚本、自动化流水线以及后端服务在调用 /v1/dispatch 时的鉴权认证,并实时展示账号配额。

    👑 当前会员等级
    FREE
    到期: 永久免费
    🚀 今日已派发
    0
    配额: 1000 条/天
    📱 已绑定设备
    0
    跨群组纳管终端
    📢 活跃频道
    0
    广播 Topic 数
    本月配额用量 每月 1 日 00:00 重置配额 · 超出配额返回 429 保护
    本月已消耗: 0 条 月配额: 0 / 100,000 条

    升级为 PRO 专业版($49.99/月订阅)即可获得每月 100,000 条发送额度,最多支持 50 台设备。

    当前生效的生产发信凭据 ● 生效中 (Active)
    安全防范说明: API Key 具有您账号的最高发信权限。若不慎在公共代码仓库泄露,请点击「一键重置 API Key」,旧凭据即刻永久注销废弃,并派发全新随机密钥。所有旧脚本若未同步更新将收到 HTTP 401。
    🔐 账号安全与修改登录密码 自助修改

    💎 会员套餐与账单

    升级 PRO 专业版,每月 10 万条推送配额与优先路由节点,订单与支付流水安全保存、可随时查询。

    当前: FREE
    🧾 我的订阅
    加载中…
    💳 在线支付与不提供免费退款声明:
    本平台在线支付由 Creem (Creem.io) 作为法定记录商家(Merchant of Record)安全托管。PushNova PRO 会员套餐与发信加油包属于即时交付的数字化虚拟商品及网络计算资源。一旦支付完成且配额权益生效,严格不提供任何免费退款或冷静期退款。订购前请仔细审阅《服务条款》与《隐私政策》。
    🆓 免费版 (Free)
    $0 / 30 天全功能体验
    新注册用户享有 30 天全功能体验期,最多绑定 5 台手机,累计 1,000 条发送额度,到期后账号自动失效,需购买 PRO 或加油包继续使用。
    • ✔ 30 天全功能体验期(到期自动失效)
    • ✔ 最多绑定 5 台手机设备
    • ✔ 累计 1,000 条推送总额度
    • ✔ 全部消息模式全功能可用
    • ✔ HITL 审批 + Webhook 回执
    🌱 Lite 轻量版
    $4.99 / 月
    月度订阅 · 每月 10,000 条发送额度(每月自动重置)· 最多 10 台设备 · 随时取消。
    • ✔ 每月 10,000 条发信额度(自然月自动重置)
    • ✔ 最多 10 台手机设备
    • ✔ $4.99/月 · 随时取消
    • ✔ 全部 12 种消息模式
    • ✔ HITL 审批 + Webhook 回执
    ⚡ 加油包
    🚀 信息流量加油包
    $29.99 / 10 万条
    每 $29.99 增添 10 万条发送额度,有效期 90 天。免费或 PRO 月额度用尽后自动启用,支持叠加充值。
    • ✔ 额外 100,000 条信息发送配额
    • ✔ 单次购买有效期 90 天
    • ✔ 免费 / PRO 额度耗尽后无缝启用
    • ✔ 支持多次叠加充值与自动延期
    🏢 需要 50 台以上设备?
    联系我们获取企业定制方案:无限设备数量、自定义消息额度、专属 SLA 支持与批量价格折扣。
    📧 联系企业销售
    enterprise@pushnova.com
    订单与支付流水
    订单号 套餐 金额 渠道 状态 交易号 创建时间 操作
    暂无订单记录。

    🧾 我的订阅

    当前套餐、续费信息与账单记录,一目了然。

    加载中…

    📥 PushNova Android 客户端安装包

    下载最新编译好的生产级 Android APK,在手机上安装后即可接收端到端加密通知与审批交互。

    📱

    PushNova Android 客户端 (Release 生产发布版)

    v3.2 Official

    构建变体: Release 生产正式版 (PushNova-latest.apk · 约 23.3 MB)
    内置 P-256 ECIES 端到端加密(身份私钥托管于 Android Keystore)、实时离线拉取队列与 Material 3 审批组件。

    手机安装后使用说明:

    1. 在手机上安装并打开 PushNova App,允许「通知权限」;
    2. 在 App 中进入「设置 → 设备 Token」,复制显示的「本机专属设备 Token」(以 pn_tok_live_... 开头);
    3. 将该 Token 复制到本控制台左侧「注册绑定新手机」中进行录入登记;
    4. 录入完成后,直接在「手机分类与拖拽看板」中将手机拖动到对应业务群组即可开始接收通知!

    🛠️ PushNova Ops · Linux 服务器运维监控智能套件

    轻量纯 Shell 打造 · 0 额外运行时依赖 · 26 项全景健康指标 · 毫秒级多语言移动端告警推送 · Cron 与 Systemd 双调度引擎

    ⭐️ GitHub 源码
    ⚡

    极致轻量 · 0 外部依赖

    全套纯 POSIX Shell + coreutils 编写,无需安装 Python、Node.js 或 Go 等繁重运行时环境,内存开销近乎为 0,任何 Linux 服务器一键即跑。

    📊

    26 项全谱系健康指标

    全方位覆盖系统负载、CPU/内存/磁盘使用率、TCP 连接数、Docker/Podman 容器、TLS 证书有效期、HTTP 状态码探针、Ping 延迟及时钟同步等。

    🔕

    告警风暴收敛与智能恢复

    具备冷却期静默机制与告警指纹去重(Fingerprint)。异常持续时自动折叠计数(xN),故障恢复后即刻下发绿色恢复卡片,拒绝告警轰炸。

    📱

    双语通知卡片与人机审批

    支持全中文与全英文双语卡片自动切换;提供纯文本、Markdown、结构化矩阵表格与趋势折线;支持手机端一键操作按钮与 Webhook 回调。

    🚀 一键极速安装与设置向导 在任意 Linux 终端中执行一键安装脚本,依照向导选择语言与填入 Token 即可完成全部配置。
    # 官方 GitHub 源一键安装 / Official GitHub Source
    curl -fsSL https://pushnova.ezcloud.ltd/ops/dl/install.sh | bash
    # 国内加速镜像源安装 (jsDelivr CDN) / Fast Mirror
    curl -fsSL https://cdn.jsdelivr.net/gh/netproxy/download@main/ops/install.sh | bash -s -- --mirror

    向导配置流程说明:

    1. 第一步 · 语言选择:支持选择英文(默认)或简体中文。若选择中文,后续交互、命令行提示以及发送到手机的通知均为中文;
    2. 第二步 · 发信凭据录入:输入本控制台左侧「发信 API Key 与配额」中获取的 API Key;
    3. 第三步 · 推送目标绑定:选择账号广播、频道主题或设备群组(若安装了 jq 向导将自动列出您当前已配置的频道与群组);
    4. 第四步 · 监控指标与定时:勾选关心的巡检指标并一键配置 Cron / Systemd 定时任务,即可高枕无忧!
    💻 CLI 命令行速查与场景 通过 pushnova-ops 命令行直接执行巡检、检测、测试与管理。
    命令 功能描述 常用选项与示例
    pushnova-ops install 重新唤起交互式安装向导,支持步骤 1 选择中英双语 -y (非交互静默安装)
    pushnova-ops report 立即执行全量采集,并向移动设备推送今日巡检日报卡片 --template rich --dry-run
    pushnova-ops check 运行健康检查与阈值比对,仅在指标超标且未在静默期时告警 --force (强制发送)
    pushnova-ops test 发送一条测试推送通知卡片,验证终端接收与网络链路 --template test
    pushnova-ops doctor 全面诊断当前系统的工具链依赖、文件权限、网关连通性与配置 无参数直接执行
    pushnova-ops cron status 检查受 PushNova Ops 托管的定时巡检与告警调度任务状态 install | remove
    pushnova-ops config show 显示当前已生效的全部运维配置、推送目标及各项监控指标阈值 set KEY VAL
    📋 26 项系统监控指标总表 所有指标均通过 Linux 原生 /proc 及基础工具采集,开箱即用。
    指标分类 指标 ID 指标名称 单位 / 类型 监控重点说明
    核心资源 load 系统负载 · System Load (1m) - / 数值 1/5/15 分钟平均负载,告警阈值自动关联 CPU 核数
    cpu CPU 使用率 · CPU Utilization % / 数值 采样 1 秒窗口的非空闲占比(默认告警阈值 80%/95%)
    mem 内存使用率 · Memory Usage % / 数值 基于 Linux 内核 MemAvailable 计算真实内存紧张度
    disk 磁盘使用率 · Disk Usage % / 数值 探测所有真实挂载点中的最高使用率,防爆盘
    inode inode 使用率 · Inode Usage % / 数值 防止小文件堆积导致 inode 耗尽引发写盘失败
    conn TCP 连接数 · TCP Connections - / 数值 ESTABLISHED + TIME_WAIT 连接总和,防连接池泄漏
    可用性与网络 http HTTP 可用性 · HTTP Availability - / 状态 探测关键 API 探针,5xx 或超时断开时即刻告警
    http_latency HTTP 响应耗时 · HTTP Latency ms / 数值 所有探测 URL 中的最大响应耗时,防慢请求积压
    port 端口连通性 · Port Connectivity - / 状态 MySQL、Redis、Nginx 等关键服务端口连通探测
    ping 主机连通性 · Host Reachability - / 状态 网关或关键外部主机的 ICMP 丢包与连通探测
    安全与运维 cert TLS 证书有效期 · TLS Cert Days 天 / 数值 HTTPS 证书距离过期剩余天数,防止证书忘记续期
    service 关键服务存活 · Critical Services - / 状态 systemctl / openrc 守护服务存活(sshd, nginx 等)
    container 容器状态 · Container Status - / 状态 Docker / Podman 运行中与异常停止容器统计
    reboot 系统重启事件 · Reboot Event - / 状态 跟踪系统 boot_id,服务器发生意外重启时即刻报备

    📖 PushNova 开发者全景使用指南与接口手册

    边缘高可用中继网关 · P-256 ECIES 零知识端到端加密 · 人机协同 (HITL) 决策闭环 · 生产级集成权威规范

    🔍
    📌 第 1 章:系统体系架构与核心凭据

    PushNova 采用现代分布式轻量高可用设计。服务端部署于全球边缘网络(无服务器架构 + 分布式云数据库 + 高速缓存),移动客户端基于 Android Kotlin + Jetpack Compose 原生开发,支持 P-256 ECIES 端到端密文通信(身份私钥托管于 Android Keystore)。

    ⚡
    业务系统 / AI Agent / CI/CD 自动化 PRODUCER
    告警引擎、高频交易策略、Kubernetes Operator、GitHub Actions
    Authorization: Bearer <API_KEY>
    HTTPS POST /v1/dispatch (JSON Payload)
    ▼
    🌐
    Global Edge Relay (全球边缘中继集群) SERVERLESS
    毫秒级全球边缘分发 · 分布式云数据库 · 零延迟路由缓存 · 租户独立签名
    Cloud DB + Cache
    WebSocket 实时信道 / 高可用拉取队列
    ▼
    📱
    Android PushNova Native Client (移动物理终端) E2EE ZERO-KNOWLEDGE
    硬件隔离私钥 · 动态前台常驻保活 · HITL 触感震动反馈 · 秒级 Webhook 回执闭环
    Hardware Keystore
    🔑 核心凭据实体对照表
    凭据实体 格式范例 (点击可复制) 生成与持有者 核心作用与安全建议
    发信 API Key
    GATEWAY AUTH
    pn_ak_live_a1b2c3d4... 📋 控制台「发信 API Key 与配额」自主创建 服务鉴权凭证。用于系统调用 HTTP API 时的身份凭据,请存放在服务器环境变量或 KMS 中,切勿泄露于前端代码。
    设备 Token
    DEVICE ADDR
    pn_tok_live_sec99a74b12c8e3f 📋 Android 客户端安装后硬件指纹哈希生成 物理设备的全局唯一路由地址。模拟器提供固定调试 Token,真实物理机由硬件设备指纹生成。
    业务群组 (Group)
    ORGANIZATION
    🚀 核心运维组 (SRE) 控制台管理员统一创建与维护 设备集合归属。一台手机仅可归属于一个群组;群组可同时加入并订阅多个不同广播频道。
    广播频道 (Topic)
    BROADCAST
    #ops_alerts #quant_signals 控制台统一登记与分配 多对多多播分发管道。一个频道可以订阅多个群组;推送到频道时,该频道下所有群组的手机均同步推送。
    🛡️ 第 2 章:人机协同决策 (HITL) 与 action.style 深度规范

    人机在环决策 (Human-in-the-Loop, HITL) 是 PushNova 的旗舰级创新特性。专为 AI Agent 自主决策审核、生产集群扩容、金融高频交易风控跟单等高风险场景设计。系统不仅向 Android 客户端推送通知,还在通知栏与应用锁屏界面呈现带有明确色彩语义的交互操作按钮。操作者点击按钮后,手机客户端通过非对称签名秒级将审批决策回传至您的业务后端。

    生产环境集群扩容审批典型 Payload 结构
    POST /v1/dispatch · Application/json (HITL Pipeline)
    {
      "title": "生产环境集群应急扩容审批",
      "message": "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
      "type": "HITL",
      "id": "hitl_k8s_scale_01",
      "priority": "EMERGENCY",
      "timeout_seconds": 120,
      "actions": [
        {
          "key": "APPROVE",
          "label": "准许扩容",
          "style": "PRIMARY"
        },
        {
          "key": "REJECT",
          "label": "驳回请求",
          "style": "DESTRUCTIVE"
        }
      ],
      "callback_url": "https://samplecallback.ezcloud.ltd/v1//callback",
      "to": "pn_tok_live_sec99a74b12c8e3f"
    }
    actions[].style 视觉语义与交互规范详解

    为了确保运维与审批人员在紧急情况下(如半夜突发告警或高压时刻)不发生误触,PushNova 的 Android 原生客户端与 Web 端遵循严谨的视觉人机工学 (Cognitive Ergonomics) 对不同 style 进行了视觉区隔:

    Style 枚举值 视觉渲染效果 设计意图与人机心理学 适用场景举例
    PRIMARY 主推/确认色
    背景色: #0284c7 (亮蓝)
    文字: 白色粗体,高亮圆角卡片
    正向引导。代表建议用户执行的常规审批流程或预设期望动作。具有最高视觉权重与注意力捕捉能力。 准许扩容、同意发布、放行资金划转、确认双因素登录、接受授权
    DESTRUCTIVE 警示/破坏色
    背景色: #ef4444 (高警戒红)
    文字: 白色粗体,震动强反馈
    危险拦截。强烈警示该动作具有破坏性、不可逆性或阻断性。在 Android 客户端点击时触发重触感震动反馈以防误触。 驳回请求、紧急熔断停机、阻断黑客 IP、撤销交易挂单、注销凭证
    SECONDARY 次要/辅助色
    背景色: #f1f5f9 (浅灰)
    边框: #cbd5e1, 文字: 深灰
    低频中性操作。视觉权重低于 PRIMARY 与 DESTRUCTIVE,表示可选的中间状态或延迟决策。 稍后提醒、转交他人审批、查看监控明细看板、暂缓执行
    DEFAULT 中性文本按钮
    透明背景,带轻微底纹轮廓
    轻量退出或忽略。不带有强烈正向或负向的情感暗示。 已知晓、关闭通知、取消当前弹窗
    actions 完整字段定义与扩展特性
    参数字段 类型 必填 详细说明
    key String 是 操作的唯一键名(如 APPROVE、REJECT)。用户点击后,该 key 将作为 Webhook 回调中的 action_key 返回。
    label String 是 按钮显示的中文/英文标签文本(建议控制在 2-6 个汉字以内,如「准许扩容」、「驳回请求」)。
    style String 否 按钮视觉样式枚举,取值范围:PRIMARY | DESTRUCTIVE | SECONDARY | DEFAULT(默认值为 PRIMARY)。
    input_type String 否 若设置为 "TEXT",点击按钮时 Android 通知栏将弹出原生单行输入框,允许审批人附带文本备注(如驳回原因),随回调回传。
    超时与回执防伪签名机制
    • 超时倒计时 (timeout_seconds):指定审批有效时间(如 120 秒)。Android 客户端在收到通知后会在标题旁动态倒计时,超时后按钮自动禁用置灰,并可向 Webhook 发送 TIMEOUT 状态;
    • Webhook 回调地址 (callback_url):用户点击动作后,手机客户端与中继网关将向该地址发送 POST 请求;
    • HMAC-SHA256 防篡改签名:回调请求 Header 中附带 X-PushNova-Signature,服务端可通过您的 API Key 验签,杜绝假冒伪造。
    📋 第 3 章:推送调用接口 (/v1/dispatch) 参数全景规范

    POST https://pushnova.stream/v1/dispatch 是服务端向 Android 移动客户端分发消息的统一网关入口。

    请求头要求
    Content-Type: application/json Authorization: Bearer pn_ak_live_xxxxxxxxxxxxxxxxxxxx
    寻址优先级与目标分发逻辑

    PushNova 支持三种层级的寻址方式,网关将按照如下优先级进行解析分发:

    1. 最高优先级:单机直达 (to):直接指定手机唯一的 device_token,仅向该单台物理手机推送;
    2. 第二优先级:业务群组 (group):指定群组名称(如 "🚀 核心运维组 (SRE)"),网关将查找所有属于该组的手机并全员分发;
    3. 第三优先级:广播频道 (topic):指定频道标识(如 "ops_alerts"),网关将查找加入该频道的全部群组,并提取这些群组旗下的所有手机进行广播分发。
    完整字段参数对照表
    字段名称 类型 必填 详细定义与取值范例
    title String 是 通知标题,建议 30 字符以内,突出业务事件(如 "生产集群扩容审批")。
    message String 是 通知正文内容,支持换行排版与指标提炼。
    to String 三选一 目标手机的 Device Token,形如 pn_tok_live_sec99a74b12c8e3f。
    topic String 三选一 目标广播频道代号,形如 ops_alerts。
    group String 三选一 目标业务群组名称,形如 🚀 核心运维组 (SRE)。
    type String 否 通知渲染模式,默认 STANDARD。可选:HITL | RICH_MARKDOWN | ONGOING | METRIC | DIFF | STORM_FOLD | E2EE | KLINE | STRUCTURED_TABLE 等。
    priority String 否 推送优先级:DEFAULT | HIGH | EMERGENCY(紧急通知将绕过免打扰并在锁屏高亮悬浮展示)。
    actions Array 否 交互操作按钮数组,专用于 HITL 审批模式,见第 2 章说明。
    data Object 否 业务透传自定义键值对,客户端可通过通知点击意图获取该字典内容。
    callback_url String 否 Webhook 接收地址,操作完成后手机端与边缘网关向此 URL 发送回调。
    timeout_seconds Number 否 审批操作倒计时时长(秒),默认 120。
    sound String 否 提示音类型:default | alarm | radar | silent。
    📁 第 4 章:群组与频道架构及数据治理

    为了满足大型组织团队的协作管理需求,PushNova 在 v3.0 版本中升级了群组与频道的双向多对多拓扑治理体系:

    📢 顶层多播通道 · 广播频道 (Channels / Topics)
    #ops_alerts 生产告警
    分发至:核心运维组 + 安全风控组
    #security_audit 安全审计
    分发至:安全风控组 + 核心运维组
    双向多对多拓扑桥接 (Many-to-Many Subscription)
    ▼
    👥 设备聚合单元 · 业务群组 (Groups)
    🚀 核心运维组 (SRE)
    归属终端:小米14, Pixel 8
    #ops_alerts
    🛡️ 安全风控组 (SEC)
    归属终端:iPhone 15, Galaxy S24
    #security_audit
    📱 默认设备组 (Default)
    归属终端:备用测试机 1、2
    待分配订阅
    📱 物理设备终端通过唯一 device_token 稳定绑定至所属群组 ✔ 满足大规模企业安全多租户权限隔离
    三大核心原则
    • 原则一:所有手机必须属于一个业务群组。手机在注册时指定所属群组,亦可随时在「手机分类与拖拽看板」中拖动切换群组归属;
    • 原则二:一个频道可以包含多个群组。例如生产告警频道(ops_alerts)可同时包含「核心运维组」与「安全风控组」;
    • 原则三:一个群组可以加入多个频道。例如「核心运维组」可同时订阅「生产告警」和「系统探针心跳」两个频道;
    • 统一治理交互:在控制台各界面中,凡涉及频道选择的位置(发信测试台、群组绑定、订阅管理),全部提供规范的下拉选择框,自动展示群组数与手机数,避免拼写错误。
    📱 第 5 章:12 大通知模式全景对照与载荷结构
    通知模式 (type) 核心特征与视觉展现 典型业务载荷结构 (Payload JSON 片段)
    HITL
    人机在环审批
    包含带色彩语义(PRIMARY/DESTRUCTIVE)的原生审批按钮与倒计时。 "type": "HITL", "actions": [{"key":"APPROVE","label":"同意","style":"PRIMARY"}]
    RICH_MARKDOWN
    富文本排版
    支持代码高亮、表格、粗斜体及超链接,适合发布版本 Changelog 或长篇运维总结。 "type": "RICH_MARKDOWN", "message": "### 部署报告 - Pods: 10 - Status: OK"
    ONGOING
    长效常驻进度条
    通知栏常驻不消失,展示实时百分比进度条(0-100%),适合编译构建或文件传输。 "type": "ONGOING", "data": {"progress": 78, "status": "Building APK..."}
    METRIC
    核心指标仪表盘
    以大字号卡片呈现单项或组合 KPI 指标(如 QPS、延迟、营收),带涨跌色彩。 "type": "METRIC", "data": {"value": "98.7%", "delta": "+1.2%", "trend": "UP"}
    DIFF
    代码/配置比对
    红绿颜色高亮呈现配置或代码的增删改差异(Unified Diff 格式)。 "type": "DIFF", "message": "- replicas: 3 + replicas: 10"
    STORM_FOLD
    告警风暴智能折叠
    同一类别的重复报警自动收拢折叠在单条通知内,显示聚合条数,避免刷屏打扰。 "type": "STORM_FOLD", "data": {"collapse_key": "db_conn_err", "burst_count": 42}
    E2EE
    零知识端到端加密
    消息正文由发送方在本地基于设备 P-256 公钥(ECIES)加密为密文,中继节点不可见,终端用 Keystore 私钥解密呈现。 "type": "E2EE", "is_encrypted": true, "ciphertext": "PNV1.<eph SPKI b64url>.<iv b64url>.<ct||tag b64url>"
    KLINE
    金融高频 K 线图
    微型行情走势图表与挂单成交信息,适合量化策略突破与仓位变动提醒。 "type": "KLINE", "data": {"symbol": "BTC/USDT", "price": "68500", "change": "+3.4%"}
    STRUCTURED_TABLE
    结构化表格报表
    通知详情页渲染规范的二维数据矩阵,清晰呈现巡检清单或对账报表。 "type": "STRUCTURED_TABLE", "data": {"headers": ["节点","CPU"], "rows": [["node-1","45%"]]}
    STANDARD
    标准文字通知
    经典轻量系统级通知,支持标题、正文与自定义角标。 "type": "STANDARD", "title": "日常提醒", "message": "定时任务执行成功"
    💻 第 6 章:生产级多语言调用实战
    1. cURL 命令行极速调用
    curl -X POST "https://pushnova.stream/v1/dispatch"   -H "Content-Type: application/json"   -H "Authorization: Bearer pn_ak_live_simulator_demo"   -d '{
        "title": "生产环境集群应急扩容审批",
        "message": "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
        "type": "HITL",
        "priority": "EMERGENCY",
        "to": "pn_tok_live_sec99a74b12c8e3f",
        "actions": [
          {"key": "APPROVE", "label": "准许扩容", "style": "PRIMARY"},
          {"key": "REJECT", "label": "驳回请求", "style": "DESTRUCTIVE"}
        ],
        "callback_url": "https://samplecallback.ezcloud.ltd/v1//callback"
      }'
    2. Python (requests) 示例
    import requests
    
    url = "https://pushnova.stream/v1/dispatch"
    headers = {
        "Authorization": "Bearer pn_ak_live_simulator_demo",
        "Content-Type": "application/json"
    }
    payload = {
        "title": "生产环境集群应急扩容审批",
        "message": "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
        "type": "HITL",
        "priority": "EMERGENCY",
        "topic": "ops_alerts",  # 或使用 "to": "pn_tok_live_..."
        "actions": [
            {"key": "APPROVE", "label": "准许扩容", "style": "PRIMARY"},
            {"key": "REJECT", "label": "驳回请求", "style": "DESTRUCTIVE"}
        ],
        "callback_url": "https://your-server.com/api/hitl-callback",
        "timeout_seconds": 120
    }
    
    response = requests.post(url, json=payload, headers=headers)
    print("Response:", response.status_code, response.json())
    3. Node.js (Fetch) 示例
    const payload = {
      title: "生产环境集群应急扩容审批",
      message: "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
      type: "HITL",
      priority: "EMERGENCY",
      topic: "ops_alerts",
      actions: [
        { key: "APPROVE", label: "准许扩容", style: "PRIMARY" },
        { key: "REJECT", label: "驳回请求", style: "DESTRUCTIVE" }
      ],
      callback_url: "https://samplecallback.ezcloud.ltd/v1//callback"
    };
    
    const resp = await fetch("https://pushnova.stream/v1/dispatch", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer pn_ak_live_simulator_demo"
      },
      body: JSON.stringify(payload)
    });
    console.log(await resp.json());
    🪝 第 7 章:Webhook 回调闭环、搭建指引与自动化联动实战

    当用户在手机端点击决策按钮(如准许、驳回、紧急关机)后,PushNova 边缘网关完成移动端设备鉴权,并使用您专属的 Webhook 验签密钥 (pn_wh_...) 对回执进行 HMAC-SHA256 签名,随后毫秒级转发到您的接收端。

    1. 回调地址应该如何设置?

    PushNova 支持两种配置方式(三级自动回退):
    • 全局默认地址:在控制台左侧进入「HITL 人机协同 ➔ Webhook 回调配置」,填入您的默认接收端 URL(如 https://api.yourdomain.com/v1/callback),并在下方复制您的专属验签密钥 pn_wh_...;
    • 单次动态指定:在调用 /v1/dispatch 发信时,在 JSON 报文中指定 "callback_url": "https://...",该通知的决策将优先直达该地址。

    2. 网关转发的标准报文格式
    Headers: Content-Type: application/json X-PushNova-Signature: 3c8e9f2a4b1d0c... (HMAC-SHA256 raw Hex signature) User-Agent: PushNova-Gateway/3.2 Body JSON: { "notification_id": "hitl_k8s_scale_01", "action_key": "SHUTDOWN_NOW", "user_input": "", "device_token": "pn_tok_live_sec99a74b12c8e3f", "timestamp": 1725782900, "signature": "3c8e9f2a4b1d0c..." }
    3. 签名公式与验签规范

    签名原文格式:notification_id:action_key:user_input:timestamp
    算法:HMAC-SHA256(TENANT_SECRET, 原文)。若 user_input 为空则拼入空字符串。时间戳容差建议设为 300 秒以防重放攻击。

    4. 客户如何搭建自己的 Callback 接收端?
    💡 解决方案:生产环境自建 Callback 接收端(接收手机决策 ➔ 校验 HMAC 签名 ➔ 联动执行本地/远程运维动作)

    当运维人员在手机通知栏或 PushNova App 内点击决策按钮时,网关将以 HTTP POST 形式将决策数据派发到您配置的回调地址,并在 Header 中附带专属防伪签名 X-PushNova-Signature。自建接收端验证签名与防重放无误后,安全联动执行本地 Shell、Docker 容器重启或 Kubernetes 扩缩容。

    🔑 接收端代码中的 PUSHNOVA_WEBHOOK_SECRET 验签密钥从网关哪个界面获取?

    代码中验签使用的专属租户密钥(PUSHNOVA_WEBHOOK_SECRET,格式为 pn_wh_...)是由平台为每个租户独立派发的密码学安全随机密钥。获取路径如下:

    1. 在控制台左侧主导航菜单中,点击 「📋 HITL 人机协同审批」(或在顶部导航点击对应选项);
    2. 在页面顶部首个深色配置卡片:「🔗 Webhook 回调配置与连通性验证」 中;
    3. 找到 「Webhook 验签密钥 (每租户独立 · 系统自动生成)」 输入框,点击右侧的 【复制】 按钮即可!
    (提示:若密钥疑似泄露,也可在该面板随时点击【🔄 重新生成】)
    Node.js 原生 HTTP 服务 · 零第三方依赖 · 监听端口 8081
    
              
    5. 生产高频联动实操场景与代码
    场景 发信 dispatch 核心参数 手机交互与接收端最终联动执行
    机房断电 / UPS 告警
    远程紧急关机
    手机响警报并在通知栏弹出红色【立即关机】按钮。运维点击后,接收端校验 HMAC 签名无误,下发 sudo shutdown -h now 安全关机落盘。
    流量突发过载
    K8s 容器扩容
    点击【自定义副本数】时手机弹出输入框,输入例如 15。接收端校验后执行 kubectl scale deployment api --replicas=15。
    黑客暴力撞库
    一键阻断封禁 IP
    通知展示可疑 IP(如 198.51.100.24)。点击后接收端自动写入 sudo iptables -I INPUT -s 198.51.100.24 -j DROP 或调用 WAF/防火墙 API 封锁。
    微服务死锁/502
    一键自愈重启
    运维在手机一键点击重启,接收端校验后执行 sudo systemctl restart payment.service 快速恢复生产。
    📦 第 8 章:NPM 客户端 SDK 与 pushnova-ops 运维命令行工具 (Node.js)

    PushNova 官方提供全功能、零外部依赖(Zero Dependencies)、轻量高效的跨平台 npm 包:pushnova。原生跨平台支持 Windows、macOS 与 Linux,既可作为运维工程师终端的 pushnova-ops 命令行工具,又可作为后端业务服务的 Node.js SDK 用于消息发送与回调安全验签。

    1. 安装方式:全局 CLI 工具 与 项目依赖
    🖥️ 方式 A:全局安装运维命令行(推荐)
    适合运维与 SRE 工程师,安装后全局可用 pushnova-ops 与 pushnova 两个命令:
    npm install -g pushnova
    (也可免安装直接运行:npx pushnova-ops status)
    📦 方式 B:后端项目依赖接入
    适合在业务微服务、CI/CD 自动化流水线或 Callback 接收端中调用:
    npm install pushnova
    (原生零第三方依赖,自带 TypeScript 类型定义)
    2. 凭据获取与 CLI 一键配置持久化
    🔑 CLI 与代码所需的两把密钥从网关哪个界面获取?
    • 发信鉴权 API Key(pn_ak_live_...):用于调用网关发信。点击左侧主菜单「🔑 开发者 API Key 与账号配额」即可一键复制。
    • Webhook 验签密钥(pn_wh_...):用于接收端校验签名与防重放。点击左侧主菜单「📋 HITL 人机协同审批」,在顶部「🔗 Webhook 回调配置」卡片中点击【复制】。
    # 终端执行一次即可永久保存在 ~/.pushnovarc(支持全局环境变量 PUSHNOVA_API_KEY 自动回退):
    pushnova-ops config set --gateway "https://pushnova.stream"                         --key "pn_ak_live_your_api_key_here"                         --secret "pn_wh_your_webhook_secret_here"
    3. pushnova-ops 常用运维与审批指令速查
    运维操作 CLI 命令 功能与手机端效果
    网关连通性探测 pushnova-ops status 毫秒级探测当前终端到 PushNova 边缘网关的连通延迟与健康状态。
    发送常规运维通知 pushnova-ops send --title "备份完成" --body "数据库已镜像完毕" --priority HIGH 下发一条普通运维消息,手机端立即收到原生系统弹窗通知。
    发起人机协同审批 pushnova-ops hitl --title "生产回滚确认" --body "错误率突增,确认回滚?" --actions "approve:确认回滚,reject:取消" --input 手机弹出带交互按钮与意见输入框的卡片,运维人员在通知栏即可完成审批。
    本地回调试听端 pushnova-ops listen --port 8081 本地启动微型监听服务并自动验签,手机端点击动作后实时在终端打印回执与输入。
    一键推送主机负载 pushnova-ops metrics 自动采集本机 CPU、内存占用与平均负载,格式化为卡片一键推送到手机。
    4. Node.js 后端 SDK 代码接入样例 (send / hitl / verify)
    JavaScript (Node.js SDK) · 支持消息发送、HITL 审批与 Webhook 安全验签
    const { PushNova, verifyWebhookSignature } = require('pushnova');
    
    // 1. 初始化客户端(自动读取环境变量或 ~/.pushnovarc)
    const client = new PushNova({
      gateway: 'https://pushnova.stream',
      apiKey: process.env.PUSHNOVA_API_KEY // 或传入 'pn_ak_live_...'
    });
    
    // 2. 发送普通告警通知
    async function sendAlert() {
      await client.send({
        title: '生产环境内存告警',
        body: '节点 web-02 内存占用超过 88%',
        priority: 'HIGH',
        topic: 'ops_alerts' // 广播到频道,或使用 to: 'pn_tok_live_...'
      });
    }
    
    // 3. 发起人机协同(HITL)交互审批
    async function requestApproval() {
      const result = await client.sendHitl({
        title: '数据库扩容审批请求',
        body: '在线会话数激增,AI Agent 建议扩容至 16 副本,请审批:',
        actions: [
          { key: 'APPROVE', label: '✅ 批准扩容', style: 'PRIMARY' },
          { key: 'REJECT', label: '❌ 驳回申请', style: 'DESTRUCTIVE' }
        ],
        allowInput: true,
        inputPlaceholder: '若驳回请输入原因...'
      });
      console.log('HITL Dispatched:', result);
    }
    
    // 4. 自建 Callback 接收端一键验签与防重放中间件
    function handleWebhook(req, res) {
      const check = verifyWebhookSignature({
        rawBody: req.rawBody,                               // 未解析的原始报文 Buffer/String
        signature: req.headers['x-pushnova-signature'],     // 'sha256=...'
        secret: process.env.PUSHNOVA_WEBHOOK_SECRET,        // 'pn_wh_...'
        timestamp: req.body.timestamp,                      // 秒级时间戳防重放校验
        maxDriftSec: 300
      });
    
      if (!check.valid) {
        return res.status(403).json({ error: check.reason });
      }
    
      // 校验通过,安全处理手机端回传动作
      const { action_key, user_input } = req.body;
      console.log('收到审批回执: ' + action_key + ', 用户输入: ' + user_input);
      res.status(200).json({ status: 'success', action: action_key });
    }
    ❓ 第 9 章:Android 客户端配置、排障与常见 FAQ
    Q1: 为什么模拟器和真机的设备 Token 获取机制不同?

    答:在 Android 开发与测试中,Web 模拟器与本地预览环境缺乏硬件持久化存储,因此默认预置了统一测试 Token(pn_tok_live_sec99a74b12c8e3f),便于在控制台即开即测;而在真实的 Android 物理手机上,PushNova 客户端在首次启动时会读取硬件安全指纹并进行哈希运算生成全局唯一的永久 Token,并持久化保存在 Android 加密 SharedPreferences 中。在 App 中进入「设置 → 设备 Token」即可一键复制本机专属 Token。

    Q2: 向广播频道 (Topic) 发送时,是如何找到目标手机的?

    答:PushNova 采用了「频道 ⇄ 群组 ⇄ 手机」的高效拓扑分发逻辑。每个手机都明确属于一个业务群组,一个广播频道关联多个群组。当您向 topic="ops_alerts" 发送推送时,网关首先获取加入了该频道的所有群组,接着拉取这些群组旗下的所有设备 Token 并自动去重,实现一次请求全量手机毫秒级同步接收。

    Q3: 手机在息屏或杀死后台后如何保证通知不丢失?

    答:PushNova 边缘网关内置了离线消息队列 (Message Queue)。当设备离线或处于后台休眠时,消息将安全暂存于边缘节点。手机客户端恢复网络或唤醒时,会自动向边缘拉取待投递通知并进行本地展示。

    🛡️ 管理员后台

    仅固定管理员账号可用:用户管理、发送量报表与购买情况(订单、加油包、PRO 订阅)。

    👥 账号总数
    -
    -
    📱 绑定终端
    -
    -
    🚀 区间发送量
    -
    -
    💎 已付金额
    -
    -
    🧾 订单数
    -
    -
    📈 7日活跃设备
    -
    7 天内有活跃上报的终端
    账号 套餐 设备 今日 区间 累计 配额用量 已付 最后活跃 操作
    没有匹配的账号。
    🧭
    新手配置向导 · 5 步完成首次推送
    按步骤完成账号配置、绑定手机并发送你的第一条消息。
    1登录
    2API Key
    3绑定手机
    4选择目标
    5发送
    👋 第 1 步 · 登录你的账号
    你的 API Key、手机设备、群组与配额都归属于账号。如果尚未登录,请先登录。
    ○ 正在检查登录状态...
    🔑 第 2 步 · 获取发信 API Key
    每条推送请求都用你的专属 API Key(pn_ak_live_ 开头)鉴权。复制下面的 Key,发送消息与配置 PushNova Ops 时都要用到。
    ----------
    ○ 正在加载你的 API Key...
    📱 第 3 步 · 绑定手机设备
    登记手机后即可接收通知。在 PushNova App「设置 → 设备 Token」中复制设备 Token(pn_tok_live_ 开头)。也可以在这里直接登记一台测试设备。
    ○ 正在检查已绑定设备...
    🎯 第 4 步 · 选择推送目标
    决定谁收到这条消息:设备群组(群发)、广播频道(Topic)、单台设备 Token(单播)或全员广播。我们会为你预选第一个可用目标。
    ○ 请选择下方目标...
    🚀 第 5 步 · 发送第一条消息
    在下面编写一条简单通知并点击发送。配置正确的话,你的手机将立刻收到推送。
    ○ 准备发送你的第一条消息。
    按 Esc 关闭 · 步骤进度自动保存
    🪄 自然语言推送助理 (Text-to-Push) ✨ 通义千问 Qwen
    💡 停机维护通知(带确认) 🚨 P0级紧急故障广播 📋 运维人机审批(HITL) 🚀 客户端新版本发布
    ACTIONABLE HIGH 目标: 测试组
    按 Enter 快速解析 · Esc 退出
    ✔ 操作成功