Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

180 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

磐石 (Bedrock)

磐石 是一套可 内网自托管企业级现场管理与数字化平台,围绕五大核心能力构建:Android 设备管理ESB 系统对接及第三方 SSO多屏联动工作流PDA 小屏定制低码平台(Form App)实时工单系统 + 自定义触发流程可双向对接三方系统。一个浏览器控制台 + 移动端 Agent + 可选本地 USB 桥接,默认使用 SQLite(无需单独装数据库),数据全部留在你自己的服务器。

一句话:Android 设备运维 + ESB 系统集成 + 多屏联动 + PDA 低码表单 + 工单全生命周期管理,企业现场数字化一体方案。

典型用途包括:PDA / 工业手持终端远程管理现场工单派发与双向对接外部系统Android 远程桌面与屏幕分享ESB 企业服务总线集成与第三方 SSO 认证多屏联动工作流编排PDA 小屏专用低代码表单录入组态大屏实时可视化,以及 设备数据采集 → 数据接口 → 外部系统集成 的一体化数据流。


关键词与定位

你可能在找 本仓库提供的能力
Android 设备管理 / PDA 管理 设备分组台账、远程画面 + 触控、Web Shell / Logcat、APK 批量分发、屏幕分享、USB Bridge、已装应用管理、PDA 外设兼容(扫描头广播监听、蓝牙打印机 ESC/POS)
ESB 企业服务总线 / 系统集成 出站连接器(HTTP/MQTT/Kafka/WebSocket)、数据栈(外部库连接/Buffer/开放 API)、第三方 SSO(OAuth2/OIDC)
多屏联动工作流 SCADA 组态编辑器 + 事件引擎、DAG 工作流编排、设备事件 + 系统事件统一总线、跨屏联动控制
Form App(PDA 低码平台) 专为 小屏手持终端 定制的低代码表单设计器、运行时渲染、扫码联动、草稿暂存、下发到设备 Agent
工单系统 + 双向对接 工单全生命周期、状态流转工作流、自定义触发器(扫码/广播/HTTP/定时)、双向同步外部工单系统(ERP/MES/钉钉等)
远程桌面 / 屏幕分享 低延迟实时画面、触控回传、免登录分享链接、摄像头 WebRTC、远程协助
设备维修工单 / 巡检工单 工单关联设备/设备组、现场扫码定位、设备快照、图片附件、时间线追踪
工业组态 / 可视化大屏 SCADA 编辑器、ECharts 图表、容器组件、数据点实时刷新、发布分享
第三方 SSO / OAuth2 认证 OIDC/OAuth2 单点登录、用户自动同步、角色映射、审计日志
数据采集 / 开放 API 自定义事件 + 出站连接器、数据栈开放接口、API Key + 权限范围(scope)、MCP 工具集
MDM 轻量替代 自托管、开放 API、审计日志;非系统级管控,侧重现场协同与运维

适合需要 Android 设备运维 + 系统集成 + 现场工单管理 + 移动端协同作业 的团队,包括设备维修、巡检巡查、仓储物流、门店运营等场景;数据留在自己服务器,可配合 Makefile / Docker 一键构建与部署。


能力范围

平台围绕 五大核心能力 构建完整的企业现场数字化方案。下表按域给出成熟度核心能力,便于快速判断是否覆盖你的需求(成熟度仅作参考,详见 docs/plan.md)。

