con un clic
approval-engine
审批流程引擎,报价审批 + 异常处理
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
审批流程引擎,报价审批 + 异常处理
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
动态定价引擎,铜价/数量阶梯/客户等级/汇率计算
邮件智能回复系统,自动识别客户意图并生成个性化回复草稿
订单管理系统,状态跟踪 + 客户通知
生成专业收款通知,支持 HTML/PDF 格式,自动集成银行账户信息
Use when a sales workflow needs single-company customer background research, buyer/contact discovery, email verification, lead-fit scoring, source-backed outreach angles, or company dossier generation.
产品工程图纸结构化提取器 v5.0。pdftotext 优先 + Vision 兜底,支持软连字符清理/跨行关联/数据校验。专为 Your Company 线材产品图纸设计。
| name | approval-engine |
| description | 审批流程引擎,报价审批 + 异常处理 |
| metadata | {"openclaw":{"emoji":"✅","requires":{"anyBins":["node"]}}} |
审批流程引擎 + 异常处理系统。提供规则驱动的多级审批、实时异常检测、自动恢复策略(重试/降级/人工介入)和 Discord 通知集成。
/path/to/your/.openclaw/workspace/skills/approval-engine/
| 模块 | 用途 |
|---|---|
src/approval-engine.js | 核心审批引擎(创建、提交、超时、升级) |
src/rule-evaluator.js | 规则评估(触发条件、阈值、条件匹配) |
src/approval-store.js | 审批状态 CRUD(JSON 持久化) |
src/exception-detector.js | 异常检测(超时/错误/订单异常) |
src/alert-manager.js | 告警发送(Discord、限流、历史) |
src/exception-logger.js | 异常日志(记录、查询、解决标记) |
src/recovery-engine.js | 恢复引擎(策略选择与执行) |
src/retry-handler.js | 重试处理(指数退避、Jitter、统计) |
src/escalation-handler.js | 升级处理(创建、确认、解决升级单) |
src/discord-notifier.js | Discord 通知(消息/Embed/审批/告警) |
src/notification-router.js | 通知路由(规则匹配→渠道选择) |
src/notification-templates.js | 通知模板(审批/告警/升级/恢复) |
编辑 config/approval-rules.json 配置:
rules[] — 审批规则列表(触发条件、审批人、超时策略)thresholds — 数值阈值(报价金额上限等)auto_recovery — 自动恢复策略映射escalation_rules — 升级规则(升级时间、升级对象)notification_templates — Discord 消息模板所需环境变量:
DISCORD_BOT_TOKEN — Discord 机器人令牌DISCORD_APPROVALS_CHANNEL — 审批通知渠道 IDDISCORD_ALERTS_CHANNEL — 告警通知渠道 IDDISCORD_EXCEPTIONS_CHANNEL — 异常通知渠道 IDDISCORD_RECOVERY_CHANNEL — 恢复通知渠道 IDconst engine = require('/path/to/your/.openclaw/workspace/skills/approval-engine/src/approval-engine');
// 提交业务数据,引擎自动评估规则
const approvals = await engine.autoCreateApprovals({
quotation: { amount: 15000 },
sales: { owner: 'alice' }
});
// 返回:所有被触发规则创建的审批列表
const engine = require('./src/approval-engine');
// 创建审批
const approval = await engine.createApproval('quotation-approval', {
quotation: { amount: 15000, no: 'QT-2026-001' }
}, { submitter: 'alice' });
// 审批人决策
await engine.submitApproval(approval.id, 'wilson', 'approved', '金额合理,已审批');
// 查询状态
const status = await engine.getApprovalStatus(approval.id);
const detector = require('./src/exception-detector');
// 全量检测(返回新发现的异常列表)
const exceptions = await detector.detectAll();
// 定时周期检测(含告警推送 Discord)
await detector.runPeriodicCheck();
const recovery = require('./src/recovery-engine');
// 自动选择恢复策略并执行
const result = await recovery.recover({
type: 'api_error', // 异常类型
severity: 'medium', // 严重程度: low/medium/high/critical
data: { endpoint: '/api/orders', error: 'timeout' }
});
// result.strategy: 'retry' | 'degrade' | 'manual_intervention'
// result.success: true/false
const notifier = require('./src/discord-notifier');
// 发送审批请求(带按钮/Embed)
await notifier.sendApprovalRequest({
approvalId: 'APR-001',
rule: '报价超权限审批',
submitter: 'alice',
amount: 15000
});
// 发送告警
await notifier.sendAlert({ title: 'API 超时', message: '订单 API 无响应', severity: 'high' });
// 发送恢复通知
await notifier.sendRecoveryNotification({ type: 'retry', success: true, attempts: 2 });
const retry = require('./src/retry-handler');
// 带自动重试执行异步函数(指数退避 + Jitter)
const result = await retry.withRetry(
async () => await fetch('https://api.example.com/orders'),
{ maxAttempts: 3, baseDelayMs: 1000, maxDelayMs: 10000 }
);
const engine = require('./src/approval-engine');
// 检测超时审批并自动升级
const expired = await engine.checkTimeouts();
// expired[].action: 'escalate' | 'auto_approve' | 'auto_reject'
const engine = require('./src/approval-engine');
const detector = require('./src/exception-detector');
const recovery = require('./src/recovery-engine');
async function processQuotation(quotationData) {
// 1. 提交报价,自动触发审批规则
const approvals = await engine.autoCreateApprovals(quotationData);
if (approvals.length > 0) {
console.log(`已创建 ${approvals.length} 个审批请求,等待审批中...`);
// Discord 通知已在引擎内部自动发送
}
// 2. 运行异常检测
const exceptions = await detector.detectAll();
// 3. 对每个异常尝试自动恢复
for (const exc of exceptions) {
const result = await recovery.recover(exc);
if (!result.success) {
console.log(`异常 ${exc.type} 需要人工介入`);
}
}
}
# 每 15 分钟运行一次异常检测和超时处理
*/15 * * * * node -e "
const engine = require('/path/to/your/.openclaw/workspace/skills/approval-engine/src/approval-engine');
const detector = require('/path/to/your/.openclaw/workspace/skills/approval-engine/src/exception-detector');
Promise.all([engine.checkTimeouts(), detector.runPeriodicCheck()])
.then(() => process.exit(0))
.catch(e => { console.error(e); process.exit(1); });
" >> /tmp/approval-engine-cron.log 2>&1
# 运行冒烟测试
bash /path/to/your/.openclaw/workspace/skills/approval-engine/test/smoke-test.sh
quotation-workflow — 报价单工作流(可集成审批触发)imap-smtp-email — 邮件通知渠道(审批通知邮件发送)discord (OpenClaw built-in) — Discord 消息发送底层1.0.0 — 2026-03-24 (task-006, Phase 3, iteration 7)