Plaita Console
Plaita 流程引擎可视化管理控制台
功能特性
- 服务拓扑视图 - 实时展示集群服务结构与关联关系
- 服务生命周期管理 - 启动/停止各类服务
- 执行实例管理 - 流程执行的查看、启动、停止
- 实时监控 - 执行状态、日志流、任务队列
- 可视化流程查看器 - 图形化展示流程执行进度
- 可视化 Flow 编排 - 浏览器内拖拽编排 Plaita 流程(节点面板 + 画布 + 配置抽屉 + 试跑),保存为带 semver 版本号的流程定义,支持草稿/发布版本管理
- 节点管理 - 查看内置节点 schema、注册/删除自定义节点描述
- 对外契约接口 - 暴露
/api/flowVersion/semver/detail(HMAC 鉴权),供plaita.PlaitaClient拉取已发布流程定义
快速开始
使用 Docker Compose
cd plaita-console/docker
docker-compose up -d
访问 http://localhost:5173 打开控制台。
启动第三方依赖服务
Plaita Console 依赖 Redis 来存储服务注册信息。可以使用以下方式启动:
# 方式 1: 使用本地 Redis
redis-server
# 方式 2: 使用 Docker 仅启动依赖服务
cd plaita-console/docker
docker-compose -f docker-compose.deps.yml up -d
演示模式
如果你只是想测试 Plaita Console 的功能,可以运行演示脚本注册模拟服务:
# 确保 Redis 已启动,然后运行演示脚本
cd plaita-console
python scripts/demo_services.py
这会注册几个模拟服务(FlowWorker、DelayService 等),让你可以在控制台中看到服务拓扑和状态。
本地开发
后端
cd plaita-console/backend
# 安装依赖
pip install -r requirements.txt
# 方式 1: 使用启动脚本(推荐)
python run.py
# 方式 2: 使用 uvicorn
python -m uvicorn main:app --reload --port 8080
# 方式 3: 直接运行
python main.py
前端
cd plaita-console/frontend
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
访问 http://localhost:5173 打开控制台。
项目结构
plaita-console/
├── frontend/ # 前端项目 (React + TypeScript + Vite)
│ ├── src/
│ │ ├── components/ # 可复用组件
│ │ ├── pages/ # 页面组件
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── services/ # API 调用
│ │ └── stores/ # 状态管理
│ ├── package.json
│ └── vite.config.ts
├── backend/ # 后端项目 (FastAPI)
│ ├── api/ # API 路由
│ ├── models/ # 数据模型
│ ├── services/ # 业务逻辑
│ └── main.py
├── docker/ # Docker 配置
│ ├── docker-compose.yml
│ ├── Dockerfile.frontend
│ └── Dockerfile.backend
└── README.md
API 文档
启动后端后,访问 http://localhost:8080/docs 查看 Swagger API 文档。
Swagger 按 tag 分面:admin(管理面)/ contract(契约面)/ health。
API 分面
Console 对外暴露两套鉴权面,路径前缀同为 /api,鉴权方式不同:
| 分面 | 调用方 | 鉴权 | 未配置密钥 |
|---|---|---|---|
| 管理面 (admin) | Console 前端 / 运维 | X-Admin-API-Key 或 Authorization: Bearer |
503(除非 ALLOW_INSECURE_ADMIN=true) |
| 契约面 (contract) | 外部 PlaitaClient |
HMAC(Authorization 头,与 plaita/client.py 对称) |
503 |
| 健康检查 | 探针 | 无 | — |
路由挂载见 backend/main.py:_mount_admin / _mount_contract。契约面不加 require_admin_auth。
管理面 API
| 端点 | 方法 | 描述 |
|---|---|---|
/api/services |
GET | 获取所有服务列表 |
/api/services/topology |
GET | 获取服务拓扑 |
/api/services/{id}/stop |
POST | 停止服务 |
/api/executions |
GET | 获取执行列表 |
/api/executions |
POST | 启动新执行 |
/api/executions/{id} |
DELETE | 取消执行 |
/api/queues |
GET | 获取队列状态 |
/api/logs |
GET | 获取日志 |
/api/logs/stream |
GET (SSE) | 实时日志流 |
/api/flows |
GET / POST | 流程列表 / 新建流程 |
/api/flows/{id} |
GET / DELETE | 流程详情(含版本列表)/ 删除流程 |
/api/flows/{id}/versions/{ver} |
GET / PUT / DELETE | 取版本 / 保存草稿(Flow 强校验)/ 删除版本 |
/api/flows/{id}/publish |
POST | 发布指定版本(draft → published) |
/api/flows/dry-run |
POST | 同步试跑 Flow JSON,返回节点级结果 |
/api/nodes |
GET / POST | 节点描述列表 / 注册自定义节点 |
/api/nodes/{type} |
DELETE | 删除自定义节点(内置不可删) |
/api/cluster/* |
— | 集群配置 / 启停(command 白名单) |
/api/events/* |
— | 事件订阅与查询 |
契约面 API
| 端点 | 方法 | 描述 |
|---|---|---|
/api/flowVersion/semver/detail |
POST | HMAC 鉴权;application/x-www-form-urlencoded(flowId/version);返回已发布流程定义供 PlaitaClient 拉取 |
技术栈
前端
- React 18
- TypeScript
- Vite
- TailwindCSS
- @xyflow/react 12 (流程编排画布与拓扑图)
- TanStack Query (数据获取)
- Zustand (状态管理)
后端
- FastAPI
- Pydantic
- Redis
- SQLAlchemy (流程定义/版本/节点描述持久化)
- SSE (Server-Sent Events)
环境变量
后端
| 变量名 | 默认值 | 描述 |
|---|---|---|
PLAITA_CONSOLE_REDIS_URL |
redis://localhost:6379/0 |
Redis 连接 URL |
PLAITA_CONSOLE_HOST |
0.0.0.0 |
监听地址 |
PLAITA_CONSOLE_PORT |
8080 |
监听端口 |
PLAITA_CONSOLE_DEBUG |
false |
调试模式 |
PLAITA_CONSOLE_DB_URL |
sqlite:///./plaita_console.db |
流程定义/版本/节点描述持久化(SQLAlchemy) |
PLAITA_CONSOLE_ADMIN_API_KEY |
空 | 管理面 API Key(X-Admin-API-Key / Bearer)。空且未放开 insecure 时管理 API 返回 503 |
PLAITA_CONSOLE_ALLOW_INSECURE_ADMIN |
false |
显式允许无管理密钥启动(仅本地开发) |
PLAITA_CONSOLE_SECRET_ID |
空 | 对外契约 HMAC secret-id(空则 /api/flowVersion 返回 503,不再接受空串签名) |
PLAITA_CONSOLE_SECRET_KEY |
空 | 对外契约 HMAC secret-key |
前端管理面请求会自动带 X-Admin-API-Key:优先读 localStorage.plaita_admin_api_key,其次 VITE_PLAITA_ADMIN_API_KEY。
POST /api/flows/dry-run 拒绝含 code / python / javascript 等危险节点的流程,防止 console 进程 RCE。
开发指南
许可证
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plaita_console-0.5.1-py3-none-any.whl.
File metadata
- Download URL: plaita_console-0.5.1-py3-none-any.whl
- Upload date:
- Size: 5.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98e28e16873099d89e78512db6f40b21bb8a0571899a14ea091d40e324e77c51
|
|
| MD5 |
e5c13ed341a5bc7a9dbcc641dd45b255
|
|
| BLAKE2b-256 |
cae3e6aacb8cfe5e6063fa645643251a5a2b642c42f973f235a785ba93bc8622
|