能力域 成熟度 核心能力
1. Android 设备管理 ✅ 生产可用 设备/分组台账、远程画面 + 触控、Web Shell / Logcat、APK 分发与远程安装、ADB 操作、截图/录屏/录音、文件管理、摄像头 WebRTC、屏幕分享链接、审计日志、USB Bridge、已装应用管理、PDA 外设兼容(扫描头、蓝牙打印机)
2. ESB 系统对接 + 第三方 SSO ✅ 生产可用 出站连接器(HTTP/MQTT/Kafka/WebSocket/STOMP/Cron)、阶段式流水线、静态/动态鉴权、环回防护、投递日志、数据栈(MySQL/SQLite 外部库连接、Buffer Webhook/HTTP Poll 入站、开放数据 API)、第三方 SSO(OAuth2/OIDC 单点登录、用户同步、角色映射)
3. 多屏联动工作流 🟢 功能完整 SCADA 编辑器(拖拽画布、图层/对齐/复制粘贴、12 种 ECharts 图表、容器组件、报警灯、数据点绑定实时刷新、动画与事件引擎、发布预览/分享)、DAG 工作流编排(节点配置、条件分支、并行执行、子流程嵌套)、统一事件总线(设备事件 + 系统事件 + 外部事件)、跨屏联动控制
4. Form App(PDA 低码平台) 🟢 功能完整 专为小屏手持终端定制:表→页面快速生成、多页面设计器、运行时渲染、条件渲染/级联查询/草稿、下发到设备 Agent、扫码联动(兼容 PDA 扫描头)、页面级事件与蓝牙打印机集成、Android 9 兼容性优化
5. 实时工单系统 + 双向对接 ✅ 生产可用 工单类型配置、状态流转与工作流、标签管理、QR 码关联(设备/业务单号/其他编码)、设备快照、实时看板(STOMP 推送)、时间线追踪、图片附件、批量归档、Web + 移动端处理、自定义触发器(扫码/广播/HTTP Webhook/定时)、双向同步外部工单系统(通过出站连接器对接 ERP/MES/钉钉等)
Android Agent ✅ 生产可用 WebSocket 长连接、屏幕推流、命令分发、自定义事件采集、MQTT 转发、Agent 菜单目录、Form App WebView + 扫码、工单列表与详情、PDA 外设支持(扫描头广播监听、蓝牙打印机 ESC/POS 指令)
AI 扩展能力 🔬 实验性 Form App AI 创建(自然语言描述 → 表单页面生成)、ESB 接入 AI 解析(三方 API 文档 → 自动生成连接器配置)、工作流 AI 优化(分析历史执行 → 优化节点配置与分支逻辑)
开放 API / MCP 🟡 基础设施 API Key + 权限范围(scope)、/api/open/v1/* 开放接口、/mcp/v1/ MCP 工具集,便于接入 CI / 内部系统 / AI 助手
核心处理机制 ✅ 生产可用 标准化 Schema 体系:入参 Schema(参数校验 + 类型转换 + 默认值)、返回结果 Schema(结构规范 + 错误码统一)、全局参数(租户隔离、用户上下文、追踪 ID)、Schema 注册与校对机制(schema/ 目录统一管理三端契约)
部署与扩展 ✅ 单机成熟 Makefile 跨平台编译与 release 打包、Docker / docker-compose、API 限流;多实例 + Redis 中继与 Prometheus 指标(见 docs/horizontal-scaling.md

边界说明:本平台侧重现场协同与运维协作 + 系统集成非系统级 MDM 管控(不做强制策略、远程擦除等系统级管理);工单系统面向中小规模现场作业(百级并发),Form App 专为 PDA / 小屏手持终端 优化,超大规模工业 SCADA 或 FSM 请评估专用方案。AI 扩展能力通过 MCP 接口与 Claude / ChatGPT 等 AI 助手集成,提升配置效率。核心处理机制通过标准化 Schema 保证前后端、移动端的接口一致性与类型安全。


典型使用场景

下面按「想解决的问题」给出可落地的组合方式,帮助你判断如何使用:

1. 现场工单派发与处理

  • 诉求:设备维修、巡检、报障等现场作业需要工单系统管理全流程,移动端可快速接单、扫码定位、拍照上传、填写处理结果。
  • 怎么用:Web 端配置 工单类型与工作流 → 创建工单并分配 → 移动端 Agent 工单列表 查看待处理任务 → 扫码关联设备/业务单号 → 拍照附件 + 填写处理记录 → 状态流转 → Web 端实时看板监控 + 时间线追踪。
  • 涉及能力:工单系统、Android Agent 工单模块、标签管理、设备快照、实时看板(STOMP)。

2. 设备维修与巡检工单

  • 诉求:设备出故障或定期巡检时需要工单记录,关联具体设备,现场人员扫码即可查看设备信息与历史工单。
  • 怎么用:工单创建时 关联设备或设备组 → 移动端扫设备 QR 码自动匹配工单 → 查看 设备快照(名称/别名/分组) → 如需远程协助可跳转 远程画面 → 处理完成后归档,Web 端可按设备查询历史工单。
  • 涉及能力:工单系统、设备台账、QR 码关联、设备快照、远程画面(可选)。

3. PDA / 手持终端集中运维

  • 诉求:仓储、门店、产线有几十到上百台扫码枪 / 工业 PDA,需要统一看在线状态、批量装更新、远程排障。
  • 怎么用:设备端装 Agent → Web 控制台统一台账与分组 → 批量安装/卸载 APK → 出问题时 远程画面 + 触控 + Shell/Logcat 排查 → 截图/录屏归档留证。
  • 涉及能力:设备运维、Android Agent、应用分发、终端日志。

4. Android 远程桌面 / 远程协助与演示

  • 诉求:远程查看某台设备实时画面、协助操作,或向他人演示而不暴露后台账号。
  • 怎么用:屏幕实时查看 + 触控回传;对外只需生成 免登录分享链接,按权限限定可见范围(适合协助、演示、监考)。
  • 涉及能力:远程画面、屏幕分享、摄像头 WebRTC。

5. 设备数据采集 → 外部系统联动

  • 诉求:PDA 扫码 / 系统广播等事件要实时推送到 ERP / MES / 企业微信等外部系统。
  • 怎么用:在 自定义事件 中配置广播监听 → 通过 出站连接器 的阶段式流水线推送(支持 HTTP、MQTT/Kafka、动态鉴权 Token、投递日志重试);也可 MQTT 直转。
  • 涉及能力:自定义事件、出站集成、Agent MQTT 转发。

6. 把外部 / 设备数据做成可视化大屏

  • 诉求:把数据库或设备上报的数据做成实时刷新的看板 / 组态画面。
  • 怎么用数据栈 连接外部库并定义数据接口(或用 Buffer 接收 Webhook/轮询入站)→ 组态 SCADA 拖拽画布绑定数据点 → 发布后通过分享链接投屏展示,数据经 STOMP 实时推送。
  • 涉及能力:数据栈、组态 SCADA、开放 API。

7. 现场低代码录入表单 + PDA 外设集成

  • 诉求:现场人员需要在 PDA 上填报 / 扫码录入,使用扫描头快速输入、蓝牙打印机打印标签,且表单要能快速迭代、免重新打包。
  • 怎么用Form App 设计器快速从数据表生成多页面表单 → 一键 下发到设备 Agent 的菜单 → Agent 内置 WebView 运行,支持 PDA 扫描头联动(监听广播自动填充字段)、蓝牙打印机(ESC/POS 指令打印标签/小票)、级联查询、草稿暂存。
  • 涉及能力:Form App、Agent 菜单、PDA 外设集成、数据栈。

8. AI 辅助配置与优化

  • 诉求:快速创建表单页面、对接复杂三方 API、优化工作流配置,降低技术门槛。
  • 怎么用
    • Form App AI 创建:自然语言描述需求("创建设备巡检表单,包含设备编号、巡检项、照片上传")→ AI 自动生成表单页面配置
    • ESB 接入 AI 解析:提供三方系统 API 文档或 Swagger URL → AI 自动解析并生成出站连接器配置(鉴权、参数映射、错误处理)
    • 工作流 AI 优化:分析历史执行日志与性能指标 → AI 建议优化节点配置、简化分支逻辑、调整超时策略
  • 涉及能力:MCP 工具集、Form App 设计器、出站连接器、DAG 工作流引擎。

9. 接入 CI / 内部系统 / AI 助手

  • 诉求:用脚本或第三方系统调用平台能力,或让 AI 助手直接操作组态/设备数据。
  • 怎么用:签发带 权限范围(scope) 的 API Key → 调用 /api/open/v1/* 开放接口;或通过 /mcp/v1/ MCP 工具集 让兼容 MCP 的客户端(Claude Desktop、Cline、Continue 等)调用。
  • 涉及能力:开放 API、MCP。

界面预览

工单管理 — 工单类型筛选、状态看板、QR 码关联、标签分类、实时更新。

工单管理

设备详情 — Agent 在线、网络与存储、PDA / 终端 快捷入口(远程画面、Shell、截图、测速等)。

设备详情

屏幕查看(Android 远程桌面) — 实时画面、端到端延迟、分享链接 与投屏状态。

屏幕查看


环境要求

  • Go 1.21+
  • Node.js 18+(仅在你需要重新构建前端时)
  • adb(Android 平台工具,在 PATH 中或配置里写绝对路径)
  • ffmpeg(可选;需要服务端把录屏合成 MP4 时再装,否则可留空)

最快上手(SQLite,推荐)

请在仓库根目录(与 web/server/ 同级)执行下列命令,这样静态页面路径 ./web/dist 才能正确加载。

也可使用 make all 构建前端并编译服务端二进制(见仓库根目录 Makefile);若要同时启用 组态 SCADAForm App,请用 make server(会一并构建 scada-editor/form-app/)。

1. 构建前端(若已有 web/dist 可跳过)

cd web && npm install && npm run build && cd ..

2. 编译并启动后端

go build -C server -o app-manager .
./app-manager server/config.sqlite.yaml

启动后浏览器访问:http://127.0.0.1:8080

3. 默认账号

首次启动若无用户,会自动创建管理员:

  • 用户名:admin
  • 密码:admin123

务必登录后修改密码;生产环境请修改 jwt.secret 或设置环境变量 JWT_SECRET


用 Docker 部署(可选)

仓库已内置多阶段 Dockerfile 与 compose 文件,免本机装 Go / Node:

# 默认 SQLite 单容器
export JWT_SECRET=$(openssl rand -hex 32)
docker compose up -d --build
# 访问 http://localhost:8080(默认账号 admin / admin123)

需要 MySQL 时改用 docker-compose.mysql.yml

docker compose -f docker-compose.mysql.yml up -d --build

数据与上传分别挂载到 app-data / app-uploads 卷,容器重启不丢失。


配置说明

文件 用途
server/config.sqlite.yaml 简化配置:SQLite,复制即用
server/config.yaml 示例(含 MySQL 等),可按需参考

指定配置文件:

./app-manager /path/to/your-config.yaml

常用环境变量(覆盖配置中的同名项):

  • JWT_SECRET — JWT 密钥
  • ADB_PATH — adb 可执行文件路径
  • FFMPEG_PATH — ffmpeg 可执行文件路径

MQTT 转发(可选)

自定义事件支持转发到 MQTT broker,在配置文件中启用:

mqtt:
  enabled: true
  broker: tcp://localhost:1883
  username: ""
  password: ""
  client_id: app-manager
  qos: 1

在「自定义事件配置」页面可为事件分组或单个事件定义配置 MQTT 主题,事件上报时自动转发。


使用 MySQL(可选)

database 改为例如:

database:
  type: mysql
  dsn: "user:pass@tcp(127.0.0.1:3306)/app_manager?charset=utf8mb4&parseTime=True&loc=Local"

Android Agent

设备端(PDA、手机、工业平板 等)需安装配套 Agent,配置服务器地址后与控制台保持 WebSocket 长连接,即可使用 远程画面、Shell、日志 等能力。

仓库内可用 Gradle 或 Makefile 编译安装,例如:

make install-agent
#
cd agent && ./gradlew :app:installDebug

亦可使用脚本 ./scripts/sync-agent-apk.sh(需本机 Android SDK / Gradle;环境变量可参考 scripts/sync-agent-apk.env.example)。


本地开发前端(可选)

后端仍按上文在仓库根目录启动;前端单独调试时:

cd web && npm install && npm run dev

Vite 默认把 /api/ws 代理到 http://127.0.0.1:8080,如需改端口可设置环境变量 VITE_PROXY_TARGET


仓库结构(简要)

server/          Go 服务(API、WebSocket、任务队列、数据栈、出站、MCP)
web/             Vue 3 主控制台
scada-editor/    组态编辑器(React 独立子应用,由 Go 服务托管)
form-app/        低代码表单设计器 + 运行时(React,Go 托管)
agent/           Android Agent 工程
bridge/          本地 USB 扫描桥接(Go)
schema/          三端共享 TypeScript Schema 定义(入参 Schema、返回结果 Schema、全局参数、接口契约)
  ├── data-interface/   数据接口 Schema(开放 API 入参/返回定义)
  ├── scada/            组态编辑器组件 Schema(画布元素、容器、图表配置)
  ├── form-app/         Form App 页面 Schema(组件配置、事件定义、运行时契约)
  └── reconcile/        Schema 校对工具(检查前后端 Schema 一致性)
scripts/         辅助脚本(如 APK 同步)
docs/            文档与界面截图(README 引用);整体规划见 docs/plan.md
Makefile         构建 server / web / scada-editor / form-app / agent 与 release 打包

想了解完整能力栈、成熟度与路线图,参见 docs/plan.md(平台全景计划)。schema/ 目录通过 TypeScript 定义统一的接口契约,保证 Go 后端、Vue/React 前端、Android Agent 三端的类型安全与接口一致性。


下一步计划

平台正在向 统一事件驱动架构 演进,目标是通过 DAG 工作流引擎 统一全局事件流标准,实现后端各类工作流的统一编排与执行。

核心演进方向

统一工作流引擎 (DAG Workflow Engine)

将现有分散的工作流系统(工单工作流、出站连接器工作流、数据轮询工作流等)统一到一个基于 有向无环图 (DAG) 的工作流引擎上:

  • 统一编排模型:所有工作流统一使用 DAG 节点 + 边的声明式配置
  • 可视化编辑器:拖拽式 DAG 编辑器,支持节点配置、条件分支、并行执行、子流程嵌套
  • 执行引擎:调度器 + 执行器分离,支持节点重试、超时控制、错误处理、状态持久化
  • 监控与追踪:完整的执行日志、性能指标、可视化执行路径追踪

统一事件系统 (Unified Event System)

建立全局标准事件总线,连接平台各个子系统:

  • 事件标准化:统一事件模型(事件类型、载荷结构、元数据规范)
  • 事件路由:基于事件类型和规则的智能路由,支持事件过滤、转换、聚合
  • 订阅机制:多订阅者模式,支持优先级、顺序保证、At-Least-Once 语义
  • 跨系统集成:设备事件、工单事件、系统事件、外部事件统一流转

应用场景整合

通过统一的 DAG 工作流引擎和事件系统,以下场景将获得统一的编排能力:

场景 当前实现 演进后
工单工作流 阶段式流水线(Webhook、HTTP、MQTT 等) DAG 节点编排,支持复杂条件分支、并行审批、子流程
出站连接器 独立的 Connector 配置和执行器 统一为 DAG 工作流的一种触发器和动作节点
自定义事件 事件监听 + MQTT 转发 + 连接器 统一事件总线 + DAG 订阅节点,支持复杂事件处理
数据轮询 Buffer HTTP Poll、Data Poll 分散实现 DAG 调度节点 + Cron 触发器统一管理
Form App 事件 页面级事件 + 前端 SDK 事件上报到统一总线,后端 DAG 工作流响应
SCADA 联动 组态事件引擎(前端) 前后端事件桥接,支持后端 DAG 工作流联动控制

技术架构

参见 docs/event-system-evolution.md 了解完整的演进路线图与技术设计:

  • 第 1 步:事件引擎脱离 Formily,建立独立的事件总线
  • 第 2 步:AppState 统一状态管理,支持跨组件响应式状态
  • 第 3 步:ToolRegistry 工具注册机制,支持动态工具加载和降级
  • 第 4-8 步:DAG 调度器、执行器、可视化编辑器、迁移与兼容层

这一演进将大幅提升平台的 灵活性、可扩展性与可维护性,让复杂业务逻辑的编排更加直观和高效。


磐石 Bridge(本地 USB 扫描)

bridge/ 是一个轻量本地代理程序,运行在管理员电脑上,通过 WebSocket 向浏览器推送本机 USB 连接的 Android 设备列表,并支持一键注册到磐石服务器。

使用方式

# 编译
cd bridge && go build -o bedrock-bridge .

# 运行(需本机已安装 adb 并在 PATH 中)
./bedrock-bridge
# 监听 ws://127.0.0.1:17175

浏览器打开磐石控制台 → 设备列表页 → 点击「USB 扫描」,即可自动发现并注册 USB 设备。

Bridge 仅监听本地回环地址 127.0.0.1,不对外暴露。


许可证与贡献

欢迎 Issue / PR:优化文档(如 PDA 管理远程桌面分享 等场景的说明)、修复问题、分享部署经验。

若在生产环境部署,请务必将默认密码、jwt.secret 与数据库连接信息替换为安全值。

About

No description, website, or topics provided.

Resources

Stars

121 stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages