Files
orbit/docs/console.md

4.8 KiB
Raw Blame History

Orbit Console · 星轨控制台

Orbit 内置了一个不依赖 Node.js、外部 CDN 或额外文件挂载的管理控制台第一版。静态资源编译进 Orbit 二进制,入口为:

http://127.0.0.1:8080/console/

当前能力

  • 读取 /health/live、/health/ready 和 /version 展示服务、Schema 与工具链状态。
  • 通过用户选择的本地凭据 JSON 或手工 Token/队列范围调用现有授权 API;队列范围优先从凭据 JSON 或服务端默认配置自动填充。
  • 总览页直接展示当前查询窗口的任务成功率、任务状态分布、活跃计划、待核查流程和待交付结果;连接参数收进“连接设置”抽屉,不占用统计区域。
  • 展示任务、定时计划、流程实例和结果订阅的最近摘要。
  • 点击任务查看任务详情、执行尝试时间线、最终结果和操作审计摘要。
  • 在具备对应权限时提交任务取消和安全重试,沿用服务端的版本校验、幂等键、队列范围和审计规则。
  • 点击定时计划查看当前版本、规则、下一次触发和触发记录;在具备 schedules:manage 权限时可暂停或恢复计划。
  • 点击流程实例查看当前权威状态、固定版本、步骤状态和事件时间线;步骤读取沿用 workflows:read,事件时间线没有 workflows:audit:read 时会明确显示权限提示。
  • 点击结果订阅查看冻结配置、游标、积压窗口和最近交付历史;页面不展示租约秘密,也不绕过 events:read / events:manage 权限。
  • 在具备 workflows:control 权限时,流程详情可以暂停、恢复或取消;操作原因、control_revision 和幂等键交给服务端做最终校验。
  • NEEDS_REVIEW 流程会显示按步骤类型划分的人工恢复入口:任务核查、步骤结论、继续、步骤重试、PENDING 接续和等待重建;每次提交都要求当前修订、证据引用和显式确认,服务端恢复 API 负责最终门控。
  • 在具备 events:manage 权限时,订阅详情可以启停订阅,并对 EXPIRED 交付追加次数预算后重试;原交付身份、已用次数和事件不会被页面重置。
  • 左侧五个模块是独立的控制台视图,使用 /console/#/overview、#/tasks、#/schedules、#/workflows 和 #/subscriptions 定位;切换视图不会把所有模块堆在一张长页面上。
  • 任务状态按 10 秒自动刷新;页面不会把凭据上传到独立服务,也不读取数据库。
  • 页面使用当前请求方的业务权限;没有权限的模块显示为空或等待权限,不绕过服务端授权。

本地打开

启动 Orbit 后直接访问 /console/。当前 Docker 开发环境可用:

http://127.0.0.1:8080/console/

启动 Orbit 后,首页先展示运行统计;需要切换环境或加载凭据时,点击顶部齿轮、首页“连接设置”或统计旁的设置入口。API 地址默认使用当前控制台页面所在的地址,不需要手工填写。点击“选择凭据 JSON”,选择 orbit-admin bootstrap 生成的私有凭据文件,例如 .local/local.credentials.json,队列范围和 Token 会自动读取,再点击“连接”。浏览器不能在没有用户选择的情况下读取本机文件,这是浏览器的安全边界;文件只在当前页面内解析,Token 不会上传到 Orbit Console,也不写入 Orbit 数据库。

如果一个部署只服务一个默认队列,可以在服务端配置队列范围,页面打开后会自动使用它:

export ORBIT_CONSOLE_QUEUE_ID='queue_xxx'

GET /console/config 只返回这个非敏感的默认队列 ID,不返回 Token、不读取数据库。凭据 JSON 中的 queue_id 优先级更高,可以覆盖默认值。没有队列配置时仍可查看健康和版本;读取任务、计划、流程及订阅需要同时提供 Bearer Token 和队列范围。平台不会根据 Token 猜测队列,因为一个 Token 可能被授予多个队列,自动猜测会造成数据范围错误。

安全边界

控制台不直接访问数据库,也不绕过 Bearer Token。取消和人工重试会使用当前任务版本生成一次性幂等键;网络结果不明时不要重复点击,应使用原始操作身份通过 API/SDK 核对。NEEDS_REVIEW 任务仍须使用带证据的核查 API/SDK 完成最终裁决。控制台不创建独立管理员身份,不支持跨命名空间聚合,不代替平台的权限与审计 API。

不能把业务 Token 长期放进浏览器本地存储,也不能让控制台直连 MySQL。计划版本发布、跨命名空间管理身份和其他高风险写操作仍应通过受保护 API/SDK 设计后再接入页面。流程恢复入口只调用已经定义的恢复 API,不自动猜测结果、不替操作者补齐证据,也不把冲突重试成“最新版本”。