首页/产品中心/动态风险预警系统
咨询报价 预约演示
动作引擎 · V1.5.11-FINAL.r3 封版交付

动态风险动作引擎
— 不只是看板

不只告诉你"哪里红了" — 还要告诉你为什么、谁处理、做什么、什么时候必须关闭、关不掉怎么升级。

面向石化 / 化工 / 园区的动态风险动作引擎 — 把作业票、人员定位、气体报警、隐患整改、承包商资质五类数据接入一套三层风险算法(R_static / R_dynamic / R_area),命中 11 条硬触发跳级规则(JR-001~011)的同时自动派发处置任务,按 SLA 跟踪并强制证据 + 复核才能闭环。 区域风险达红色时直接拦截新增高危作业(JR-008),不让"看板红了但作业照做"再发生。

⚙ 31 REST 端点 🧪 41 业务场景 ✅ 133 项机械验证 🚨 11 条跳级规则 👥 5 角色 RBAC 📦 80MB Docker · 0 运行时依赖
预约 30 分钟实演 下载《8 典型场景包》 上传现场数据样本 →
客户真实痛点

看板很亮,事故照发 — 为什么?

每一条痛点都配一条"客户能 10 秒看完"的硬证据 — 不是"可视化、实时、全方位"这种词

痛点 1

看板很亮,事故照发

老式系统只算静态分(昨天的数据),不会因为"今天 09:55 气体高报警 + 监护人不在 + 措施未确认"实时跳级。事故调查报告里"已知风险长期存在但未闭环"反复出现。

硬证据:三层算法 R_static / R_dynamic / R_area + 11 条硬触发跳级规则(JR-001~011)。例如 JR-008:当 A-101 罐区风险总值达红色时,新增高危作业(动火 / 受限 / 吊装 / 盲板)被自动 blocked,不论审批流程在哪一步
痛点 2

派发了任务,闭不了环

任务靠人记、靠群里催、靠领导问。复核驳回的任务无法重新提交、超时也不会自动升级、证据是一句"已处理"。事后审计根本无据可查。

硬证据:闭环动作引擎 — 每条预警自动生成带责任人 / SLA / 证据要求 / 复核要求的任务;复核驳回引入 rework_required 过程态,允许返工再提交;超时自动 task.status=timeout + warning.status=escalated;红色预警必须所有 review_required 任务都 approved 才能闭环。
痛点 3

数据脏了、规则乱了,系统崩了

现场导入 Excel 永远有脏数据(null 行、字符串当数字、时间格式错)。规则配置改一个数字会污染整张表,导致后续接口全部 500。

硬证据:导入字段白名单 + 行类型前置校验(null / 数组 / 数字行 400 + 业务文案,绝不暴露 JS 内部错误)+ saveRules 原子性(失败自动回滚 rules / calc_records / warnings / tasks)+ 阈值倒挂校验(yellow < orange < red)。30+ 边界验证全过,客户用错也坏不了系统。
痛点 4

等保过不了,生产部署 demo@123 还能登

太多系统买进来才发现演示账号 admin/admin@123 还能登录;JWT_SECRET 是 changeme;CORS 是 *;中国时区跑出来时间偏 8 小时。

硬证据:生产保护栏 — NODE_ENV=production 强制 (a) JWT_SECRET ≥ 32 字符且非弱占位 (b) 默认账号清零(只剩 U-admin,密码 = ADMIN_INITIAL_PASSWORD env,其他 demo 账号不创建)(c) 弱口令扫描命中即 exit 3 (d) 业务时间锁 Asia/Shanghai。三时区 verify 全过。
差异化对比

动作引擎 vs 看板 / 双控驾驶舱

"看板告诉你哪里红了,动作引擎告诉你为什么、谁处理、做什么、什么时候关、关不掉怎么升。"

维度老式 EHS / 双控看板通用 BI 数据大屏海顿动态风险预警
核心定位展示风险可视化分析动作引擎 — 闭环到任务
风险算法静态分(昨天数据)指标聚合三层动态(实时事件触发 + 11 跳级规则)
任务派发需人工点击派发不派发预警自动派发 + SLA 跟踪
闭环管理手工记录不管状态机 7 状态 + 复核驳回返工 + 超时升级
区域红色拦截作业JR-008 自动阻断 + blocked_detail 反馈
规则可解释不解释不解释contribution 数组逐项解释 + hard_rules 列表
权限模型通用 5-7 角色通用 5-7 角色5 角色 × 13 资源 × 4 动作 = 260 权限点
等保 2.0 合规部分部分默认账号清零 + 弱密钥拒启动 + RBAC 范围 + 审计落盘
时区一致性依赖服务器 TZ依赖服务器 TZ业务时间锁 Asia/Shanghai(三时区 verify 全过)
运行时依赖上百个 npm/jar 包上百个 npm/jar 包0 个(Node.js 内置)
Docker 镜像500MB ~ 2GB500MB ~ 2GB~80MB(alpine)
自动化测试覆盖少 / 无少 / 无41 业务场景 + 133 机械验证(员工 3 分钟自测)
API 契约部分部分OpenAPI 3.0(31 端点 1:1)
行业规则包需现场开发3 套预置(炼化大型 / 化工园区 / 油气码头)+ 一键加载
典型部署时长6-12 个月3-6 个月2-4 周(含规则现场校准)
核心模块

6 大模块详解

每个模块都给出:定位 / 关键能力 / 关键数字 / 配套接口

🧠

模块 1 · 三层风险算法

R_static / R_dynamic / R_area · 产品的"大脑"

把多源数据合并为可解释的风险分值。每条预警附带 contribution 数组逐项解释 — 客户可以一条一条追问"为什么是这个分"。

  • R_static = 单票静态风险(基础分 × K_person × K_medium × K_hazard × K_area × K_special)
  • R_dynamic = R_static + Δtime + Δmeasure + Δgas + Δpeople + Δcross + Δhazard + Δoffline
  • R_area = 区域风险总值(各活跃票贡献 × W_work × O + p_hazard + p_alarm + p_cross + p_offline + p_special)
  • 21 个权重系数 + 8 类增量 Δ + 5 类区域惩罚 p,全部可在规则后台调整 + 失败回滚
GET /api/tickets/:id → dynamic.contribution 数组逐项解释
🚨

模块 2 · 11 条硬触发跳级规则

JR-001 ~ JR-011 · 把行业红线工程化

无视风险分值的"软指标",命中即升级。所有规则进入 calc_record 留痕,可在规则后台单条 enable/disable + 阈值可调。

  • JR-001 开口动火 + LEL ≥ 10% → 红色
  • JR-005 无关人员侵入 ≥ 3 分钟 → 黄+
  • JR-006 无关人员侵入 ≥ 10 分钟 → 红色
  • JR-008 区域红色 + 新增高危作业 → 阻断(最强)
  • JR-009 气体监测设备离线 → 升级
  • ... 全 11 条见 server/rules.js
GET /api/calc/records?limit=50 → 最近计算记录含 hard_rules 命中列表
🔄

模块 3 · 闭环动作引擎(state machine)

7 状态机 · 把"预警"变成"动作"

每一条预警自动生成可执行任务。复核驳回不死,必须返工。任何超时自动升级。

  • 7 状态:new → pushed → acked → handling → wait_recheck → closed / escalated / cancelled
  • 5 种任务动作:suspend_confirm / recheck / limit_flow / escalate / observe
  • 安全红线:复核驳回不得自动闭环(V1.5.4)
  • 返工闭环:rework_required 过程态,可重提 + 再复核(V1.5.5)
  • 超时升级:deadline 过 → task.status=timeout → warning.status=escalated
POST /api/tasks/:id/accept/submit/review + GET /api/warnings/:id 含 timeline
🛑

模块 4 · JR-008 区域红色拦截

业务最强的一条规则 · 单独成模块

区域风险达红色时,自动阻止新增 fire / confined / lifting / blind 类作业 approved/ongoing。导入接口直接返回拒绝。

  • 从导入接口到 JR-008 派发任务,全自动 < 100ms
  • 返回 success_count=0 + blocked_count=1 + blocked_detail
  • 同时自动派发 limit_flow(限流)+ escalate(升级)任务
  • 幂等:重复触发不会重复生成 warning(V1.5.3)
POST /api/import { type:"ticket_status", items:[{ticket_id:..., status:"approved"}] }
👥

模块 5 · 5 角色 RBAC + JWT + 审计

生产部署的安全底座

5 角色 × 13 资源 × 4 动作 = 260 个权限点,每个 cell 在 verify_all 里有对应测试。审计日志全留痕。

  • 5 角色:admin / safety_dir / safety / area / guardian
  • getScope: all / department / assigned / none
  • applyScope 数据范围过滤 + canOperateTask 任务归属校验
  • 生产模式 admin-only:只有 U-admin 可登录,其他 demo 账号不创建
  • 弱口令扫描:命中 admin@123/demo@123/changeme 等 → exit 3
  • 审计日志:login / logout / changes / imports / rule_changes 全留痕 audit.log
GET /api/admin/users(admin:users 权限)+ GET /api/admin/audit?limit=N
📦

模块 6 · 零依赖部署 + 三时区一致

产品级工程化的底气

Node.js 内置 http/crypto,0 个 npm 运行时依赖。Docker 80MB,docker-compose 一键部署。员工 3 分钟自测。

  • Node.js 内置 http/crypto,server/package.json 的 dependencies 是 {}
  • Docker 镜像 ~80MB(alpine 基础)
  • 生产保护栏强制:REQUIRE_AUTH=1 + ADMIN_INITIAL_PASSWORD + 业务时区 Asia/Shanghai
  • 员工自测脚本 verify.sh:133 项 5 秒跑完,输出 verify_report.json
  • 三时区 verify(UTC / 上海 / 洛杉矶)均 133/133 一致
GET /api/health(version/counts/uptime)+ GET /api/openapi.yaml
典型场景

从 41 个业务场景库挑出的 8 个最能打动客户的场景

每个场景对应一个客户实际痛点 — 都是真跑通的自动化测试,不是 PPT 演示

S-29

端到端闭环:动火 → 气体高报警 → 暂停 → 复检 → 证据 → 复核 → 关闭

注入 gas_event → 预警自动红 → 系统派发 3 个任务 → 监护人接收 / 提交 / 上传 LEL=0% 证据 → 复核通过 → 预警闭环关闭。

→ 对应痛点:派发了任务闭不了环
S-42

复核驳回 → 返工 → 再提交 → 通过 → 闭环

复核驳回 → 任务变 needs_rework → 重新填表提交 → 复核通过 → 预警 closed。驳回不是死路,必须返工。

→ 对应痛点:驳回的活儿没法重做
S-34

JR-008 区域红色拦截:A-101 红色时禁止新增高危作业

区域 A-101 r_area → 红 → 试图把 DH-202605-021 改 ongoing → 立即弹"被 JR-008 拦截"红色提示 + ticket 状态不变。

→ 对应痛点:看板红了但作业照做
S-11 / S-12

无关人员侵入 5 分钟 / 12 分钟 → 触发 JR-005 / JR-006

person_event intrude=5min → 预警黄;intrude=12min → 预警红 + 命中规则 JR-006。无需人盯监控。

→ 对应痛点:靠人眼盯监控
S-22

处置任务超时自动升级

时间推进 +20min → N 个任务超 deadline → 自动 status=timeout → warning.status=escalated → 自动派发 escalate 任务。

→ 对应痛点:超时了没人催
S-40

等级回落 ≠ 自动关闭

red → green 但 warning 仍 active,必须复核才能关 → timeline 留"等级回落"事件。

→ 对应痛点:风险降了就当没事了
S-13

气体监测设备离线 → 命中 JR-009

gas_event alarm_level=offline → 系统立即识别 → Δoffline 加成 + 派发观测任务。

→ 对应痛点:设备坏了我不知道
S-09

措施未确认 + 关键措施缺失

key 措施 confirmed_flag=false → 风险 +Δmeasure → 红色预警 + 派发措施补做任务。

→ 对应痛点:措施表是填了没做
V1.5.11-FINAL.r3 封版交付

数字证据

网站任何宣传都从这张表里取数 — 不允许"丰富的功能"、"强大的能力"等模糊词

31
REST 端点
41
业务场景自动化测试
133
机械化验证项
11
硬触发跳级规则
7
闭环状态(state machine)
5
RBAC 角色
0
运行时依赖(npm)
~80MB
Docker 镜像(alpine)

业务时区 Asia/Shanghai 锁定(不依赖服务器 TZ) · 三时区 verify(UTC / 上海 / 洛杉矶)均 133/133 一致
生产保护栏:弱密钥黑名单 + 默认账号清零 + 时区锁定 + 弱口令扫描 · 15 轮一次性整改至 V1.5.11-FINAL.r3 封版

ROI 测算

用真数字说话 — 不写"显著降本"、"大幅提效"

基于典型中型炼化场景(年产能 500 万吨级 · 年作业票约 3.6 万张 · 含动火 / 受限 / 吊装 / 盲板 4 类高危)

维度上线前(行业平均)上线后(海顿)年化收益(人民币)
未闭环预警比例30-40%< 5%事故避免 1-2 起 / 年
作业票审批时长人均 30-60 分钟人均 5-10 分钟单票节省 20-50 分钟 × 3.6 万 = 1.2-3 万工时 / 年
现场监护工时每张高危票配 1 人全程系统辅助 + 异常时介入节省 20-30% 监护工时
等保 / 安全审计材料人工准备 1-2 周audit.log + 自动报告,2 小时节省 5-8 工日 × 4 次 / 年
违章作业事故行业均值 1-3 起 / 厂 / 年硬触发 + JR-008,预期降 60-80%单起轻伤事故全口径损失 ¥100-500 万
新员工培训上手现场跟班 1-3 个月系统给出规则与算法解释 1-2 周每人节省 1-2 个月人力
保守估算:单厂首年净收益(节省工时 + 审计 + 事故避免)保守估 ¥600 万,软件 + 实施一次性投入分档报价 → 静态投资回收期 3-9 个月。 即便完全不计算事故避免收益,仅工时 + 审计 + 培训节省,投资回收期 8-12 个月

上述数字基于典型客户访谈 + 配套 ROI 测算器输出,数字假设可逐项核验。
软件许可按厂区规模 / 数据源数 / 预警规则复杂度分档,具体报价请通过"咨询报价"获取。海顿不在公网披露报价区间。

FAQ

客户最常问的 22 个问题

按"客户演示 / 采购 / 上线 / 运维 / 合规" 5 个采购阶段排列

A 组 · 产品定位与差异化

Q1. 动态风险预警和"安全大屏 / 双控看板"有什么本质区别?+
看板告诉你哪里红了,动作引擎告诉你为什么红、谁处理、做什么、什么时候关、关不掉怎么升。本产品的每一条预警都自动生成带责任人、带 SLA、带证据要求、带复核环节的任务;任何超时自动升级;任何复核驳回必须返工。这是工程化的"闭环",不是"展示"。
Q2. 风险算法可解释吗?客户会不会觉得是黑盒?+
每条预警都附带 contribution 数组逐项解释为什么得这个分值(如"基础分 30 + Δgas 高报警 20 + Δmeasure 监护人缺失 5")。同时 hard_rules 数组明确列出本次命中的硬触发跳级规则 ID(JR-001~011)。客户可以一条一条追问,每一项都可解释。
Q3. 硬触发跳级规则可以改吗?还是写死的?+
11 条规则的每一条都可在规则配置后台 enable/disable,阈值(如气体浓度、人员侵入分钟数)可调整。每次改动写 rule_version_log(含 changed_by / changed_time / change_reason)。规则保存是原子的:失败自动回滚,不会破坏运行态。
Q4. 复核驳回的任务怎么走?会不会卡死?+
驳回后任务进入 rework_required 过程态(不是死态 rejected),可重新填证据再提交、再复核。warning 的 timeline 完整记录每一轮"驳回 → 返工 → 通过"的人和原因。这是 V1.5.5 P0 修复,安全红线。

B 组 · 业务能力

Q5. 红色预警可以手动关闭吗?+
可以,但只有当该预警下所有 review_required 任务都 approved 之后才能关闭。否则接口直接返回 422 + 业务文案。这是 V1.5.x 的设计红线 — 不允许手工"清场"红色预警。
Q6. 区域风险红色时怎么拦截新增作业?+
JR-008 自动拦截。试图把 pending 高危票(fire / confined / lifting / blind)改 approved/ongoing 时,立即返回 blocked_count=1 + blocked_detail,ticket 状态不变,同时派发 limit_flow + escalate 任务给区域负责人。
Q7. 导入接口会被脏数据搞挂吗?+
不会。每个 type 都有 ALLOWED_FIELDS 白名单 + 行类型校验(null / 数组 / 数字行会被前置拒绝)+ 字段值校验(gas_event.value ≥ 0;ticket_status.actual_workers 必须非负整数;actual_end 不早于 actual_start)。命中 JR-008 拦截的行进 blocked_count,不进 success_count。
Q8. 规则配置保存如果失败,会污染数据吗?+
不会。V1.5.6 P0 修复后 saveRules 是原子的:先 validateFullRules(K_* / W_* / P_* / threshold / level_action_matrix / jump_rules 完整结构 + 阈值顺序 yellow < orange < red),再 dry-run recalcAll;任一步失败自动回滚 rules / calc_records / warnings / tasks 到提交前快照。
Q9. 权限模型是什么?+
5 角色 × 13 资源 × 4 动作 = 260 个权限点。getScope 决定数据可见范围(all / department / assigned / none);applyScope 在 GET 接口上过滤行;canOperateTask 在 accept/submit/review 上做归属校验。监护人只看到自己负责的 ticket / warning / task。

C 组 · 实施部署

Q10. 上线周期多久?+
2-4 周。Week 1 现场访谈 + 数据接入;Week 2 规则现场校准;Week 3 试运行 + 闭环演练;Week 4 验收(41 场景 + 客户特定 5-10 场景)。详细周计划见实施方法论文档。
Q11. 怎么对接现场气体监测 / 人员定位 / DCS?+
统一通过 POST /api/import 接口,type 支持 gas_event / person_event / hazard / ticket_status。每类 type 都有 schema 校验和事务性导入。具体硬件接入由实施团队对接,提供 V2.0 接入手册。
Q12. 行业规则包是什么?+
内置三套行业模板:petrochemical_large(大型炼化)/ chemical_park(化工园区)/ oil_terminal(油气码头)。每套含 base_risk / 权重系数 / 阈值 / jump_rules 的预设值。客户可通过 /api/rules/load-pack 一键加载,再按现场校准。
Q13. 是不是只能用内置的 Mock 数据演示?+
内置 5 区域 / 22 作业票 / 88 措施 / 5 隐患 / 4 承包商作为演示数据;通过 POST /api/import 接口可以导入客户真实数据。导入有完整 schema 校验和事务性。
Q14. 是 SaaS 还是私有部署?+
私有部署。Docker 镜像 80MB,零运行时依赖,1 台 4 核 16G 服务器跑得很轻松。完全不出客户网络。审计日志按 LOG_PATH 落本地盘。海顿不持有客户数据,也不做 SaaS。
Q15. 数据库是什么?要装 MySQL 吗?+
当前版本是内存参考实现(重启丢数据),适合演示和小规模试用。MySQL / 达梦持久化是 V2.0 路线图,SQL DDL 已就位(sql/ddl_mysql.sql,12 核心表 + 2 辅助表)。

D 组 · 运维 + 客户自验

Q16. 员工怎么自测、客户怎么验证?+
员工:双击 verify.bat / 跑 ./verify.sh → 看 "133 PASS / 0 FAIL",发回 verify_report.json。客户:./start.sh test → 看 "41/41 PASS"。Office 销售材料附 ROI 测算器和报价 / 许可模型。3 分钟搞定。
Q17. 历史规则版本可追溯吗?+
可。每次规则保存生成一个 rule_version_log 条目(version / changed_by / changed_time / change_reason),完整版本号自增。
Q18. 审计日志支持哪些操作?+
登录 / 登出、密码修改、用户创建、规则保存、规则重置、规则包加载、导入事件、admin 查询审计、任务接收 / 提交 / 复核、警告关闭 — 全留痕。默认内存 5000 条,配置 LOG_PATH 后落盘 audit.log。

E 组 · 安全合规

Q19. 生产部署的默认账号怎么处理?+
V1.5.11 起生产模式自动 admin-only:NODE_ENV=production + REQUIRE_AUTH=1 时只创建 U-admin(密码 = ADMIN_INITIAL_PASSWORD env),其他 10 个演示账号(li-ming/wang/zhao/an-huan...)不创建。任何 demo@123 / admin@123 登录返回 401。配合弱口令扫描:JWT_SECRET 命中 changeme/secret/password 等子串直接 exit 3。
Q20. 中国客户的服务器时区不是 UTC,时间会不会乱?+
不会。业务时间锁 Asia/Shanghai(V1.5.10 止损)。无论运行服务器 TZ 是 UTC / 上海 / 洛杉矶,业务时间统一是 Asia/Shanghai。三时区 verify 全过。
Q21. 如果客户要求等保过审怎么办?+
JWT + PBKDF2 + 审计 audit.log + 默认账号清零 + 弱密钥拒启动 + Body-413 + RBAC 数据范围全部按等保 2.0 安全要求设计。具体过审材料另行提供。
Q22. 万一海顿公司不在了,系统怎么办?+
完整源代码 + SQL DDL + 41 业务场景测试 + 133 机械验证 + OpenAPI 契约 + 实施方法论文档全部在交付包内,客户拥有完整的二次开发能力。零运行时依赖意味着不依赖任何一家 npm 库的存活。
销售演示

30 分钟客户演示流程

销售 / 售前可直接照搬 · 配合实际后端联通页(不是 PPT)

0-3 min

开场反差

"今天 9 成的安全风险产品都是看板。我们 5 分钟就给你看为什么我们不是看板,是动作引擎。" 打开原型首页 → KPI 卡片 + 5 区域热力图。

3-8 min

点击 A-101 罐区 → 看到红色预警 DH-202605-001

演示三层算法可解释 — 打开 contribution 明细:基础分 30 + Δgas 高报警 20 + Δmeasure 监护人缺失 5。客户问"为什么红",回答"系统已经替你说了"。

8-13 min

触发场景 S-29:注入气体高报警

演示场景库点击 S-29 → 系统自动生成 3 个任务(暂停 / 复检 / 升级)→ 监护人接收 → 上传 LEL=0% 证据 → 复核通过 → 闭环。全过程 < 3 分钟,timeline 完整审计。

13-18 min

触发场景 S-34:JR-008 区域红色拦截

在 A-101 已红色的情况下,试图把 DH-202605-021 高危动火票推到 approved。系统立即弹"被 JR-008 拦截" + ticket 状态不变 + 自动派发 limit_flow 任务。

18-22 min

触发场景 S-42:复核驳回返工闭环

复核员驳回任务 → 任务变 rework_required → 监护人重新填证据 → 再次复核通过 → 预警 closed。强调"驳回不是死路,必须返工"。

22-26 min

切到规则配置中心

展示 11 条跳级规则可一键开关 + 阈值可调 + 失败自动回滚。客户问"规则保存万一坏了怎么办",演示 saveRules 失败回滚(V1.5.6)。

26-29 min

API 联通测试 + 终端跑 ./verify.sh

展示 31 个端点 + 133 项机械验证 → 出 133 PASS / 0 FAIL。客户问"你们怎么保证质量" — 这就是答案。

29-30 min

收尾 + ROI

"今天只想让你记住一点:你看到的不是 demo,是 V1.5.11-FINAL.r3 封版交付。下一步可以走 POC 试用。" 文档发给客户,后续跟进。

下一步

3 种入口,任选 1 种开始

预约 30 分钟实演

线上跑通 5 个真实场景 + 看 contribution 可解释

立即预约 →

下载典型场景包

8 个典型场景脚本 + 三层算法说明 + ROI 测算样本

留邮箱下载 →

提交现场数据样本

5-50 条作业 / 气体 / 隐患数据(脱敏)→ 24h 内给您一份样例预警报告

上传文件 →

海顿顾问 24 小时内联系您 · 不打骚扰电话 · 信息仅用于本次沟通